MLIR  21.0.0git
Macros | Functions
AffineExpr.h File Reference
#include "mlir-c/IR.h"

Go to the source code of this file.

Macros

#define DEFINE_C_API_STRUCT(name, storage)
 

Functions

 DEFINE_C_API_STRUCT (MlirAffineExpr, const void)
 
MLIR_CAPI_EXPORTED MlirContext mlirAffineExprGetContext (MlirAffineExpr affineExpr)
 Gets the context that owns the affine expression. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprEqual (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Returns true if the two affine expressions are equal. More...
 
static bool mlirAffineExprIsNull (MlirAffineExpr affineExpr)
 Returns true if the given affine expression is a null expression. More...
 
MLIR_CAPI_EXPORTED void mlirAffineExprPrint (MlirAffineExpr affineExpr, MlirStringCallback callback, void *userData)
 Prints an affine expression by sending chunks of the string representation and forwarding userData tocallback`. More...
 
MLIR_CAPI_EXPORTED void mlirAffineExprDump (MlirAffineExpr affineExpr)
 Prints the affine expression to the standard error stream. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsSymbolicOrConstant (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is made out of only symbols and constants. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsPureAffine (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is a pure affine expression, i.e. More...
 
MLIR_CAPI_EXPORTED int64_t mlirAffineExprGetLargestKnownDivisor (MlirAffineExpr affineExpr)
 Returns the greatest known integral divisor of this affine expression. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsMultipleOf (MlirAffineExpr affineExpr, int64_t factor)
 Checks whether the given affine expression is a multiple of 'factor'. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsFunctionOfDim (MlirAffineExpr affineExpr, intptr_t position)
 Checks whether the given affine expression involves AffineDimExpr 'position'. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineExprCompose (MlirAffineExpr affineExpr, struct MlirAffineMap affineMap)
 Composes the given map with the given expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineExprShiftDims (MlirAffineExpr affineExpr, uint32_t numDims, uint32_t shift, uint32_t offset)
 Replace dims[offset ... More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineExprShiftSymbols (MlirAffineExpr affineExpr, uint32_t numSymbols, uint32_t shift, uint32_t offset)
 Replace symbols[offset ... More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirSimplifyAffineExpr (MlirAffineExpr expr, uint32_t numDims, uint32_t numSymbols)
 Simplify an affine expression by flattening and some amount of simple analysis. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsADim (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is a dimension expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineDimExprGet (MlirContext ctx, intptr_t position)
 Creates an affine dimension expression with 'position' in the context. More...
 
MLIR_CAPI_EXPORTED intptr_t mlirAffineDimExprGetPosition (MlirAffineExpr affineExpr)
 Returns the position of the given affine dimension expression. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsASymbol (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is a symbol expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineSymbolExprGet (MlirContext ctx, intptr_t position)
 Creates an affine symbol expression with 'position' in the context. More...
 
MLIR_CAPI_EXPORTED intptr_t mlirAffineSymbolExprGetPosition (MlirAffineExpr affineExpr)
 Returns the position of the given affine symbol expression. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsAConstant (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is a constant expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineConstantExprGet (MlirContext ctx, int64_t constant)
 Creates an affine constant expression with 'constant' in the context. More...
 
MLIR_CAPI_EXPORTED int64_t mlirAffineConstantExprGetValue (MlirAffineExpr affineExpr)
 Returns the value of the given affine constant expression. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsAAdd (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an add expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineAddExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine add expression with 'lhs' and 'rhs'. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsAMul (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an mul expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineMulExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine mul expression with 'lhs' and 'rhs'. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsAMod (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an mod expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineModExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine mod expression with 'lhs' and 'rhs'. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsAFloorDiv (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an floordiv expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineFloorDivExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine floordiv expression with 'lhs' and 'rhs'. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsACeilDiv (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is an ceildiv expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineCeilDivExprGet (MlirAffineExpr lhs, MlirAffineExpr rhs)
 Creates an affine ceildiv expression with 'lhs' and 'rhs'. More...
 
MLIR_CAPI_EXPORTED bool mlirAffineExprIsABinary (MlirAffineExpr affineExpr)
 Checks whether the given affine expression is binary. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineBinaryOpExprGetLHS (MlirAffineExpr affineExpr)
 Returns the left hand side affine expression of the given affine binary operation expression. More...
 
MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineBinaryOpExprGetRHS (MlirAffineExpr affineExpr)
 Returns the right hand side affine expression of the given affine binary operation expression. More...
 

Macro Definition Documentation

◆ DEFINE_C_API_STRUCT

#define DEFINE_C_API_STRUCT (   name,
  storage 
)
Value:
struct name { \
storage *ptr; \
}; \
typedef struct name name

Definition at line 32 of file AffineExpr.h.

Function Documentation

◆ DEFINE_C_API_STRUCT()

DEFINE_C_API_STRUCT ( MlirAffineExpr  ,
const void   
)

◆ mlirAffineAddExprGet()

MLIR_CAPI_EXPORTED 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(), unwrap(), and wrap().

◆ mlirAffineBinaryOpExprGetLHS()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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(), unwrap(), and wrap().

◆ mlirAffineConstantExprGet()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED MlirAffineExpr mlirAffineExprCompose ( MlirAffineExpr  affineExpr,
struct MlirAffineMap  affineMap 
)

Composes the given map with the given expression.

Definition at line 59 of file AffineExpr.cpp.

References unwrap(), and wrap().

◆ mlirAffineExprDump()

MLIR_CAPI_EXPORTED void mlirAffineExprDump ( MlirAffineExpr  affineExpr)

Prints the affine expression to the standard error stream.

Definition at line 34 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprEqual()

MLIR_CAPI_EXPORTED bool mlirAffineExprEqual ( MlirAffineExpr  lhs,
MlirAffineExpr  rhs 
)

Returns true if the two affine expressions are equal.

Definition at line 24 of file AffineExpr.cpp.

References unwrap().

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

◆ mlirAffineExprGetContext()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED int64_t mlirAffineExprGetLargestKnownDivisor ( MlirAffineExpr  affineExpr)

Returns the greatest known integral divisor of this affine expression.

The result is always positive.

Definition at line 46 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsAAdd()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED bool mlirAffineExprIsABinary ( MlirAffineExpr  affineExpr)

Checks whether the given affine expression is binary.

Definition at line 200 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsACeilDiv()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED bool mlirAffineExprIsFunctionOfDim ( MlirAffineExpr  affineExpr,
intptr_t  position 
)

Checks whether the given affine expression involves AffineDimExpr 'position'.

Definition at line 54 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsMultipleOf()

MLIR_CAPI_EXPORTED bool mlirAffineExprIsMultipleOf ( MlirAffineExpr  affineExpr,
int64_t  factor 
)

Checks whether the given affine expression is a multiple of 'factor'.

Definition at line 50 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsNull()

static bool mlirAffineExprIsNull ( MlirAffineExpr  affineExpr)
inlinestatic

Returns true if the given affine expression is a null expression.

Note constant zero is not a null expression.

Definition at line 54 of file AffineExpr.h.

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

◆ mlirAffineExprIsPureAffine()

MLIR_CAPI_EXPORTED bool mlirAffineExprIsPureAffine ( 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.

Definition at line 42 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprIsSymbolicOrConstant()

MLIR_CAPI_EXPORTED bool mlirAffineExprIsSymbolicOrConstant ( MlirAffineExpr  affineExpr)

Checks whether the given affine expression is made out of only symbols and constants.

Definition at line 38 of file AffineExpr.cpp.

References unwrap().

◆ mlirAffineExprPrint()

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

Prints an affine expression by sending chunks of the string representation and forwarding userData tocallback`.

Note that the callback may be called several times with consecutive chunks of the string.

Definition at line 28 of file AffineExpr.cpp.

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

◆ mlirAffineExprShiftDims()

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

Replace dims[offset ...

numDims) by dims[offset + shift ... shift + numDims).

Definition at line 64 of file AffineExpr.cpp.

References unwrap(), and wrap().

◆ mlirAffineExprShiftSymbols()

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

Replace symbols[offset ...

numSymbols) by symbols[offset + shift ... shift + numSymbols).

Definition at line 70 of file AffineExpr.cpp.

References unwrap(), and wrap().

◆ mlirAffineFloorDivExprGet()

MLIR_CAPI_EXPORTED 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(), unwrap(), and wrap().

◆ mlirAffineModExprGet()

MLIR_CAPI_EXPORTED 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(), mlir::Mod, unwrap(), and wrap().

◆ mlirAffineMulExprGet()

MLIR_CAPI_EXPORTED 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(), mlir::Mul, unwrap(), and wrap().

◆ mlirAffineSymbolExprGet()

MLIR_CAPI_EXPORTED 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()

MLIR_CAPI_EXPORTED 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()

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

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().