diff --git a/mlir/include/mlir-c/AffineExpr.h b/mlir/include/mlir-c/AffineExpr.h --- a/mlir/include/mlir-c/AffineExpr.h +++ b/mlir/include/mlir-c/AffineExpr.h @@ -17,17 +17,16 @@ #endif //===----------------------------------------------------------------------===// -/** Opaque type declarations. - * - * Types are exposed to C bindings as structs containing opaque pointers. They - * are not supposed to be inspected from C. This allows the underlying - * representation to change without affecting the API users. The use of structs - * instead of typedefs enables some type safety as structs are not implicitly - * convertible to each other. - * - * Instances of these types may or may not own the underlying object. The - * ownership semantics is defined by how an instance of the type was obtained. - */ +// Opaque type declarations. +// +// Types are exposed to C bindings as structs containing opaque pointers. They +// are not supposed to be inspected from C. This allows the underlying +// representation to change without affecting the API users. The use of structs +// instead of typedefs enables some type safety as structs are not implicitly +// convertible to each other. +// +// Instances of these types may or may not own the underlying object. The +// ownership semantics is defined by how an instance of the type was obtained. //===----------------------------------------------------------------------===// #define DEFINE_C_API_STRUCT(name, storage) \ @@ -54,9 +53,9 @@ return affineExpr.ptr == NULL; } -/** Prints an affine expression by sending chunks of the string representation - * and forwarding `userData to `callback`. Note that the callback may be called - * several times with consecutive chunks of the string. */ +/// Prints an affine expression by sending chunks of the string representation +/// and forwarding `userData to `callback`. Note that the callback may be called +/// several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirAffineExprPrint(MlirAffineExpr affineExpr, MlirStringCallback callback, void *userData); @@ -64,17 +63,17 @@ /// Prints the affine expression to the standard error stream. MLIR_CAPI_EXPORTED void mlirAffineExprDump(MlirAffineExpr affineExpr); -/** Checks whether the given affine expression is made out of only symbols and - * constants. */ +/// Checks whether the given affine expression is made out of only symbols and +/// constants. MLIR_CAPI_EXPORTED bool mlirAffineExprIsSymbolicOrConstant(MlirAffineExpr affineExpr); -/** Checks whether the given affine expression is a pure affine expression, i.e. - * mul, floordiv, ceildic, and mod is only allowed w.r.t constants. */ +/// Checks whether the given affine expression is a pure affine expression, i.e. +/// mul, floordiv, ceildic, and mod is only allowed w.r.t constants. MLIR_CAPI_EXPORTED bool mlirAffineExprIsPureAffine(MlirAffineExpr affineExpr); -/** Returns the greatest known integral divisor of this affine expression. The - * result is always positive. */ +/// Returns the greatest known integral divisor of this affine expression. The +/// result is always positive. MLIR_CAPI_EXPORTED int64_t mlirAffineExprGetLargestKnownDivisor(MlirAffineExpr affineExpr); @@ -82,8 +81,8 @@ MLIR_CAPI_EXPORTED bool mlirAffineExprIsMultipleOf(MlirAffineExpr affineExpr, int64_t factor); -/** Checks whether the given affine expression involves AffineDimExpr - * 'position'. */ +/// Checks whether the given affine expression involves AffineDimExpr +/// 'position'. MLIR_CAPI_EXPORTED bool mlirAffineExprIsFunctionOfDim(MlirAffineExpr affineExpr, intptr_t position); @@ -194,13 +193,13 @@ /// Checks whether the given affine expression is binary. MLIR_CAPI_EXPORTED bool mlirAffineExprIsABinary(MlirAffineExpr affineExpr); -/** Returns the left hand side affine expression of the given affine binary - * operation expression. */ +/// Returns the left hand side affine expression of the given affine binary +/// operation expression. MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineBinaryOpExprGetLHS(MlirAffineExpr affineExpr); -/** Returns the right hand side affine expression of the given affine binary - * operation expression. */ +/// Returns the right hand side affine expression of the given affine binary +/// operation expression. MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineBinaryOpExprGetRHS(MlirAffineExpr affineExpr); diff --git a/mlir/include/mlir-c/AffineMap.h b/mlir/include/mlir-c/AffineMap.h --- a/mlir/include/mlir-c/AffineMap.h +++ b/mlir/include/mlir-c/AffineMap.h @@ -18,17 +18,16 @@ #endif //===----------------------------------------------------------------------===// -/** Opaque type declarations. - * - * Types are exposed to C bindings as structs containing opaque pointers. They - * are not supposed to be inspected from C. This allows the underlying - * representation to change without affecting the API users. The use of structs - * instead of typedefs enables some type safety as structs are not implicitly - * convertible to each other. - * - * Instances of these types may or may not own the underlying object. The - * ownership semantics is defined by how an instance of the type was obtained. - */ +// Opaque type declarations. +// +// Types are exposed to C bindings as structs containing opaque pointers. They +// are not supposed to be inspected from C. This allows the underlying +// representation to change without affecting the API users. The use of structs +// instead of typedefs enables some type safety as structs are not implicitly +// convertible to each other. +// +// Instances of these types may or may not own the underlying object. The +// ownership semantics is defined by how an instance of the type was obtained. //===----------------------------------------------------------------------===// #define DEFINE_C_API_STRUCT(name, storage) \ @@ -52,9 +51,9 @@ /// Checks if two affine maps are equal. MLIR_CAPI_EXPORTED bool mlirAffineMapEqual(MlirAffineMap a1, MlirAffineMap a2); -/** Prints an affine map by sending chunks of the string representation and - * forwarding `userData to `callback`. Note that the callback may be called - * several times with consecutive chunks of the string. */ +/// Prints an affine map by sending chunks of the string representation and +/// forwarding `userData to `callback`. Note that the callback may be called +/// several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirAffineMapPrint(MlirAffineMap affineMap, MlirStringCallback callback, void *userData); @@ -62,52 +61,52 @@ /// Prints the affine map to the standard error stream. MLIR_CAPI_EXPORTED void mlirAffineMapDump(MlirAffineMap affineMap); -/** Creates a zero result affine map with no dimensions or symbols in the - * context. The affine map is owned by the context. */ +/// Creates a zero result affine map with no dimensions or symbols in the +/// context. The affine map is owned by the context. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapEmptyGet(MlirContext ctx); -/** Creates a zero result affine map of the given dimensions and symbols in the - * context. The affine map is owned by the context. */ +/// Creates a zero result affine map of the given dimensions and symbols in the +/// context. The affine map is owned by the context. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapZeroResultGet( MlirContext ctx, intptr_t dimCount, intptr_t symbolCount); -/** Creates an affine map with results defined by the given list of affine - * expressions. The map resulting map also has the requested number of input - * dimensions and symbols, regardless of them being used in the results. - */ +/// Creates an affine map with results defined by the given list of affine +/// expressions. The map resulting map also has the requested number of input +/// dimensions and symbols, regardless of them being used in the results. + MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapGet(MlirContext ctx, intptr_t dimCount, intptr_t symbolCount, intptr_t nAffineExprs, MlirAffineExpr *affineExprs); -/** Creates a single constant result affine map in the context. The affine map - * is owned by the context. */ +/// Creates a single constant result affine map in the context. The affine map +/// is owned by the context. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapConstantGet(MlirContext ctx, int64_t val); -/** Creates an affine map with 'numDims' identity in the context. The affine map - * is owned by the context. */ +/// Creates an affine map with 'numDims' identity in the context. The affine map +/// is owned by the context. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapMultiDimIdentityGet(MlirContext ctx, intptr_t numDims); -/** Creates an identity affine map on the most minor dimensions in the context. - * The affine map is owned by the context. The function asserts that the number - * of dimensions is greater or equal to the number of results. */ +/// Creates an identity affine map on the most minor dimensions in the context. +/// The affine map is owned by the context. The function asserts that the number +/// of dimensions is greater or equal to the number of results. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapMinorIdentityGet(MlirContext ctx, intptr_t dims, intptr_t results); -/** Creates an affine map with a permutation expression and its size in the - * context. The permutation expression is a non-empty vector of integers. - * The elements of the permutation vector must be continuous from 0 and cannot - * be repeated (i.e. `[1,2,0]` is a valid permutation. `[2,0]` or `[1,1,2]` is - * an invalid invalid permutation.) The affine map is owned by the context. */ +/// Creates an affine map with a permutation expression and its size in the +/// context. The permutation expression is a non-empty vector of integers. +/// The elements of the permutation vector must be continuous from 0 and cannot +/// be repeated (i.e. `[1,2,0]` is a valid permutation. `[2,0]` or `[1,1,2]` is +/// an invalid invalid permutation.) The affine map is owned by the context. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapPermutationGet( MlirContext ctx, intptr_t size, unsigned *permutation); -/** Checks whether the given affine map is an identity affine map. The function - * asserts that the number of dimensions is greater or equal to the number of - * results. */ +/// Checks whether the given affine map is an identity affine map. The function +/// asserts that the number of dimensions is greater or equal to the number of +/// results. MLIR_CAPI_EXPORTED bool mlirAffineMapIsIdentity(MlirAffineMap affineMap); /// Checks whether the given affine map is a minor identity affine map. @@ -116,12 +115,12 @@ /// Checks whether the given affine map is an empty affine map. MLIR_CAPI_EXPORTED bool mlirAffineMapIsEmpty(MlirAffineMap affineMap); -/** Checks whether the given affine map is a single result constant affine - * map. */ +/// Checks whether the given affine map is a single result constant affine +/// map. MLIR_CAPI_EXPORTED bool mlirAffineMapIsSingleConstant(MlirAffineMap affineMap); -/** Returns the constant result of the given affine map. The function asserts - * that the map has a single constant result. */ +/// Returns the constant result of the given affine map. The function asserts +/// that the map has a single constant result. MLIR_CAPI_EXPORTED int64_t mlirAffineMapGetSingleConstantResult(MlirAffineMap affineMap); @@ -138,17 +137,17 @@ MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineMapGetResult(MlirAffineMap affineMap, intptr_t pos); -/** Returns the number of inputs (dimensions + symbols) of the given affine - * map. */ +/// Returns the number of inputs (dimensions + symbols) of the given affine +/// map. MLIR_CAPI_EXPORTED intptr_t mlirAffineMapGetNumInputs(MlirAffineMap affineMap); -/** Checks whether the given affine map represents a subset of a symbol-less - * permutation map. */ +/// Checks whether the given affine map represents a subset of a symbol-less +/// permutation map. MLIR_CAPI_EXPORTED bool mlirAffineMapIsProjectedPermutation(MlirAffineMap affineMap); -/** Checks whether the given affine map represents a symbol-less permutation - * map. */ +/// Checks whether the given affine map represents a symbol-less permutation +/// map. MLIR_CAPI_EXPORTED bool mlirAffineMapIsPermutation(MlirAffineMap affineMap); /// Returns the affine map consisting of the `resultPos` subset. @@ -156,17 +155,17 @@ intptr_t size, intptr_t *resultPos); -/** Returns the affine map consisting of the most major `numResults` results. - * Returns the null AffineMap if the `numResults` is equal to zero. - * Returns the `affineMap` if `numResults` is greater or equals to number of - * results of the given affine map. */ +/// Returns the affine map consisting of the most major `numResults` results. +/// Returns the null AffineMap if the `numResults` is equal to zero. +/// Returns the `affineMap` if `numResults` is greater or equals to number of +/// results of the given affine map. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapGetMajorSubMap(MlirAffineMap affineMap, intptr_t numResults); -/** Returns the affine map consisting of the most minor `numResults` results. - * Returns the null AffineMap if the `numResults` is equal to zero. - * Returns the `affineMap` if `numResults` is greater or equals to number of - * results of the given affine map. */ +/// Returns the affine map consisting of the most minor `numResults` results. +/// Returns the null AffineMap if the `numResults` is equal to zero. +/// Returns the `affineMap` if `numResults` is greater or equals to number of +/// results of the given affine map. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapGetMinorSubMap(MlirAffineMap affineMap, intptr_t numResults); diff --git a/mlir/include/mlir-c/BuiltinAttributes.h b/mlir/include/mlir-c/BuiltinAttributes.h --- a/mlir/include/mlir-c/BuiltinAttributes.h +++ b/mlir/include/mlir-c/BuiltinAttributes.h @@ -29,8 +29,8 @@ /// 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. */ +/// 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. @@ -43,8 +43,8 @@ /// 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. */ +/// 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); @@ -62,8 +62,8 @@ /// 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. */ +/// 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); @@ -75,8 +75,8 @@ 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. */ +/// 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); @@ -84,44 +84,44 @@ // Floating point attribute. //===----------------------------------------------------------------------===// -/* TODO: add support for APFloat and APInt to LLVM IR C API, then expose the - * relevant functions here. */ +// 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. */ +/// 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. */ +/// 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(MlirType type, double value, MlirLocation loc); -/** Returns the value stored in the given floating point attribute, interpreting - * the value as double. */ +/// 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. */ +// 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. */ +/// 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. */ +/// 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); //===----------------------------------------------------------------------===// @@ -151,20 +151,20 @@ /// 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). */ +/// 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. */ +/// 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. */ +/// 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); //===----------------------------------------------------------------------===// @@ -174,18 +174,18 @@ /// 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. - */ +/// 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. */ +/// 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. */ +/// 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); //===----------------------------------------------------------------------===// @@ -195,25 +195,25 @@ /// 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. */ +/// 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. */ +/// 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. */ +/// 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. */ +/// Returns the number of references nested in the given symbol reference +/// attribute. MLIR_CAPI_EXPORTED intptr_t mlirSymbolRefAttrGetNumNestedReferences(MlirAttribute attr); @@ -228,13 +228,13 @@ /// 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. */ +/// 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. */ +/// 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); @@ -245,8 +245,8 @@ /// 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. */ +/// 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. @@ -274,14 +274,14 @@ intptr_t rank, uint64_t *idxs); -/** Checks whether the given rank-dimensional index is valid in the given - * elements attribute. */ +/// 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. */ +/// 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); //===----------------------------------------------------------------------===// @@ -289,21 +289,21 @@ //===----------------------------------------------------------------------===// // 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. */ +// 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. */ +/// 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). */ +/// 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 @@ -321,9 +321,9 @@ 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. */ +/// 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( @@ -339,23 +339,23 @@ 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. */ +/// 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. */ +/// 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). */ +/// 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. */ +/// 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 @@ -375,8 +375,8 @@ 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. */ +/// 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 @@ -394,7 +394,7 @@ MLIR_CAPI_EXPORTED MlirStringRef mlirDenseElementsAttrGetStringValue(MlirAttribute attr, intptr_t pos); -/** Returns the raw data of the given dense elements attribute. */ +/// Returns the raw data of the given dense elements attribute. MLIR_CAPI_EXPORTED const void * mlirDenseElementsAttrGetRawData(MlirAttribute attr); @@ -414,21 +414,21 @@ /// 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. */ +/// 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. */ +/// 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. */ +/// Returns the dense elements attribute containing the non-null elements in the +/// given sparse elements attribute. MLIR_CAPI_EXPORTED MlirAttribute mlirSparseElementsAttrGetValues(MlirAttribute attr); diff --git a/mlir/include/mlir-c/BuiltinTypes.h b/mlir/include/mlir-c/BuiltinTypes.h --- a/mlir/include/mlir-c/BuiltinTypes.h +++ b/mlir/include/mlir-c/BuiltinTypes.h @@ -25,18 +25,18 @@ /// Checks whether the given type is an integer type. MLIR_CAPI_EXPORTED bool mlirTypeIsAInteger(MlirType type); -/** Creates a signless integer type of the given bitwidth in the context. The - * type is owned by the context. */ +/// Creates a signless integer type of the given bitwidth in the context. The +/// type is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirIntegerTypeGet(MlirContext ctx, unsigned bitwidth); -/** Creates a signed integer type of the given bitwidth in the context. The type - * is owned by the context. */ +/// Creates a signed integer type of the given bitwidth in the context. The type +/// is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirIntegerTypeSignedGet(MlirContext ctx, unsigned bitwidth); -/** Creates an unsigned integer type of the given bitwidth in the context. The - * type is owned by the context. */ +/// Creates an unsigned integer type of the given bitwidth in the context. The +/// type is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirIntegerTypeUnsignedGet(MlirContext ctx, unsigned bitwidth); @@ -59,8 +59,8 @@ /// Checks whether the given type is an index type. MLIR_CAPI_EXPORTED bool mlirTypeIsAIndex(MlirType type); -/** Creates an index type in the given context. The type is owned by the - * context. */ +/// Creates an index type in the given context. The type is owned by the +/// context. MLIR_CAPI_EXPORTED MlirType mlirIndexTypeGet(MlirContext ctx); //===----------------------------------------------------------------------===// @@ -70,29 +70,29 @@ /// Checks whether the given type is a bf16 type. MLIR_CAPI_EXPORTED bool mlirTypeIsABF16(MlirType type); -/** Creates a bf16 type in the given context. The type is owned by the - * context. */ +/// Creates a bf16 type in the given context. The type is owned by the +/// context. MLIR_CAPI_EXPORTED MlirType mlirBF16TypeGet(MlirContext ctx); /// Checks whether the given type is an f16 type. MLIR_CAPI_EXPORTED bool mlirTypeIsAF16(MlirType type); -/** Creates an f16 type in the given context. The type is owned by the - * context. */ +/// Creates an f16 type in the given context. The type is owned by the +/// context. MLIR_CAPI_EXPORTED MlirType mlirF16TypeGet(MlirContext ctx); /// Checks whether the given type is an f32 type. MLIR_CAPI_EXPORTED bool mlirTypeIsAF32(MlirType type); -/** Creates an f32 type in the given context. The type is owned by the - * context. */ +/// Creates an f32 type in the given context. The type is owned by the +/// context. MLIR_CAPI_EXPORTED MlirType mlirF32TypeGet(MlirContext ctx); /// Checks whether the given type is an f64 type. MLIR_CAPI_EXPORTED bool mlirTypeIsAF64(MlirType type); -/** Creates a f64 type in the given context. The type is owned by the - * context. */ +/// Creates a f64 type in the given context. The type is owned by the +/// context. MLIR_CAPI_EXPORTED MlirType mlirF64TypeGet(MlirContext ctx); //===----------------------------------------------------------------------===// @@ -102,8 +102,8 @@ /// Checks whether the given type is a None type. MLIR_CAPI_EXPORTED bool mlirTypeIsANone(MlirType type); -/** Creates a None type in the given context. The type is owned by the - * context. */ +/// Creates a None type in the given context. The type is owned by the +/// context. MLIR_CAPI_EXPORTED MlirType mlirNoneTypeGet(MlirContext ctx); //===----------------------------------------------------------------------===// @@ -113,8 +113,8 @@ /// Checks whether the given type is a Complex type. MLIR_CAPI_EXPORTED bool mlirTypeIsAComplex(MlirType type); -/** Creates a complex type with the given element type in the same context as - * the element type. The type is owned by the context. */ +/// Creates a complex type with the given element type in the same context as +/// the element type. The type is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirComplexTypeGet(MlirType elementType); /// Returns the element type of the given complex type. @@ -146,12 +146,12 @@ MLIR_CAPI_EXPORTED int64_t mlirShapedTypeGetDimSize(MlirType type, intptr_t dim); -/** Checks whether the given value is used as a placeholder for dynamic sizes - * in shaped types. */ +/// Checks whether the given value is used as a placeholder for dynamic sizes +/// in shaped types. MLIR_CAPI_EXPORTED bool mlirShapedTypeIsDynamicSize(int64_t size); -/** Checks whether the given value is used as a placeholder for dynamic strides - * and offsets in shaped types. */ +/// Checks whether the given value is used as a placeholder for dynamic strides +/// and offsets in shaped types. MLIR_CAPI_EXPORTED bool mlirShapedTypeIsDynamicStrideOrOffset(int64_t val); //===----------------------------------------------------------------------===// @@ -161,15 +161,15 @@ /// Checks whether the given type is a Vector type. MLIR_CAPI_EXPORTED bool mlirTypeIsAVector(MlirType type); -/** Creates a vector type of the shape identified by its rank and dimensions, - * with the given element type in the same context as the element type. The type - * is owned by the context. */ +/// Creates a vector type of the shape identified by its rank and dimensions, +/// with the given element type in the same context as the element type. The +/// type is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirVectorTypeGet(intptr_t rank, const int64_t *shape, MlirType elementType); -/** Same as "mlirVectorTypeGet" but returns a nullptr wrapping MlirType on - * illegal arguments, emitting appropriate diagnostics. */ +/// Same as "mlirVectorTypeGet" but returns a nullptr wrapping MlirType on +/// illegal arguments, emitting appropriate diagnostics. MLIR_CAPI_EXPORTED MlirType mlirVectorTypeGetChecked(intptr_t rank, const int64_t *shape, MlirType elementType, @@ -188,25 +188,25 @@ /// Checks whether the given type is an unranked tensor type. MLIR_CAPI_EXPORTED bool mlirTypeIsAUnrankedTensor(MlirType type); -/** Creates a tensor type of a fixed rank with the given shape and element type - * in the same context as the element type. The type is owned by the context. */ +/// Creates a tensor type of a fixed rank with the given shape and element type +/// in the same context as the element type. The type is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirRankedTensorTypeGet(intptr_t rank, const int64_t *shape, MlirType elementType); -/** Same as "mlirRankedTensorTypeGet" but returns a nullptr wrapping MlirType on - * illegal arguments, emitting appropriate diagnostics. */ +/// Same as "mlirRankedTensorTypeGet" but returns a nullptr wrapping MlirType on +/// illegal arguments, emitting appropriate diagnostics. MLIR_CAPI_EXPORTED MlirType mlirRankedTensorTypeGetChecked(intptr_t rank, const int64_t *shape, MlirType elementType, MlirLocation loc); -/** Creates an unranked tensor type with the given element type in the same - * context as the element type. The type is owned by the context. */ +/// Creates an unranked tensor type with the given element type in the same +/// context as the element type. The type is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirUnrankedTensorTypeGet(MlirType elementType); -/** Same as "mlirUnrankedTensorTypeGet" but returns a nullptr wrapping MlirType - * on illegal arguments, emitting appropriate diagnostics. */ +/// Same as "mlirUnrankedTensorTypeGet" but returns a nullptr wrapping MlirType +/// on illegal arguments, emitting appropriate diagnostics. MLIR_CAPI_EXPORTED MlirType mlirUnrankedTensorTypeGetChecked(MlirType elementType, MlirLocation loc); @@ -220,41 +220,41 @@ /// Checks whether the given type is an UnrankedMemRef type. MLIR_CAPI_EXPORTED bool mlirTypeIsAUnrankedMemRef(MlirType type); -/** Creates a MemRef type with the given rank and shape, a potentially empty - * list of affine layout maps, the given memory space and element type, in the - * same context as element type. The type is owned by the context. */ +/// Creates a MemRef type with the given rank and shape, a potentially empty +/// list of affine layout maps, the given memory space and element type, in the +/// same context as element type. The type is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirMemRefTypeGet( MlirType elementType, intptr_t rank, const int64_t *shape, intptr_t numMaps, MlirAffineMap const *affineMaps, unsigned memorySpace); -/** Same as "mlirMemRefTypeGet" but returns a nullptr-wrapping MlirType o - * illegal arguments, emitting appropriate diagnostics. */ +/// Same as "mlirMemRefTypeGet" but returns a nullptr-wrapping MlirType o +/// illegal arguments, emitting appropriate diagnostics. MLIR_CAPI_EXPORTED MlirType mlirMemRefTypeGetChecked( MlirType elementType, intptr_t rank, const int64_t *shape, intptr_t numMaps, MlirAffineMap const *affineMaps, unsigned memorySpace, MlirLocation loc); -/** Creates a MemRef type with the given rank, shape, memory space and element - * type in the same context as the element type. The type has no affine maps, - * i.e. represents a default row-major contiguous memref. The type is owned by - * the context. */ +/// Creates a MemRef type with the given rank, shape, memory space and element +/// type in the same context as the element type. The type has no affine maps, +/// i.e. represents a default row-major contiguous memref. The type is owned by +/// the context. MLIR_CAPI_EXPORTED MlirType mlirMemRefTypeContiguousGet(MlirType elementType, intptr_t rank, const int64_t *shape, unsigned memorySpace); -/** Same as "mlirMemRefTypeContiguousGet" but returns a nullptr wrapping - * MlirType on illegal arguments, emitting appropriate diagnostics. */ +/// Same as "mlirMemRefTypeContiguousGet" but returns a nullptr wrapping +/// MlirType on illegal arguments, emitting appropriate diagnostics. MLIR_CAPI_EXPORTED MlirType mlirMemRefTypeContiguousGetChecked( MlirType elementType, intptr_t rank, const int64_t *shape, unsigned memorySpace, MlirLocation loc); -/** Creates an Unranked MemRef type with the given element type and in the given - * memory space. The type is owned by the context of element type. */ +/// Creates an Unranked MemRef type with the given element type and in the given +/// memory space. The type is owned by the context of element type. MLIR_CAPI_EXPORTED MlirType mlirUnrankedMemRefTypeGet(MlirType elementType, unsigned memorySpace); -/** Same as "mlirUnrankedMemRefTypeGet" but returns a nullptr wrapping - * MlirType on illegal arguments, emitting appropriate diagnostics. */ +/// Same as "mlirUnrankedMemRefTypeGet" but returns a nullptr wrapping +/// MlirType on illegal arguments, emitting appropriate diagnostics. MLIR_CAPI_EXPORTED MlirType mlirUnrankedMemRefTypeGetChecked( MlirType elementType, unsigned memorySpace, MlirLocation loc); @@ -278,8 +278,8 @@ /// Checks whether the given type is a tuple type. MLIR_CAPI_EXPORTED bool mlirTypeIsATuple(MlirType type); -/** Creates a tuple type that consists of the given list of elemental types. The - * type is owned by the context. */ +/// Creates a tuple type that consists of the given list of elemental types. The +/// type is owned by the context. MLIR_CAPI_EXPORTED MlirType mlirTupleTypeGet(MlirContext ctx, intptr_t numElements, MlirType const *elements); diff --git a/mlir/include/mlir-c/Diagnostics.h b/mlir/include/mlir-c/Diagnostics.h --- a/mlir/include/mlir-c/Diagnostics.h +++ b/mlir/include/mlir-c/Diagnostics.h @@ -21,8 +21,8 @@ extern "C" { #endif -/** An opaque reference to a diagnostic, always owned by the diagnostics engine - * (context). Must not be stored outside of the diagnostic handler. */ +/// An opaque reference to a diagnostic, always owned by the diagnostics engine +/// (context). Must not be stored outside of the diagnostic handler. struct MlirDiagnostic { void *ptr; }; @@ -40,12 +40,12 @@ /// Opaque identifier of a diagnostic handler, useful to detach a handler. typedef uint64_t MlirDiagnosticHandlerID; -/** Diagnostic handler type. Accepts a reference to a diagnostic, which is only - * guaranteed to be live during the call. The handler is passed the `userData` - * that was provided when the handler was attached to a context. If the handler - * processed the diagnostic completely, it is expected to return success. - * Otherwise, it is expected to return failure to indicate that other handlers - * should attempt to process the diagnostic. */ +/// Diagnostic handler type. Accepts a reference to a diagnostic, which is only +/// guaranteed to be live during the call. The handler is passed the `userData` +/// that was provided when the handler was attached to a context. If the handler +/// processed the diagnostic completely, it is expected to return success. +/// Otherwise, it is expected to return failure to indicate that other handlers +/// should attempt to process the diagnostic. typedef MlirLogicalResult (*MlirDiagnosticHandler)(MlirDiagnostic, void *userData); @@ -66,31 +66,31 @@ MLIR_CAPI_EXPORTED intptr_t mlirDiagnosticGetNumNotes(MlirDiagnostic diagnostic); -/** Returns `pos`-th note attached to the diagnostic. Expects `pos` to be a - * valid zero-based index into the list of notes. */ +/// Returns `pos`-th note attached to the diagnostic. Expects `pos` to be a +/// valid zero-based index into the list of notes. MLIR_CAPI_EXPORTED MlirDiagnostic mlirDiagnosticGetNote(MlirDiagnostic diagnostic, intptr_t pos); -/** Attaches the diagnostic handler to the context. Handlers are invoked in the - * reverse order of attachment until one of them processes the diagnostic - * completely. When a handler is invoked it is passed the `userData` that was - * provided when it was attached. If non-NULL, `deleteUserData` is called once - * the system no longer needs to call the handler (for instance after the - * handler is detached or the context is destroyed). Returns an identifier that - * can be used to detach the handler. - */ +/// Attaches the diagnostic handler to the context. Handlers are invoked in the +/// reverse order of attachment until one of them processes the diagnostic +/// completely. When a handler is invoked it is passed the `userData` that was +/// provided when it was attached. If non-NULL, `deleteUserData` is called once +/// the system no longer needs to call the handler (for instance after the +/// handler is detached or the context is destroyed). Returns an identifier that +/// can be used to detach the handler. + MLIR_CAPI_EXPORTED MlirDiagnosticHandlerID mlirContextAttachDiagnosticHandler( MlirContext context, MlirDiagnosticHandler handler, void *userData, void (*deleteUserData)(void *)); -/** Detaches an attached diagnostic handler from the context given its - * identifier. */ +/// Detaches an attached diagnostic handler from the context given its +/// identifier. MLIR_CAPI_EXPORTED void mlirContextDetachDiagnosticHandler(MlirContext context, MlirDiagnosticHandlerID id); -/** Emits an error at the given location through the diagnostics engine. Used - * for testing purposes. */ +/// Emits an error at the given location through the diagnostics engine. Used +/// for testing purposes. MLIR_CAPI_EXPORTED void mlirEmitError(MlirLocation location, const char *message); diff --git a/mlir/include/mlir-c/IR.h b/mlir/include/mlir-c/IR.h --- a/mlir/include/mlir-c/IR.h +++ b/mlir/include/mlir-c/IR.h @@ -28,18 +28,18 @@ #endif //===----------------------------------------------------------------------===// -/** Opaque type declarations. - * - * Types are exposed to C bindings as structs containing opaque pointers. They - * are not supposed to be inspected from C. This allows the underlying - * representation to change without affecting the API users. The use of structs - * instead of typedefs enables some type safety as structs are not implicitly - * convertible to each other. - * - * Instances of these types may or may not own the underlying object (most often - * only point to an IR fragment without owning it). The ownership semantics is - * defined by how an instance of the type was obtained. - */ +/// Opaque type declarations. +/// +/// Types are exposed to C bindings as structs containing opaque pointers. They +/// are not supposed to be inspected from C. This allows the underlying +/// representation to change without affecting the API users. The use of structs +/// instead of typedefs enables some type safety as structs are not implicitly +/// convertible to each other. +/// +/// Instances of these types may or may not own the underlying object (most +/// often only point to an IR fragment without owning it). The ownership +/// semantics is defined by how an instance of the type was obtained. + //===----------------------------------------------------------------------===// #define DEFINE_C_API_STRUCT(name, storage) \ @@ -64,11 +64,11 @@ #undef DEFINE_C_API_STRUCT -/** Named MLIR attribute. - * - * A named attribute is essentially a (name, attribute) pair where the name is - * a string. - */ +/// Named MLIR attribute. +/// +/// A named attribute is essentially a (name, attribute) pair where the name is +/// a string. + struct MlirNamedAttribute { MlirIdentifier name; MlirAttribute attribute; @@ -101,21 +101,21 @@ MLIR_CAPI_EXPORTED bool mlirContextGetAllowUnregisteredDialects(MlirContext context); -/** Returns the number of dialects registered with the given context. A - * registered dialect will be loaded if needed by the parser. */ +/// Returns the number of dialects registered with the given context. A +/// registered dialect will be loaded if needed by the parser. MLIR_CAPI_EXPORTED intptr_t mlirContextGetNumRegisteredDialects(MlirContext context); -/** Returns the number of dialects loaded by the context. - */ +/// Returns the number of dialects loaded by the context. + MLIR_CAPI_EXPORTED intptr_t mlirContextGetNumLoadedDialects(MlirContext context); -/** Gets the dialect instance owned by the given context using the dialect - * namespace to identify it, loads (i.e., constructs the instance of) the - * dialect if necessary. If the dialect is not registered with the context, - * returns null. Use mlirContextLoadDialect to load an unregistered - * dialect. */ +/// Gets the dialect instance owned by the given context using the dialect +/// namespace to identify it, loads (i.e., constructs the instance of) the +/// dialect if necessary. If the dialect is not registered with the context, +/// returns null. Use mlirContextLoadDialect to load an unregistered +/// dialect. MLIR_CAPI_EXPORTED MlirDialect mlirContextGetOrLoadDialect(MlirContext context, MlirStringRef name); @@ -131,8 +131,8 @@ return !dialect.ptr; } -/** Checks if two dialects that belong to the same context are equal. Dialects - * from different contexts will not compare equal. */ +/// Checks if two dialects that belong to the same context are equal. Dialects +/// from different contexts will not compare equal. MLIR_CAPI_EXPORTED bool mlirDialectEqual(MlirDialect dialect1, MlirDialect dialect2); @@ -165,9 +165,9 @@ /// Checks if two locations are equal. MLIR_CAPI_EXPORTED bool mlirLocationEqual(MlirLocation l1, MlirLocation l2); -/** Prints a location by sending chunks of the string representation and - * forwarding `userData to `callback`. Note that the callback may be called - * several times with consecutive chunks of the string. */ +/// Prints a location by sending chunks of the string representation and +/// forwarding `userData to `callback`. Note that the callback may be called +/// several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirLocationPrint(MlirLocation location, MlirStringCallback callback, void *userData); @@ -202,16 +202,16 @@ // Operation state. //===----------------------------------------------------------------------===// -/** An auxiliary class for constructing operations. - * - * This class contains all the information necessary to construct the operation. - * It owns the MlirRegions it has pointers to and does not own anything else. - * By default, the state can be constructed from a name and location, the latter - * being also used to access the context, and has no other components. These - * components can be added progressively until the operation is constructed. - * Users are not expected to rely on the internals of this class and should use - * mlirOperationState* functions instead. - */ +/// An auxiliary class for constructing operations. +/// +/// This class contains all the information necessary to construct the +/// operation. It owns the MlirRegions it has pointers to and does not own +/// anything else. By default, the state can be constructed from a name and +/// location, the latter being also used to access the context, and has no other +/// components. These components can be added progressively until the operation +/// is constructed. Users are not expected to rely on the internals of this +/// class and should use mlirOperationState* functions instead. + struct MlirOperationState { MlirStringRef name; MlirLocation location; @@ -265,24 +265,24 @@ // functions to maximize the possibility of compatibility over time. //===----------------------------------------------------------------------===// -/** Creates new printing flags with defaults, intended for customization. - * Must be freed with a call to mlirOpPrintingFlagsDestroy(). */ +/// Creates new printing flags with defaults, intended for customization. +/// Must be freed with a call to mlirOpPrintingFlagsDestroy(). MLIR_CAPI_EXPORTED MlirOpPrintingFlags mlirOpPrintingFlagsCreate(); /// Destroys printing flags created with mlirOpPrintingFlagsCreate. MLIR_CAPI_EXPORTED void mlirOpPrintingFlagsDestroy(MlirOpPrintingFlags flags); -/** Enables the elision of large elements attributes by printing a lexically - * valid but otherwise meaningless form instead of the element data. The - * `largeElementLimit` is used to configure what is considered to be a "large" - * ElementsAttr by providing an upper limit to the number of elements. */ +/// Enables the elision of large elements attributes by printing a lexically +/// valid but otherwise meaningless form instead of the element data. The +/// `largeElementLimit` is used to configure what is considered to be a "large" +/// ElementsAttr by providing an upper limit to the number of elements. MLIR_CAPI_EXPORTED void mlirOpPrintingFlagsElideLargeElementsAttrs(MlirOpPrintingFlags flags, intptr_t largeElementLimit); -/** Enable printing of debug information. If 'prettyForm' is set to true, - * debug information is printed in a more readable 'pretty' form. Note: The - * IR generated with 'prettyForm' is not parsable. */ +/// Enable printing of debug information. If 'prettyForm' is set to true, +/// debug information is printed in a more readable 'pretty' form. Note: The +/// IR generated with 'prettyForm' is not parsable. MLIR_CAPI_EXPORTED void mlirOpPrintingFlagsEnableDebugInfo(MlirOpPrintingFlags flags, bool prettyForm); @@ -290,10 +290,10 @@ MLIR_CAPI_EXPORTED void mlirOpPrintingFlagsPrintGenericOpForm(MlirOpPrintingFlags flags); -/** Use local scope when printing the operation. This allows for using the - * printer in a more localized and thread-safe setting, but may not - * necessarily be identical to what the IR will look like when dumping - * the full module. */ +/// Use local scope when printing the operation. This allows for using the +/// printer in a more localized and thread-safe setting, but may not +/// necessarily be identical to what the IR will look like when dumping +/// the full module. MLIR_CAPI_EXPORTED void mlirOpPrintingFlagsUseLocalScope(MlirOpPrintingFlags flags); @@ -317,20 +317,20 @@ /// Checks whether the underlying operation is null. static inline bool mlirOperationIsNull(MlirOperation op) { return !op.ptr; } -/** Checks whether two operation handles point to the same operation. This does - * not perform deep comparison. */ +/// Checks whether two operation handles point to the same operation. This does +/// not perform deep comparison. MLIR_CAPI_EXPORTED bool mlirOperationEqual(MlirOperation op, MlirOperation other); /// Gets the name of the operation as an identifier. MLIR_CAPI_EXPORTED MlirIdentifier mlirOperationGetName(MlirOperation op); -/** Gets the block that owns this operation, returning null if the operation is - * not owned. */ +/// Gets the block that owns this operation, returning null if the operation is +/// not owned. MLIR_CAPI_EXPORTED MlirBlock mlirOperationGetBlock(MlirOperation op); -/** Gets the operation that owns this operation, returning null if the operation - * is not owned. */ +/// Gets the operation that owns this operation, returning null if the operation +/// is not owned. MLIR_CAPI_EXPORTED MlirOperation mlirOperationGetParentOperation(MlirOperation op); @@ -341,8 +341,8 @@ MLIR_CAPI_EXPORTED MlirRegion mlirOperationGetRegion(MlirOperation op, intptr_t pos); -/** Returns an operation immediately following the given operation it its - * enclosing block. */ +/// Returns an operation immediately following the given operation it its +/// enclosing block. MLIR_CAPI_EXPORTED MlirOperation mlirOperationGetNextInBlock(MlirOperation op); /// Returns the number of operands of the operation. @@ -377,26 +377,26 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirOperationGetAttributeByName(MlirOperation op, MlirStringRef name); -/** Sets an attribute by name, replacing the existing if it exists or - * adding a new one otherwise. */ +/// Sets an attribute by name, replacing the existing if it exists or +/// adding a new one otherwise. MLIR_CAPI_EXPORTED void mlirOperationSetAttributeByName(MlirOperation op, MlirStringRef name, MlirAttribute attr); -/** Removes an attribute by name. Returns false if the attribute was not found - * and true if removed. */ +/// Removes an attribute by name. Returns false if the attribute was not found +/// and true if removed. MLIR_CAPI_EXPORTED bool mlirOperationRemoveAttributeByName(MlirOperation op, MlirStringRef name); -/** Prints an operation by sending chunks of the string representation and - * forwarding `userData to `callback`. Note that the callback may be called - * several times with consecutive chunks of the string. */ +/// Prints an operation by sending chunks of the string representation and +/// forwarding `userData to `callback`. Note that the callback may be called +/// several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirOperationPrint(MlirOperation op, MlirStringCallback callback, void *userData); -/** Same as mlirOperationPrint but accepts flags controlling the printing - * behavior. */ +/// Same as mlirOperationPrint but accepts flags controlling the printing +/// behavior. MLIR_CAPI_EXPORTED void mlirOperationPrintWithFlags(MlirOperation op, MlirOpPrintingFlags flags, MlirStringCallback callback, @@ -428,22 +428,22 @@ MLIR_CAPI_EXPORTED void mlirRegionAppendOwnedBlock(MlirRegion region, MlirBlock block); -/** Takes a block owned by the caller and inserts it at `pos` to the given - * region. This is an expensive operation that linearly scans the region, prefer - * insertAfter/Before instead. */ +/// Takes a block owned by the caller and inserts it at `pos` to the given +/// region. This is an expensive operation that linearly scans the region, +/// prefer insertAfter/Before instead. MLIR_CAPI_EXPORTED void mlirRegionInsertOwnedBlock(MlirRegion region, intptr_t pos, MlirBlock block); -/** Takes a block owned by the caller and inserts it after the (non-owned) - * reference block in the given region. The reference block must belong to the - * region. If the reference block is null, prepends the block to the region. */ +/// Takes a block owned by the caller and inserts it after the (non-owned) +/// reference block in the given region. The reference block must belong to the +/// region. If the reference block is null, prepends the block to the region. MLIR_CAPI_EXPORTED void mlirRegionInsertOwnedBlockAfter(MlirRegion region, MlirBlock reference, MlirBlock block); -/** Takes a block owned by the caller and inserts it before the (non-owned) - * reference block in the given region. The reference block must belong to the - * region. If the reference block is null, appends the block to the region. */ +/// Takes a block owned by the caller and inserts it before the (non-owned) +/// reference block in the given region. The reference block must belong to the +/// region. If the reference block is null, appends the block to the region. MLIR_CAPI_EXPORTED void mlirRegionInsertOwnedBlockBefore(MlirRegion region, MlirBlock reference, MlirBlock block); @@ -452,8 +452,8 @@ // Block API. //===----------------------------------------------------------------------===// -/** Creates a new empty block with the given argument types and transfers - * ownership to the caller. */ +/// Creates a new empty block with the given argument types and transfers +/// ownership to the caller. MLIR_CAPI_EXPORTED MlirBlock mlirBlockCreate(intptr_t nArgs, MlirType const *args); @@ -463,12 +463,12 @@ /// Checks whether a block is null. static inline bool mlirBlockIsNull(MlirBlock block) { return !block.ptr; } -/** Checks whether two blocks handles point to the same block. This does not - * perform deep comparison. */ +/// Checks whether two blocks handles point to the same block. This does not +/// perform deep comparison. MLIR_CAPI_EXPORTED bool mlirBlockEqual(MlirBlock block, MlirBlock other); -/** Returns the block immediately following the given block in its parent - * region. */ +/// Returns the block immediately following the given block in its parent +/// region. MLIR_CAPI_EXPORTED MlirBlock mlirBlockGetNextInRegion(MlirBlock block); /// Returns the first operation in the block. @@ -481,23 +481,23 @@ MLIR_CAPI_EXPORTED void mlirBlockAppendOwnedOperation(MlirBlock block, MlirOperation operation); -/** Takes an operation owned by the caller and inserts it as `pos` to the block. - This is an expensive operation that scans the block linearly, prefer - insertBefore/After instead. */ +/// Takes an operation owned by the caller and inserts it as `pos` to the block. +/// This is an expensive operation that scans the block linearly, prefer +/// insertBefore/After instead. MLIR_CAPI_EXPORTED void mlirBlockInsertOwnedOperation(MlirBlock block, intptr_t pos, MlirOperation operation); -/** Takes an operation owned by the caller and inserts it after the (non-owned) - * reference operation in the given block. If the reference is null, prepends - * the operation. Otherwise, the reference must belong to the block. */ +/// Takes an operation owned by the caller and inserts it after the (non-owned) +/// reference operation in the given block. If the reference is null, prepends +/// the operation. Otherwise, the reference must belong to the block. MLIR_CAPI_EXPORTED void mlirBlockInsertOwnedOperationAfter(MlirBlock block, MlirOperation reference, MlirOperation operation); -/** Takes an operation owned by the caller and inserts it before the (non-owned) - * reference operation in the given block. If the reference is null, appends the - * operation. Otherwise, the reference must belong to the block. */ +/// Takes an operation owned by the caller and inserts it before the (non-owned) +/// reference operation in the given block. If the reference is null, appends +/// the operation. Otherwise, the reference must belong to the block. MLIR_CAPI_EXPORTED void mlirBlockInsertOwnedOperationBefore(MlirBlock block, MlirOperation reference, MlirOperation operation); @@ -509,9 +509,9 @@ MLIR_CAPI_EXPORTED MlirValue mlirBlockGetArgument(MlirBlock block, intptr_t pos); -/** Prints a block by sending chunks of the string representation and - * forwarding `userData to `callback`. Note that the callback may be called - * several times with consecutive chunks of the string. */ +/// Prints a block by sending chunks of the string representation and +/// forwarding `userData to `callback`. Note that the callback may be called +/// several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirBlockPrint(MlirBlock block, MlirStringCallback callback, void *userData); @@ -531,8 +531,8 @@ /// Returns 1 if the value is an operation result, 0 otherwise. MLIR_CAPI_EXPORTED bool mlirValueIsAOpResult(MlirValue value); -/** Returns the block in which this value is defined as an argument. Asserts if - * the value is not a block argument. */ +/// Returns the block in which this value is defined as an argument. Asserts if +/// the value is not a block argument. MLIR_CAPI_EXPORTED MlirBlock mlirBlockArgumentGetOwner(MlirValue value); /// Returns the position of the value in the argument list of its block. @@ -542,12 +542,12 @@ MLIR_CAPI_EXPORTED void mlirBlockArgumentSetType(MlirValue value, MlirType type); -/** Returns an operation that produced this value as its result. Asserts if the - * value is not an op result. */ +/// Returns an operation that produced this value as its result. Asserts if the +/// value is not an op result. MLIR_CAPI_EXPORTED MlirOperation mlirOpResultGetOwner(MlirValue value); -/** Returns the position of the value in the list of results of the operation - * that produced it. */ +/// Returns the position of the value in the list of results of the operation +/// that produced it. MLIR_CAPI_EXPORTED intptr_t mlirOpResultGetResultNumber(MlirValue value); /// Returns the type of the value. @@ -556,9 +556,9 @@ /// Prints the value to the standard error stream. MLIR_CAPI_EXPORTED void mlirValueDump(MlirValue value); -/** Prints a value by sending chunks of the string representation and - * forwarding `userData to `callback`. Note that the callback may be called - * several times with consecutive chunks of the string. */ +/// Prints a value by sending chunks of the string representation and +/// forwarding `userData to `callback`. Note that the callback may be called +/// several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirValuePrint(MlirValue value, MlirStringCallback callback, void *userData); @@ -579,9 +579,9 @@ /// Checks if two types are equal. MLIR_CAPI_EXPORTED bool mlirTypeEqual(MlirType t1, MlirType t2); -/** Prints a location by sending chunks of the string representation and - * forwarding `userData to `callback`. Note that the callback may be called - * several times with consecutive chunks of the string. */ +/// Prints a location by sending chunks of the string representation and +/// forwarding `userData to `callback`. Note that the callback may be called +/// several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirTypePrint(MlirType type, MlirStringCallback callback, void *userData); @@ -608,9 +608,9 @@ /// Checks if two attributes are equal. MLIR_CAPI_EXPORTED bool mlirAttributeEqual(MlirAttribute a1, MlirAttribute a2); -/** Prints an attribute by sending chunks of the string representation and - * forwarding `userData to `callback`. Note that the callback may be called - * several times with consecutive chunks of the string. */ +/// Prints an attribute by sending chunks of the string representation and +/// forwarding `userData to `callback`. Note that the callback may be called +/// several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirAttributePrint(MlirAttribute attr, MlirStringCallback callback, void *userData); diff --git a/mlir/include/mlir-c/Pass.h b/mlir/include/mlir-c/Pass.h --- a/mlir/include/mlir-c/Pass.h +++ b/mlir/include/mlir-c/Pass.h @@ -22,17 +22,16 @@ #endif //===----------------------------------------------------------------------===// -/** Opaque type declarations. - * - * Types are exposed to C bindings as structs containing opaque pointers. They - * are not supposed to be inspected from C. This allows the underlying - * representation to change without affecting the API users. The use of structs - * instead of typedefs enables some type safety as structs are not implicitly - * convertible to each other. - * - * Instances of these types may or may not own the underlying object. The - * ownership semantics is defined by how an instance of the type was obtained. - */ +// Opaque type declarations. +// +// Types are exposed to C bindings as structs containing opaque pointers. They +// are not supposed to be inspected from C. This allows the underlying +// representation to change without affecting the API users. The use of structs +// instead of typedefs enables some type safety as structs are not implicitly +// convertible to each other. +// +// Instances of these types may or may not own the underlying object. The +// ownership semantics is defined by how an instance of the type was obtained. //===----------------------------------------------------------------------===// #define DEFINE_C_API_STRUCT(name, storage) \ @@ -66,42 +65,42 @@ MLIR_CAPI_EXPORTED MlirLogicalResult mlirPassManagerRun(MlirPassManager passManager, MlirModule module); -/** Nest an OpPassManager under the top-level PassManager, the nested - * passmanager will only run on operations matching the provided name. - * The returned OpPassManager will be destroyed when the parent is destroyed. - * To further nest more OpPassManager under the newly returned one, see - * `mlirOpPassManagerNest` below. */ +/// Nest an OpPassManager under the top-level PassManager, the nested +/// passmanager will only run on operations matching the provided name. +/// The returned OpPassManager will be destroyed when the parent is destroyed. +/// To further nest more OpPassManager under the newly returned one, see +/// `mlirOpPassManagerNest` below. MLIR_CAPI_EXPORTED MlirOpPassManager mlirPassManagerGetNestedUnder( MlirPassManager passManager, MlirStringRef operationName); -/** Nest an OpPassManager under the provided OpPassManager, the nested - * passmanager will only run on operations matching the provided name. - * The returned OpPassManager will be destroyed when the parent is destroyed. */ +/// Nest an OpPassManager under the provided OpPassManager, the nested +/// passmanager will only run on operations matching the provided name. +/// The returned OpPassManager will be destroyed when the parent is destroyed. MLIR_CAPI_EXPORTED MlirOpPassManager mlirOpPassManagerGetNestedUnder( MlirOpPassManager passManager, MlirStringRef operationName); -/** Add a pass and transfer ownership to the provided top-level mlirPassManager. - * If the pass is not a generic operation pass or a ModulePass, a new - * OpPassManager is implicitly nested under the provided PassManager. */ +/// Add a pass and transfer ownership to the provided top-level mlirPassManager. +/// If the pass is not a generic operation pass or a ModulePass, a new +/// OpPassManager is implicitly nested under the provided PassManager. MLIR_CAPI_EXPORTED void mlirPassManagerAddOwnedPass(MlirPassManager passManager, MlirPass pass); -/** Add a pass and transfer ownership to the provided mlirOpPassManager. If the - * pass is not a generic operation pass or matching the type of the provided - * PassManager, a new OpPassManager is implicitly nested under the provided - * PassManager. */ +/// Add a pass and transfer ownership to the provided mlirOpPassManager. If the +/// pass is not a generic operation pass or matching the type of the provided +/// PassManager, a new OpPassManager is implicitly nested under the provided +/// PassManager. MLIR_CAPI_EXPORTED void mlirOpPassManagerAddOwnedPass(MlirOpPassManager passManager, MlirPass pass); -/** Print a textual MLIR pass pipeline by sending chunks of the string - * representation and forwarding `userData to `callback`. Note that the callback - * may be called several times with consecutive chunks of the string. */ +/// Print a textual MLIR pass pipeline by sending chunks of the string +/// representation and forwarding `userData to `callback`. Note that the +/// callback may be called several times with consecutive chunks of the string. MLIR_CAPI_EXPORTED void mlirPrintPassPipeline(MlirOpPassManager passManager, MlirStringCallback callback, void *userData); -/** Parse a textual MLIR pass pipeline and add it to the provided OpPassManager. - */ +/// Parse a textual MLIR pass pipeline and add it to the provided OpPassManager. + MLIR_CAPI_EXPORTED MlirLogicalResult mlirParsePassPipeline(MlirOpPassManager passManager, MlirStringRef pipeline); diff --git a/mlir/include/mlir-c/Support.h b/mlir/include/mlir-c/Support.h --- a/mlir/include/mlir-c/Support.h +++ b/mlir/include/mlir-c/Support.h @@ -46,18 +46,18 @@ // MlirStringRef. //===----------------------------------------------------------------------===// -/** A pointer to a sized fragment of a string, not necessarily null-terminated. - * Does not own the underlying string. This is equivalent to llvm::StringRef. - */ +/// A pointer to a sized fragment of a string, not necessarily null-terminated. +/// Does not own the underlying string. This is equivalent to llvm::StringRef. + struct MlirStringRef { - const char *data; /**< Pointer to the first symbol. */ - size_t length; /**< Length of the fragment. */ + const char *data; ///< Pointer to the first symbol. + size_t length; ///< Length of the fragment. }; typedef struct MlirStringRef MlirStringRef; -/** Constructs a string reference from the pointer and length. The pointer need - * not reference to a null-terminated string. - */ +/// Constructs a string reference from the pointer and length. The pointer need +/// not reference to a null-terminated string. + inline static MlirStringRef mlirStringRefCreate(const char *str, size_t length) { MlirStringRef result; @@ -66,30 +66,28 @@ return result; } -/** Constructs a string reference from a null-terminated C string. Prefer - * mlirStringRefCreate if the length of the string is known. - */ +/// Constructs a string reference from a null-terminated C string. Prefer +/// mlirStringRefCreate if the length of the string is known. MLIR_CAPI_EXPORTED MlirStringRef mlirStringRefCreateFromCString(const char *str); -/** A callback for returning string references. - * - * This function is called back by the functions that need to return a reference - * to the portion of the string with the following arguments: - * - an MlirStringRef representing the current portion of the string - * - a pointer to user data forwarded from the printing call. - */ +/// A callback for returning string references. +/// +/// This function is called back by the functions that need to return a +/// reference to the portion of the string with the following arguments: +/// - an MlirStringRef representing the current portion of the string +/// - a pointer to user data forwarded from the printing call. typedef void (*MlirStringCallback)(MlirStringRef, void *); //===----------------------------------------------------------------------===// // MlirLogicalResult. //===----------------------------------------------------------------------===// -/** A logical result value, essentially a boolean with named states. LLVM - * convention for using boolean values to designate success or failure of an - * operation is a moving target, so MLIR opted for an explicit class. - * Instances of MlirLogicalResult must only be inspected using the associated - * functions. */ +/// A logical result value, essentially a boolean with named states. LLVM +/// convention for using boolean values to designate success or failure of an +/// operation is a moving target, so MLIR opted for an explicit class. +/// Instances of MlirLogicalResult must only be inspected using the associated +/// functions. struct MlirLogicalResult { int8_t value; };