MLIR 22.0.0git
AffineMap.cpp File Reference
#include "mlir-c/AffineMap.h"
#include "mlir-c/IR.h"
#include "mlir/CAPI/AffineExpr.h"
#include "mlir/CAPI/AffineMap.h"
#include "mlir/CAPI/IR.h"
#include "mlir/CAPI/Utils.h"
#include "mlir/IR/AffineMap.h"

Go to the source code of this file.

Functions

MlirContext mlirAffineMapGetContext (MlirAffineMap affineMap)
 Gets the context that the given affine map was created with.
bool mlirAffineMapEqual (MlirAffineMap a1, MlirAffineMap a2)
 Checks if two affine maps are equal.
void mlirAffineMapPrint (MlirAffineMap affineMap, MlirStringCallback callback, void *userData)
void mlirAffineMapDump (MlirAffineMap affineMap)
MlirAffineMap mlirAffineMapEmptyGet (MlirContext ctx)
MlirAffineMap mlirAffineMapZeroResultGet (MlirContext ctx, intptr_t dimCount, intptr_t symbolCount)
MlirAffineMap mlirAffineMapGet (MlirContext ctx, intptr_t dimCount, intptr_t symbolCount, intptr_t nAffineExprs, MlirAffineExpr *affineExprs)
MlirAffineMap mlirAffineMapConstantGet (MlirContext ctx, int64_t val)
MlirAffineMap mlirAffineMapMultiDimIdentityGet (MlirContext ctx, intptr_t numDims)
MlirAffineMap mlirAffineMapMinorIdentityGet (MlirContext ctx, intptr_t dims, intptr_t results)
MlirAffineMap mlirAffineMapPermutationGet (MlirContext ctx, intptr_t size, unsigned *permutation)
bool mlirAffineMapIsIdentity (MlirAffineMap affineMap)
bool mlirAffineMapIsMinorIdentity (MlirAffineMap affineMap)
bool mlirAffineMapIsEmpty (MlirAffineMap affineMap)
bool mlirAffineMapIsSingleConstant (MlirAffineMap affineMap)
int64_t mlirAffineMapGetSingleConstantResult (MlirAffineMap affineMap)
intptr_t mlirAffineMapGetNumDims (MlirAffineMap affineMap)
intptr_t mlirAffineMapGetNumSymbols (MlirAffineMap affineMap)
intptr_t mlirAffineMapGetNumResults (MlirAffineMap affineMap)
MlirAffineExpr mlirAffineMapGetResult (MlirAffineMap affineMap, intptr_t pos)
intptr_t mlirAffineMapGetNumInputs (MlirAffineMap affineMap)
bool mlirAffineMapIsProjectedPermutation (MlirAffineMap affineMap)
bool mlirAffineMapIsPermutation (MlirAffineMap affineMap)
MlirAffineMap mlirAffineMapGetSubMap (MlirAffineMap affineMap, intptr_t size, intptr_t *resultPos)
MlirAffineMap mlirAffineMapGetMajorSubMap (MlirAffineMap affineMap, intptr_t numResults)
MlirAffineMap mlirAffineMapGetMinorSubMap (MlirAffineMap affineMap, intptr_t numResults)
MlirAffineMap mlirAffineMapReplace (MlirAffineMap affineMap, MlirAffineExpr expression, MlirAffineExpr replacement, intptr_t numResultDims, intptr_t numResultSyms)
void mlirAffineMapCompressUnusedSymbols (MlirAffineMap *affineMaps, intptr_t size, void *result, void(*populateResult)(void *res, intptr_t idx, MlirAffineMap m))
 Prints an affine map by sending chunks of the string representation and forwarding userData to callback`.

Function Documentation

◆ mlirAffineMapCompressUnusedSymbols()

void mlirAffineMapCompressUnusedSymbols ( MlirAffineMap * affineMaps,
intptr_t size,
void * result,
void(* populateResult )(void *res, intptr_t idx, MlirAffineMap m) )

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);

/ 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. 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. 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.

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. 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. 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. 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 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. MLIR_CAPI_EXPORTED bool mlirAffineMapIsIdentity(MlirAffineMap affineMap);

/ Checks whether the given affine map is a minor identity affine map. MLIR_CAPI_EXPORTED bool mlirAffineMapIsMinorIdentity(MlirAffineMap affineMap);

/ 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. 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. MLIR_CAPI_EXPORTED int64_t mlirAffineMapGetSingleConstantResult(MlirAffineMap affineMap);

/ Returns the number of dimensions of the given affine map. MLIR_CAPI_EXPORTED intptr_t mlirAffineMapGetNumDims(MlirAffineMap affineMap);

/ Returns the number of symbols of the given affine map. MLIR_CAPI_EXPORTED intptr_t mlirAffineMapGetNumSymbols(MlirAffineMap affineMap);

/ Returns the number of results of the given affine map. MLIR_CAPI_EXPORTED intptr_t mlirAffineMapGetNumResults(MlirAffineMap affineMap);

/ Returns the result at the given position. MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineMapGetResult(MlirAffineMap affineMap, intptr_t pos);

/ 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. MLIR_CAPI_EXPORTED bool mlirAffineMapIsProjectedPermutation(MlirAffineMap affineMap);

/ 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. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapGetSubMap(MlirAffineMap affineMap, 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. 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. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapGetMinorSubMap(MlirAffineMap affineMap, intptr_t numResults);

/ Apply AffineExpr::replace(map) to each of the results and return a new / new AffineMap with the new results and the specified number of dims and / symbols. MLIR_CAPI_EXPORTED MlirAffineMap mlirAffineMapReplace( MlirAffineMap affineMap, MlirAffineExpr expression, MlirAffineExpr replacement, intptr_t numResultDims, intptr_t numResultSyms);

/ Returns the simplified affine map resulting from dropping the symbols that / do not appear in any of the individual maps in affineMaps. / Asserts that all maps in affineMaps are normalized to the same number of / dims and symbols. / Takes a callback populateResult to fill the res container with value / m at entry idx. This allows returning without worrying about ownership considerations.

Definition at line 150 of file AffineMap.cpp.

References mlir::compressUnusedSymbols(), result, unwrap(), and wrap().

◆ mlirAffineMapConstantGet()

MlirAffineMap mlirAffineMapConstantGet ( MlirContext ctx,
int64_t val )

Definition at line 54 of file AffineMap.cpp.

References mlir::AffineMap::getConstantMap(), unwrap(), and wrap().

◆ mlirAffineMapDump()

void mlirAffineMapDump ( MlirAffineMap affineMap)

Definition at line 35 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapEmptyGet()

MlirAffineMap mlirAffineMapEmptyGet ( MlirContext ctx)

Definition at line 37 of file AffineMap.cpp.

References mlir::AffineMap::get(), unwrap(), and wrap().

◆ mlirAffineMapEqual()

bool mlirAffineMapEqual ( MlirAffineMap a1,
MlirAffineMap a2 )

Checks if two affine maps are equal.

Definition at line 25 of file AffineMap.cpp.

References unwrap().

Referenced by mlir::python::PyAffineMap::operator==().

◆ mlirAffineMapGet()

MlirAffineMap mlirAffineMapGet ( MlirContext ctx,
intptr_t dimCount,
intptr_t symbolCount,
intptr_t nAffineExprs,
MlirAffineExpr * affineExprs )

Definition at line 46 of file AffineMap.cpp.

References mlir::AffineMap::get(), unwrap(), unwrapList(), and wrap().

◆ mlirAffineMapGetContext()

MlirContext mlirAffineMapGetContext ( MlirAffineMap affineMap)

Gets the context that the given affine map was created with.

Definition at line 21 of file AffineMap.cpp.

References getContext(), unwrap(), and wrap().

Referenced by mlir::python::PyAffineMap::createFromCapsule().

◆ mlirAffineMapGetMajorSubMap()

MlirAffineMap mlirAffineMapGetMajorSubMap ( MlirAffineMap affineMap,
intptr_t numResults )

Definition at line 131 of file AffineMap.cpp.

References unwrap(), and wrap().

◆ mlirAffineMapGetMinorSubMap()

MlirAffineMap mlirAffineMapGetMinorSubMap ( MlirAffineMap affineMap,
intptr_t numResults )

Definition at line 136 of file AffineMap.cpp.

References unwrap(), and wrap().

◆ mlirAffineMapGetNumDims()

intptr_t mlirAffineMapGetNumDims ( MlirAffineMap affineMap)

Definition at line 94 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapGetNumInputs()

intptr_t mlirAffineMapGetNumInputs ( MlirAffineMap affineMap)

Definition at line 110 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapGetNumResults()

intptr_t mlirAffineMapGetNumResults ( MlirAffineMap affineMap)

Definition at line 102 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapGetNumSymbols()

intptr_t mlirAffineMapGetNumSymbols ( MlirAffineMap affineMap)

Definition at line 98 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapGetResult()

MlirAffineExpr mlirAffineMapGetResult ( MlirAffineMap affineMap,
intptr_t pos )

Definition at line 106 of file AffineMap.cpp.

References unwrap(), and wrap().

◆ mlirAffineMapGetSingleConstantResult()

int64_t mlirAffineMapGetSingleConstantResult ( MlirAffineMap affineMap)

Definition at line 90 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapGetSubMap()

MlirAffineMap mlirAffineMapGetSubMap ( MlirAffineMap affineMap,
intptr_t size,
intptr_t * resultPos )

Definition at line 122 of file AffineMap.cpp.

References unwrap(), and wrap().

◆ mlirAffineMapIsEmpty()

bool mlirAffineMapIsEmpty ( MlirAffineMap affineMap)

Definition at line 82 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapIsIdentity()

bool mlirAffineMapIsIdentity ( MlirAffineMap affineMap)

Definition at line 74 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapIsMinorIdentity()

bool mlirAffineMapIsMinorIdentity ( MlirAffineMap affineMap)

Definition at line 78 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapIsPermutation()

bool mlirAffineMapIsPermutation ( MlirAffineMap affineMap)

Definition at line 118 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapIsProjectedPermutation()

bool mlirAffineMapIsProjectedPermutation ( MlirAffineMap affineMap)

Definition at line 114 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapIsSingleConstant()

bool mlirAffineMapIsSingleConstant ( MlirAffineMap affineMap)

Definition at line 86 of file AffineMap.cpp.

References unwrap().

◆ mlirAffineMapMinorIdentityGet()

MlirAffineMap mlirAffineMapMinorIdentityGet ( MlirContext ctx,
intptr_t dims,
intptr_t results )

Definition at line 63 of file AffineMap.cpp.

References mlir::AffineMap::getMinorIdentityMap(), unwrap(), and wrap().

◆ mlirAffineMapMultiDimIdentityGet()

MlirAffineMap mlirAffineMapMultiDimIdentityGet ( MlirContext ctx,
intptr_t numDims )

Definition at line 58 of file AffineMap.cpp.

References mlir::AffineMap::getMultiDimIdentityMap(), unwrap(), and wrap().

◆ mlirAffineMapPermutationGet()

MlirAffineMap mlirAffineMapPermutationGet ( MlirContext ctx,
intptr_t size,
unsigned * permutation )

Definition at line 68 of file AffineMap.cpp.

References mlir::AffineMap::getPermutationMap(), unwrap(), and wrap().

◆ mlirAffineMapPrint()

void mlirAffineMapPrint ( MlirAffineMap affineMap,
MlirStringCallback callback,
void * userData )

Definition at line 29 of file AffineMap.cpp.

References mlir::Diagnostic::print(), and unwrap().

◆ mlirAffineMapReplace()

MlirAffineMap mlirAffineMapReplace ( MlirAffineMap affineMap,
MlirAffineExpr expression,
MlirAffineExpr replacement,
intptr_t numResultDims,
intptr_t numResultSyms )

Definition at line 141 of file AffineMap.cpp.

References replacement(), unwrap(), and wrap().

◆ mlirAffineMapZeroResultGet()

MlirAffineMap mlirAffineMapZeroResultGet ( MlirContext ctx,
intptr_t dimCount,
intptr_t symbolCount )

Definition at line 41 of file AffineMap.cpp.

References mlir::AffineMap::get(), unwrap(), and wrap().