MLIR 22.0.0git
mlir::SimpleAffineExprFlattener Class Reference

#include "mlir/IR/AffineExprVisitor.h"

Inheritance diagram for mlir::SimpleAffineExprFlattener:

Public Member Functions

 SimpleAffineExprFlattener (unsigned numDims, unsigned numSymbols)
virtual ~SimpleAffineExprFlattener ()=default
LogicalResult visitMulExpr (AffineBinaryOpExpr expr)
LogicalResult visitAddExpr (AffineBinaryOpExpr expr)
LogicalResult visitDimExpr (AffineDimExpr expr)
LogicalResult visitSymbolExpr (AffineSymbolExpr expr)
LogicalResult visitConstantExpr (AffineConstantExpr expr)
LogicalResult visitCeilDivExpr (AffineBinaryOpExpr expr)
LogicalResult visitFloorDivExpr (AffineBinaryOpExpr expr)
LogicalResult visitModExpr (AffineBinaryOpExpr expr)
Public Member Functions inherited from mlir::AffineExprVisitor< SimpleAffineExprFlattener, LogicalResult >
LogicalResult walkPostOrder (AffineExpr expr)
Public Member Functions inherited from mlir::AffineExprVisitorBase< SimpleAffineExprFlattener, LogicalResult >
LogicalResult visit (AffineExpr expr)
LogicalResult visitAffineBinaryOpExpr (AffineBinaryOpExpr expr)
LogicalResult visitAddExpr (AffineBinaryOpExpr expr)
LogicalResult visitMulExpr (AffineBinaryOpExpr expr)
LogicalResult visitModExpr (AffineBinaryOpExpr expr)
LogicalResult visitFloorDivExpr (AffineBinaryOpExpr expr)
LogicalResult visitCeilDivExpr (AffineBinaryOpExpr expr)
LogicalResult visitConstantExpr (AffineConstantExpr expr)
LogicalResult visitDimExpr (AffineDimExpr expr)
LogicalResult visitSymbolExpr (AffineSymbolExpr expr)

Public Attributes

std::vector< SmallVector< int64_t, 8 > > operandExprStack
unsigned numDims
unsigned numSymbols
unsigned numLocals
SmallVector< AffineExpr, 4 > localExprs

Protected Member Functions

virtual void addLocalFloorDivId (ArrayRef< int64_t > dividend, int64_t divisor, AffineExpr localExpr)
virtual LogicalResult addLocalIdSemiAffine (ArrayRef< int64_t > lhs, ArrayRef< int64_t > rhs, AffineExpr localExpr)
 Add a local identifier (needed to flatten a mod, floordiv, ceildiv, mul expr) when the rhs is a symbolic expression.

Detailed Description

Definition at line 354 of file AffineExprVisitor.h.

Constructor & Destructor Documentation

◆ SimpleAffineExprFlattener()

SimpleAffineExprFlattener::SimpleAffineExprFlattener ( unsigned numDims,
unsigned numSymbols )

Definition at line 1309 of file AffineExpr.cpp.

References numDims, numLocals, numSymbols, and operandExprStack.

◆ ~SimpleAffineExprFlattener()

virtual mlir::SimpleAffineExprFlattener::~SimpleAffineExprFlattener ( )
virtualdefault

References lhs, numDims, numLocals, numSymbols, result, and rhs.

Member Function Documentation

◆ addLocalFloorDivId()

void SimpleAffineExprFlattener::addLocalFloorDivId ( ArrayRef< int64_t > dividend,
int64_t divisor,
AffineExpr localExpr )
protectedvirtual

Definition at line 1583 of file AffineExpr.cpp.

References localExprs, numLocals, and operandExprStack.

Referenced by visitModExpr().

◆ addLocalIdSemiAffine()

LogicalResult SimpleAffineExprFlattener::addLocalIdSemiAffine ( ArrayRef< int64_t > lhs,
ArrayRef< int64_t > rhs,
AffineExpr localExpr )
protectedvirtual

Add a local identifier (needed to flatten a mod, floordiv, ceildiv, mul expr) when the rhs is a symbolic expression.

The local identifier added may be a floordiv, ceildiv, mul or mod of a pure affine/semi-affine function of other identifiers, coefficients of which are specified in the lhs of the mod, floordiv, ceildiv or mul expression and with respect to a symbolic rhs expression. localExpr is the simplified tree expression (AffineExpr) corresponding to the quantifier.

Definition at line 1594 of file AffineExpr.cpp.

References lhs, localExprs, numLocals, operandExprStack, rhs, and success().

◆ visitAddExpr()

LogicalResult SimpleAffineExprFlattener::visitAddExpr ( AffineBinaryOpExpr expr)

Definition at line 1347 of file AffineExpr.cpp.

References lhs, operandExprStack, rhs, and success().

◆ visitCeilDivExpr()

LogicalResult SimpleAffineExprFlattener::visitCeilDivExpr ( AffineBinaryOpExpr expr)

Definition at line 1440 of file AffineExpr.cpp.

◆ visitConstantExpr()

LogicalResult SimpleAffineExprFlattener::visitConstantExpr ( AffineConstantExpr expr)

◆ visitDimExpr()

LogicalResult SimpleAffineExprFlattener::visitDimExpr ( AffineDimExpr expr)

◆ visitFloorDivExpr()

LogicalResult SimpleAffineExprFlattener::visitFloorDivExpr ( AffineBinaryOpExpr expr)

Definition at line 1444 of file AffineExpr.cpp.

◆ visitModExpr()

◆ visitMulExpr()

LogicalResult SimpleAffineExprFlattener::visitMulExpr ( AffineBinaryOpExpr expr)

◆ visitSymbolExpr()

LogicalResult SimpleAffineExprFlattener::visitSymbolExpr ( AffineSymbolExpr expr)

Member Data Documentation

◆ localExprs

SmallVector<AffineExpr, 4> mlir::SimpleAffineExprFlattener::localExprs

◆ numDims

unsigned mlir::SimpleAffineExprFlattener::numDims

◆ numLocals

◆ numSymbols

unsigned mlir::SimpleAffineExprFlattener::numSymbols

◆ operandExprStack


The documentation for this class was generated from the following files: