MLIR 22.0.0git
AffineExpr.cpp File Reference
#include "mlir-c/AffineExpr.h"
#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/AffineExpr.h"

Go to the source code of this file.

Functions

MlirContext mlirAffineExprGetContext (MlirAffineExpr affineExpr)
 Gets the context that owns the affine expression.
bool mlirAffineExprEqual (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Returns true if the two affine expressions are equal.
void mlirAffineExprPrint (MlirAffineExpr affineExpr, MlirStringCallback callback, void *userData)
void mlirAffineExprDump (MlirAffineExpr affineExpr)
bool mlirAffineExprIsSymbolicOrConstant (MlirAffineExpr affineExpr)
bool mlirAffineExprIsPureAffine (MlirAffineExpr affineExpr)
int64_t mlirAffineExprGetLargestKnownDivisor (MlirAffineExpr affineExpr)
bool mlirAffineExprIsMultipleOf (MlirAffineExpr affineExpr, int64_t factor)
bool mlirAffineExprIsFunctionOfDim (MlirAffineExpr affineExpr, intptr_t position)
MlirAffineExpr mlirAffineExprCompose (MlirAffineExpr affineExpr, MlirAffineMap affineMap)
MlirAffineExpr mlirAffineExprShiftDims (MlirAffineExpr affineExpr, uint32_t numDims, uint32_t shift, uint32_t offset)
MlirAffineExpr mlirAffineExprShiftSymbols (MlirAffineExpr affineExpr, uint32_t numSymbols, uint32_t shift, uint32_t offset)
MlirAffineExpr mlirSimplifyAffineExpr (MlirAffineExpr expr, uint32_t numDims, uint32_t numSymbols)
 Prints an affine expression by sending chunks of the string representation and forwarding userData to callback`.
bool mlirAffineExprIsADim (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is a dimension expression.
MlirAffineExpr mlirAffineDimExprGet (MlirContext ctx, intptr_t position)
 Creates an affine dimension expression with 'position' in the context.
intptr_t mlirAffineDimExprGetPosition (MlirAffineExpr affineExpr)
 Returns the position of the given affine dimension expression.
bool mlirAffineExprIsASymbol (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is a symbol expression.
MlirAffineExpr mlirAffineSymbolExprGet (MlirContext ctx, intptr_t position)
 Creates an affine symbol expression with 'position' in the context.
intptr_t mlirAffineSymbolExprGetPosition (MlirAffineExpr affineExpr)
 Returns the position of the given affine symbol expression.
bool mlirAffineExprIsAConstant (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is a constant expression.
MlirAffineExpr mlirAffineConstantExprGet (MlirContext ctx, int64_t constant)
 Creates an affine constant expression with 'constant' in the context.
int64_t mlirAffineConstantExprGetValue (MlirAffineExpr affineExpr)
 Returns the value of the given affine constant expression.
bool mlirAffineExprIsAAdd (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an add expression.
MlirAffineExpr mlirAffineAddExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine add expression with 'lhs' and 'rhs'.
bool mlirAffineExprIsAMul (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an mul expression.
MlirAffineExpr mlirAffineMulExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine mul expression with 'lhs' and 'rhs'.
bool mlirAffineExprIsAMod (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an mod expression.
MlirAffineExpr mlirAffineModExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine mod expression with 'lhs' and 'rhs'.
bool mlirAffineExprIsAFloorDiv (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an floordiv expression.
MlirAffineExpr mlirAffineFloorDivExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine floordiv expression with 'lhs' and 'rhs'.
bool mlirAffineExprIsACeilDiv (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an ceildiv expression.
MlirAffineExpr mlirAffineCeilDivExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine ceildiv expression with 'lhs' and 'rhs'.
bool mlirAffineExprIsABinary (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is binary.
MlirAffineExpr mlirAffineBinaryOpExprGetLHS (MlirAffineExpr affineExpr)
 Returns the left hand side affine expression of the given affine binary operation expression.
MlirAffineExpr mlirAffineBinaryOpExprGetRHS (MlirAffineExpr affineExpr)
 Returns the right hand side affine expression of the given affine binary operation expression.

Function Documentation

◆ mlirAffineAddExprGet()

MlirAffineExpr mlirAffineAddExprGet ( MlirAffineExpr lhs,
MlirAffineExpr rhs )

Creates an affine add expression with 'lhs' and 'rhs'.

Definition at line 137 of file AffineExpr.cpp.

References mlir::Add, mlir::getAffineBinaryOpExpr(), lhs, rhs, unwrap(), and wrap().

◆ mlirAffineBinaryOpExprGetLHS()

MlirAffineExpr mlirAffineBinaryOpExprGetLHS ( MlirAffineExpr affineExpr)

Returns the left hand side affine expression of the given affine binary operation expression.

Definition at line 204 of file AffineExpr.cpp.

References unwrap(), and wrap().

◆ mlirAffineBinaryOpExprGetRHS()

MlirAffineExpr mlirAffineBinaryOpExprGetRHS ( MlirAffineExpr affineExpr)

Returns the right hand side affine expression of the given affine binary operation expression.

Definition at line 208 of file AffineExpr.cpp.

References unwrap(), and wrap().

◆ mlirAffineCeilDivExprGet()

MlirAffineExpr mlirAffineCeilDivExprGet ( MlirAffineExpr lhs,
MlirAffineExpr rhs )

Creates an affine ceildiv expression with 'lhs' and 'rhs'.

Definition at line 190 of file AffineExpr.cpp.

References mlir::CeilDiv, mlir::getAffineBinaryOpExpr(), lhs, rhs, unwrap(), and wrap().

◆ mlirAffineConstantExprGet()

MlirAffineExpr mlirAffineConstantExprGet ( MlirContext ctx,
int64_t constant )

Creates an affine constant expression with 'constant' in the context.

Definition at line 121 of file AffineExpr.cpp.

References mlir::getAffineConstantExpr(), unwrap(), and wrap().

◆ mlirAffineConstantExprGetValue()

int64_t mlirAffineConstantExprGetValue ( MlirAffineExpr affineExpr)

Returns the value of the given affine constant expression.

Definition at line 125 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineDimExprGet()

MlirAffineExpr mlirAffineDimExprGet ( MlirContext ctx,
intptr_t position )

Creates an affine dimension expression with 'position' in the context.

Definition at line 89 of file AffineExpr.cpp.

References mlir::getAffineDimExpr(), unwrap(), and wrap().

◆ mlirAffineDimExprGetPosition()

intptr_t mlirAffineDimExprGetPosition ( MlirAffineExpr affineExpr)

Returns the position of the given affine dimension expression.

Definition at line 93 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprCompose()

MlirAffineExpr mlirAffineExprCompose ( MlirAffineExpr affineExpr,
MlirAffineMap affineMap )

Definition at line 59 of file AffineExpr.cpp.

References unwrap(), and wrap().

◆ mlirAffineExprDump()

void mlirAffineExprDump ( MlirAffineExpr affineExpr)

Definition at line 34 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprEqual()

bool mlirAffineExprEqual ( MlirAffineExpr lhs,
MlirAffineExpr rhs )

Returns true if the two affine expressions are equal.

Definition at line 24 of file AffineExpr.cpp.

References lhs, rhs, and unwrap().

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

◆ mlirAffineExprGetContext()

MlirContext mlirAffineExprGetContext ( MlirAffineExpr affineExpr)

Gets the context that owns the affine expression.

Definition at line 20 of file AffineExpr.cpp.

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

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

◆ mlirAffineExprGetLargestKnownDivisor()

int64_t mlirAffineExprGetLargestKnownDivisor ( MlirAffineExpr affineExpr)

Definition at line 46 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsAAdd()

bool mlirAffineExprIsAAdd ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is an add expression.

Definition at line 133 of file AffineExpr.cpp.

References mlir::Add, and unwrap().

◆ mlirAffineExprIsABinary()

bool mlirAffineExprIsABinary ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is binary.

Definition at line 200 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsACeilDiv()

bool mlirAffineExprIsACeilDiv ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is an ceildiv expression.

Definition at line 186 of file AffineExpr.cpp.

References mlir::CeilDiv, and unwrap().

◆ mlirAffineExprIsAConstant()

bool mlirAffineExprIsAConstant ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is a constant expression.

Definition at line 117 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsADim()

bool mlirAffineExprIsADim ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is a dimension expression.

Definition at line 85 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsAFloorDiv()

bool mlirAffineExprIsAFloorDiv ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is an floordiv expression.

Definition at line 172 of file AffineExpr.cpp.

References mlir::FloorDiv, and unwrap().

◆ mlirAffineExprIsAMod()

bool mlirAffineExprIsAMod ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is an mod expression.

Definition at line 159 of file AffineExpr.cpp.

References mlir::Mod, and unwrap().

◆ mlirAffineExprIsAMul()

bool mlirAffineExprIsAMul ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is an mul expression.

Definition at line 146 of file AffineExpr.cpp.

References mlir::Mul, and unwrap().

◆ mlirAffineExprIsASymbol()

bool mlirAffineExprIsASymbol ( MlirAffineExpr affineExpr)

Checks whether the given affine expression is a symbol expression.

Definition at line 101 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsFunctionOfDim()

bool mlirAffineExprIsFunctionOfDim ( MlirAffineExpr affineExpr,
intptr_t position )

Definition at line 54 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsMultipleOf()

bool mlirAffineExprIsMultipleOf ( MlirAffineExpr affineExpr,
int64_t factor )

Definition at line 50 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsPureAffine()

bool mlirAffineExprIsPureAffine ( MlirAffineExpr affineExpr)

Definition at line 42 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsSymbolicOrConstant()

bool mlirAffineExprIsSymbolicOrConstant ( MlirAffineExpr affineExpr)

Definition at line 38 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprPrint()

void mlirAffineExprPrint ( MlirAffineExpr affineExpr,
MlirStringCallback callback,
void * userData )

Definition at line 28 of file AffineExpr.cpp.

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

◆ mlirAffineExprShiftDims()

MlirAffineExpr mlirAffineExprShiftDims ( MlirAffineExpr affineExpr,
uint32_t numDims,
uint32_t shift,
uint32_t offset )

Definition at line 64 of file AffineExpr.cpp.

References unwrap(), and wrap().

◆ mlirAffineExprShiftSymbols()

MlirAffineExpr mlirAffineExprShiftSymbols ( MlirAffineExpr affineExpr,
uint32_t numSymbols,
uint32_t shift,
uint32_t offset )

Definition at line 70 of file AffineExpr.cpp.

References unwrap(), and wrap().

◆ mlirAffineFloorDivExprGet()

MlirAffineExpr mlirAffineFloorDivExprGet ( MlirAffineExpr lhs,
MlirAffineExpr rhs )

Creates an affine floordiv expression with 'lhs' and 'rhs'.

Definition at line 176 of file AffineExpr.cpp.

References mlir::FloorDiv, mlir::getAffineBinaryOpExpr(), lhs, rhs, unwrap(), and wrap().

◆ mlirAffineModExprGet()

MlirAffineExpr mlirAffineModExprGet ( MlirAffineExpr lhs,
MlirAffineExpr rhs )

Creates an affine mod expression with 'lhs' and 'rhs'.

Definition at line 163 of file AffineExpr.cpp.

References mlir::getAffineBinaryOpExpr(), lhs, mlir::Mod, rhs, unwrap(), and wrap().

◆ mlirAffineMulExprGet()

MlirAffineExpr mlirAffineMulExprGet ( MlirAffineExpr lhs,
MlirAffineExpr rhs )

Creates an affine mul expression with 'lhs' and 'rhs'.

Definition at line 150 of file AffineExpr.cpp.

References mlir::getAffineBinaryOpExpr(), lhs, mlir::Mul, rhs, unwrap(), and wrap().

◆ mlirAffineSymbolExprGet()

MlirAffineExpr mlirAffineSymbolExprGet ( MlirContext ctx,
intptr_t position )

Creates an affine symbol expression with 'position' in the context.

Definition at line 105 of file AffineExpr.cpp.

References mlir::getAffineSymbolExpr(), unwrap(), and wrap().

◆ mlirAffineSymbolExprGetPosition()

intptr_t mlirAffineSymbolExprGetPosition ( MlirAffineExpr affineExpr)

Returns the position of the given affine symbol expression.

Definition at line 109 of file AffineExpr.cpp.

References unwrap().

◆ mlirSimplifyAffineExpr()

MlirAffineExpr mlirSimplifyAffineExpr ( MlirAffineExpr expr,
uint32_t numDims,
uint32_t numSymbols )

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

/ 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. 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. MLIR_CAPI_EXPORTED bool mlirAffineExprIsPureAffine(MlirAffineExpr affineExpr);

/ Returns the greatest known integral divisor of this affine expression. The / result is always positive. MLIR_CAPI_EXPORTED int64_t mlirAffineExprGetLargestKnownDivisor(MlirAffineExpr affineExpr);

/ Checks whether the given affine expression is a multiple of 'factor'. MLIR_CAPI_EXPORTED bool mlirAffineExprIsMultipleOf(MlirAffineExpr affineExpr, int64_t factor);

/ Checks whether the given affine expression involves AffineDimExpr / 'position'. MLIR_CAPI_EXPORTED bool mlirAffineExprIsFunctionOfDim(MlirAffineExpr affineExpr, intptr_t position);

/ Composes the given map with the given expression. MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineExprCompose( MlirAffineExpr affineExpr, struct MlirAffineMap affineMap);

/ Replace dims[offset ... numDims) / by dims[offset + shift ... shift + numDims). MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineExprShiftDims(MlirAffineExpr affineExpr, uint32_t numDims, uint32_t shift, uint32_t offset);

/ Replace symbols[offset ... numSymbols) / by symbols[offset + shift ... shift + numSymbols). MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineExprShiftSymbols(MlirAffineExpr affineExpr, uint32_t numSymbols, uint32_t shift, uint32_t offset);

/ Simplify an affine expression by flattening and some amount of simple / analysis. This has complexity linear in the number of nodes in 'expr'. / Returns the simplified expression, which is the same as the input expression / if it can't be simplified. When expr is semi-affine, a simplified semi-affine expression is constructed in the sorted order of dimension and symbol positions.

Definition at line 76 of file AffineExpr.cpp.

References mlir::simplifyAffineExpr(), unwrap(), and wrap().