MLIR 22.0.0git
mlir::AffineMap Class Reference

A multi-dimensional affine map Affine map's are immutable like Type's, and they are uniqued. More...

#include "mlir/IR/AffineMap.h"

Public Types

using ImplType = detail::AffineMapStorage

Public Member Functions

constexpr AffineMap ()=default
 AffineMap (ImplType *map)
MLIRContextgetContext () const
 operator bool () const
bool operator== (AffineMap other) const
bool operator!= (AffineMap other) const
bool isIdentity () const
 Returns true if this affine map is an identity affine map.
bool isSymbolIdentity () const
 Returns true if this affine map is an identity affine map on the symbol identifiers.
bool isMinorIdentity () const
 Returns true if this affine map is a minor identity, i.e.
SmallVector< unsignedgetBroadcastDims () const
 Returns the list of broadcast dimensions (i.e.
bool isMinorIdentityWithBroadcasting (SmallVectorImpl< unsigned > *broadcastedDims=nullptr) const
 Returns true if this affine map is a minor identity up to broadcasted dimensions which are indicated by value 0 in the result.
bool isPermutationOfMinorIdentityWithBroadcasting (SmallVectorImpl< unsigned > &permutedDims) const
 Return true if this affine map can be converted to a minor identity with broadcast by doing a permute.
bool isEmpty () const
 Returns true if this affine map is an empty map, i.e., () -> ().
bool isSingleConstant () const
 Returns true if this affine map is a single result constant function.
bool isConstant () const
 Returns true if this affine map has only constant results.
int64_t getSingleConstantResult () const
 Returns the constant result of this map.
SmallVector< int64_tgetConstantResults () const
 Returns the constant results of this map.
void print (raw_ostream &os) const
void dump () const
unsigned getNumDims () const
unsigned getNumSymbols () const
unsigned getNumResults () const
unsigned getNumInputs () const
ArrayRef< AffineExprgetResults () const
AffineExpr getResult (unsigned idx) const
unsigned getDimPosition (unsigned idx) const
 Extracts the position of the dimensional expression at the given result, when the caller knows it is safe to do so.
std::optional< unsignedgetResultPosition (AffineExpr input) const
 Extracts the first result position where input dimension resides.
bool isFunctionOfDim (unsigned position) const
 Return true if any affine expression involves AffineDimExpr position.
bool isFunctionOfSymbol (unsigned position) const
 Return true if any affine expression involves AffineSymbolExpr position.
void walkExprs (llvm::function_ref< void(AffineExpr)> callback) const
 Walk all of the AffineExpr's in this mapping.
AffineMap replaceDimsAndSymbols (ArrayRef< AffineExpr > dimReplacements, ArrayRef< AffineExpr > symReplacements, unsigned numResultDims, unsigned numResultSyms) const
 This method substitutes any uses of dimensions and symbols (e.g.
AffineMap replace (AffineExpr expr, AffineExpr replacement, unsigned numResultDims, unsigned numResultSyms) const
 Sparse replace method.
AffineMap replace (const DenseMap< AffineExpr, AffineExpr > &map) const
 Sparse replace method.
AffineMap replace (const DenseMap< AffineExpr, AffineExpr > &map, unsigned numResultDims, unsigned numResultSyms) const
 Sparse replace method.
AffineMap shiftDims (unsigned shift, unsigned offset=0) const
 Replace dims[offset ... numDims) by dims[offset + shift ... shift + numDims).
AffineMap shiftSymbols (unsigned shift, unsigned offset=0) const
 Replace symbols[offset ... numSymbols) by symbols[offset + shift ... shift + numSymbols).
AffineMap dropResult (int64_t pos) const
 Returns a new AffineMap with the same number of dims and symbols and one less result at pos, dropped.
AffineMap dropResults (ArrayRef< int64_t > positions) const
AffineMap dropResults (const llvm::SmallBitVector &positions) const
AffineMap insertResult (AffineExpr expr, unsigned pos) const
 Returns a new AffineMap with the same number of dims and symbols and an extra result inserted at pos.
LogicalResult constantFold (ArrayRef< Attribute > operandConstants, SmallVectorImpl< Attribute > &results, bool *hasPoison=nullptr) const
 Folds the results of the application of an affine map on the provided operands to a constant if possible.
AffineMap partialConstantFold (ArrayRef< Attribute > operandConstants, SmallVectorImpl< int64_t > *results=nullptr, bool *hasPoison=nullptr) const
 Propagates the constant operands into this affine map.
AffineMap compose (AffineMap map) const
 Returns the AffineMap resulting from composing this with map.
SmallVector< int64_t, 4 > compose (ArrayRef< int64_t > values) const
 Applies composition by the dims of this to the integer values and returns the resulting values.
size_t getNumOfZeroResults () const
 Returns the number of "zero" results (constant values == 0) in this map.
AffineMap dropZeroResults ()
 Returns the AffineMap resulting from removing "zero" results (constant values == 0) from this map.
bool isProjectedPermutation (bool allowZeroInResults=false) const
 Returns true if the AffineMap represents a subset (i.e.
bool isPermutation () const
 Returns true if the AffineMap represents a symbol-less permutation map.
AffineMap getSubMap (ArrayRef< unsigned > resultPos) const
 Returns the map consisting of the resultPos subset.
AffineMap getSliceMap (unsigned start, unsigned length) const
 Returns the map consisting of length expressions starting from start.
AffineMap getMajorSubMap (unsigned numResults) const
 Returns the map consisting of the most major numResults results.
AffineMap getMinorSubMap (unsigned numResults) const
 Returns the map consisting of the most minor numResults results.
uint64_t getLargestKnownDivisorOfMapExprs ()
 Get the largest known divisor of all map expressions.
friend::llvm::hash_code hash_value (AffineMap arg)
const voidgetAsOpaquePointer () const
 Methods supporting C API.

Static Public Member Functions

static AffineMap get (MLIRContext *context)
 Returns a zero result affine map with no dimensions or symbols: () -> ().
static AffineMap get (unsigned dimCount, unsigned symbolCount, MLIRContext *context)
 Returns a zero result affine map with dimCount dimensions and symbolCount symbols, e.g.: (...) -> ().
static AffineMap get (unsigned dimCount, unsigned symbolCount, AffineExpr result)
 Returns an affine map with dimCount dimensions and symbolCount mapping to a single output dimension.
static AffineMap get (unsigned dimCount, unsigned symbolCount, ArrayRef< AffineExpr > results, MLIRContext *context)
 Returns an affine map with dimCount dimensions and symbolCount mapping to the given results.
static AffineMap getConstantMap (int64_t val, MLIRContext *context)
 Returns a single constant result affine map.
static AffineMap getMultiDimIdentityMap (unsigned numDims, MLIRContext *context)
 Returns an AffineMap with 'numDims' identity result dim exprs.
static AffineMap getMinorIdentityMap (unsigned dims, unsigned results, MLIRContext *context)
 Returns an identity affine map (d0, ..., dn) -> (dp, ..., dn) on the most minor dimensions.
static AffineMap getFilteredIdentityMap (MLIRContext *ctx, unsigned numDims, llvm::function_ref< bool(AffineDimExpr)> keepDimFilter)
 Returns an identity affine map with numDims input dimensions and filtered results using keepDimFilter.
static AffineMap getPermutationMap (ArrayRef< unsigned > permutation, MLIRContext *context)
 Returns an AffineMap representing a permutation.
static AffineMap getPermutationMap (ArrayRef< int64_t > permutation, MLIRContext *context)
static AffineMap getMultiDimMapWithTargets (unsigned numDims, ArrayRef< unsigned > targets, MLIRContext *context)
 Returns an affine map with numDims input dimensions and results specified by targets.
static SmallVector< AffineMap, 4 > inferFromExprList (ArrayRef< ArrayRef< AffineExpr > > exprsList, MLIRContext *context)
 Returns a vector of AffineMaps; each with as many results as exprs.size(), as many dims as the largest dim in exprs and as many symbols as the largest symbol in exprs.
static SmallVector< AffineMap, 4 > inferFromExprList (ArrayRef< SmallVector< AffineExpr, 4 > > exprsList, MLIRContext *context)
static AffineMap getFromOpaquePointer (const void *pointer)

Detailed Description

A multi-dimensional affine map Affine map's are immutable like Type's, and they are uniqued.

Eg: (d0, d1) -> (d0/128, d0 mod 128, d1) The names used (d0, d1) don't matter - it's the mathematical function that is unique to this affine map.

Definition at line 46 of file AffineMap.h.

Member Typedef Documentation

◆ ImplType

Constructor & Destructor Documentation

◆ AffineMap() [1/2]

◆ AffineMap() [2/2]

mlir::AffineMap::AffineMap ( ImplType * map)
inlineexplicit

Definition at line 51 of file AffineMap.h.

Member Function Documentation

◆ compose() [1/2]

AffineMap AffineMap::compose ( AffineMap map) const

Returns the AffineMap resulting from composing this with map.

The resulting AffineMap has as many AffineDimExpr as map and as many AffineSymbolExpr as the concatenation of this and map (in which case the symbols of this map come first).

Prerequisites: The maps are composable, i.e. that the number of AffineDimExpr of this matches the number of results of map.

Example: map1: (d0, d1)[s0, s1] -> (d0 + 1 + s1, d1 - 1 - s0) map2: (d0)[s0] -> (d0 + s0, d0 - s0) map1.compose(map2): (d0)[s0, s1, s2] -> (d0 + s1 + s2 + 1, d0 - s0 - s2 - 1)

Definition at line 552 of file AffineMap.cpp.

References AffineMap(), mlir::AffineExpr::compose(), get(), mlir::getAffineDimExpr(), mlir::getAffineSymbolExpr(), getContext(), getNumDims(), getNumSymbols(), and getResults().

Referenced by mlir::linalg::computePaddedShape(), mlir::expandDimsToRank(), mlir::sparse_tensor::foreachInSparseConstant(), mlir::linalg::fuseElementwiseOps(), getIndexingMapOfProducerOperandsInCoordinatesOfFusedOp(), mlir::vector::inferTransferOpMaskType(), insertParallelDim(), mlir::linalg::interchangeGenericOp(), scaleReductionDim(), translateMap(), transposeOneLinalgOperandAndReplace(), vectorizeAsLinalgGeneric(), and verifyOutputShape().

◆ compose() [2/2]

SmallVector< int64_t, 4 > AffineMap::compose ( ArrayRef< int64_t > values) const

Applies composition by the dims of this to the integer values and returns the resulting values.

this must be symbol-less.

Definition at line 576 of file AffineMap.cpp.

References mlir::getAffineConstantExpr(), getContext(), getNumResults(), getNumSymbols(), and getResults().

◆ constantFold()

LogicalResult AffineMap::constantFold ( ArrayRef< Attribute > operandConstants,
SmallVectorImpl< Attribute > & results,
bool * hasPoison = nullptr ) const

Folds the results of the application of an affine map on the provided operands to a constant if possible.

Returns false if the folding happens, true otherwise.

Definition at line 430 of file AffineMap.cpp.

References getContext(), partialConstantFold(), and success().

Referenced by foldLoopBounds().

◆ dropResult()

AffineMap mlir::AffineMap::dropResult ( int64_t pos) const
inline

Returns a new AffineMap with the same number of dims and symbols and one less result at pos, dropped.

Definition at line 293 of file AffineMap.h.

References AffineMap(), and dropResults().

Referenced by mlir::linalg::splitReductionByScaling().

◆ dropResults() [1/2]

AffineMap mlir::AffineMap::dropResults ( ArrayRef< int64_t > positions) const
inline

Definition at line 299 of file AffineMap.h.

References AffineMap(), get(), getContext(), getNumDims(), getNumSymbols(), and getResults().

Referenced by dropResult(), and mlir::expandDimsToRank().

◆ dropResults() [2/2]

AffineMap AffineMap::dropResults ( const llvm::SmallBitVector & positions) const

Definition at line 543 of file AffineMap.cpp.

References AffineMap(), get(), getContext(), getNumDims(), getNumSymbols(), and getResults().

◆ dropZeroResults()

AffineMap AffineMap::dropZeroResults ( )

Returns the AffineMap resulting from removing "zero" results (constant values == 0) from this map.

Example:

  • For (d0, d1) -> (d0, d1, 0) returns (d0, d1) -> (d0, d1)
  • For (d0, d1, d2) -> (d0, d1) returns (d0, d1, d2) -> (d0, d1)
  • For (d0, d1, d2) -> (d0, 0, d1, 0, d2) returns (d0, d1, d2) -> (d0, d1, d2)

Definition at line 600 of file AffineMap.cpp.

References AffineMap(), get(), getContext(), getNumDims(), getNumSymbols(), and getResults().

◆ dump()

void AffineMap::dump ( ) const

Definition at line 4003 of file AsmPrinter.cpp.

References print().

◆ get() [1/4]

AffineMap AffineMap::get ( MLIRContext * context)
static

Returns a zero result affine map with no dimensions or symbols: () -> ().

Definition at line 1224 of file MLIRContext.cpp.

References AffineMap(), and mlir::OperationName::getImpl().

Referenced by mlir::ValueBoundsConstraintSet::addBound(), addConstToResults(), mlir::scf::addLoopRangeConstraints(), adjustMap(), mlir::ValueBoundsConstraintSet::areOverlappingSlices(), augmentMapAndBounds(), broadcastDynamicDimension(), mlir::tensor::bubbleUpPadSlice(), calculateImplicitMap(), canonicalizeMapExprAndTermOrder(), compose(), composeMultiResultAffineMap(), composeSetAndOperands(), compressUnusedListImpl(), mlir::ValueBoundsConstraintSet::computeBound(), mlir::ValueBoundsConstraintSet::computeConstantDelta(), computeIteratorTypesAndIndexingMaps(), computeMemoryOpIndices(), mlir::linalg::computePaddedShape(), mlir::concatAffineMaps(), constructTiledIndexSetHyperRect(), createMask(), createNewDynamicSizes(), createPrivateMemRef(), createSubApply(), mlir::affine::decompose(), mlir::affine::AffineValueMap::difference(), doubleBuffer(), dropResults(), dropResults(), dropUnitExtentFromOperandMetadata(), dropZeroResults(), emitElementwiseComputation(), mlir::linalg::extractOrIdentityMap(), forEachIJPairInAllBuffers(), mlir::affine::fullyComposeAndComputeConstantDelta(), generateCopy(), genReplaceDimToLvlMap(), mlir::MutableAffineMap::getAffineMap(), getBoundedTileSize(), getBroadcastingMap(), getCleanupLoopLowerBound(), mlir::tensor::getCollapsedExtractSliceInfo(), getCollapsedOutputDimFromInputShape(), mlir::Builder::getConstantAffineMap(), mlir::affine::MemRefRegion::getConstantBoundingSizeAndShape(), mlir::FlatLinearConstraints::getConstantBoundOnDimSize(), getConstantMap(), mlir::Builder::getDimIdentityMap(), mlir::sparse_tensor::ir_detail::DimLvlMap::getDimToLvlMap(), mlir::Builder::getEmptyAffineMap(), getIndexingMapInExpandedOp(), getIndicesForAccess(), mlir::affine::FlatAffineValueConstraints::getIneqAsAffineValueMap(), mlir::memref::getLinearizedMemRefOffsetAndSize(), mlir::FlatLinearConstraints::getLowerAndUpperBound(), mlir::sparse_tensor::ir_detail::DimLvlMap::getLvlToDimMap(), getMinorIdentityMap(), getMultiDimIdentityMap(), mlir::Builder::getMultiDimIdentityMap(), getMultiDimMapWithTargets(), getRegisterIndexToTileOffsetMap(), mlir::Builder::getShiftedAffineMap(), mlir::Builder::getSingleDimShiftAffineMap(), mlir::FlatLinearConstraints::getSliceBounds(), getSliceMap(), getSubMap(), mlir::Builder::getSymbolIdentityMap(), mlir::getSymbolLessAffineMaps(), mlir::vector::getTransferMinorIdentityMap(), mlir::affine::getTripCountMapAndOperands(), inferFromExprList(), insertResult(), mlir::inverseAndBroadcastProjectedPermutation(), mlir::sparse_tensor::inverseBlockSparsity(), mlir::inversePermutation(), mlir::isBatchMatvec(), mlir::isBatchVecmat(), mlir::isColumnMajorMatmul(), mlir::isMatvec(), mlir::isRowMajorBatchMatmul(), mlir::isRowMajorMatmul(), isTransposeMatrixLoadMap(), mlir::isVecmat(), mlir::affine::loopUnrollJamByFactor(), mlir::linalg::lowerPack(), makeCanonicalAffineApplies(), makePermutationMap(), mlir::makeStridedLinearLayoutMap(), DeduplicateAffineMinMaxExpressions< T >::matchAndRewrite(), MergeAffineMinMaxOp< T >::matchAndRewrite(), mlirAffineMapEmptyGet(), mlirAffineMapGet(), mlirAffineMapZeroResultGet(), partialConstantFold(), processParallelLoop(), projectCommonImpl(), mlir::removeDuplicateExprs(), mlir::affine::reorderOperandsByHoistability(), replace(), replace(), replaceDimsAndSymbols(), mlir::affine::resolveIndicesIntoOpWithOffsetsAndStrides(), mlir::linalg::rewriteInIm2Col(), mlir::linalg::rewriteInIm2Col(), mlir::linalg::rewriteInIm2Col(), mlir::linalg::rewriteInIm2Col(), setInterTileBoundsParametric(), setIntraTileBoundsParametric(), shiftDims(), shiftSymbols(), mlir::simplifyAffineMap(), simplifyAffineMinMaxOp(), simplifyMapWithOperands(), simplifyMinOrMaxExprWithOperands(), sliceTransferIndices(), mlir::linalg::splitReduction(), mlir::linalg::splitReductionByScaling(), transferReadSupportsMMAMatrixType(), mlir::ValueBoundsConstraintSet::Variable::Variable(), vectorizeTensorExtract(), and verifyOutputShape().

◆ get() [2/4]

AffineMap AffineMap::get ( unsigned dimCount,
unsigned symbolCount,
AffineExpr result )
static

Returns an affine map with dimCount dimensions and symbolCount mapping to a single output dimension.

Definition at line 1233 of file MLIRContext.cpp.

References AffineMap(), mlir::OperationName::getImpl(), result, and willBeValidAffineMap().

◆ get() [3/4]

AffineMap AffineMap::get ( unsigned dimCount,
unsigned symbolCount,
ArrayRef< AffineExpr > results,
MLIRContext * context )
static

Returns an affine map with dimCount dimensions and symbolCount mapping to the given results.

Definition at line 1239 of file MLIRContext.cpp.

References AffineMap(), mlir::OperationName::getImpl(), and willBeValidAffineMap().

◆ get() [4/4]

AffineMap AffineMap::get ( unsigned dimCount,
unsigned symbolCount,
MLIRContext * context )
static

Returns a zero result affine map with dimCount dimensions and symbolCount symbols, e.g.: (...) -> ().

Definition at line 1228 of file MLIRContext.cpp.

References AffineMap(), and mlir::OperationName::getImpl().

◆ getAsOpaquePointer()

const void * mlir::AffineMap::getAsOpaquePointer ( ) const
inline

Methods supporting C API.

Definition at line 410 of file AffineMap.h.

◆ getBroadcastDims()

SmallVector< unsigned > AffineMap::getBroadcastDims ( ) const

Returns the list of broadcast dimensions (i.e.

dims indicated by value 0 in the result). Ex:

  • (d0, d1, d2) -> (0, d1) gives [0]
  • (d0, d1, d2) -> (d2, d1) gives []
  • (d0, d1, d2, d4) -> (d0, 0, d1, 0) gives [1, 3]

Definition at line 157 of file AffineMap.cpp.

References getResults().

Referenced by foldTransferInBoundsAttribute().

◆ getConstantMap()

AffineMap AffineMap::getConstantMap ( int64_t val,
MLIRContext * context )
static

Returns a single constant result affine map.

Definition at line 124 of file AffineMap.cpp.

References AffineMap(), get(), and mlir::getAffineConstantExpr().

Referenced by mlir::affine::getTripCountMapAndOperands(), and mlirAffineMapConstantGet().

◆ getConstantResults()

SmallVector< int64_t > AffineMap::getConstantResults ( ) const

Returns the constant results of this map.

This method asserts that the map has all constant results.

Definition at line 382 of file AffineMap.cpp.

References getResults(), isConstant(), and result.

◆ getContext()

◆ getDimPosition()

unsigned AffineMap::getDimPosition ( unsigned idx) const

◆ getFilteredIdentityMap()

AffineMap AffineMap::getFilteredIdentityMap ( MLIRContext * ctx,
unsigned numDims,
llvm::function_ref< bool(AffineDimExpr)> keepDimFilter )
static

Returns an identity affine map with numDims input dimensions and filtered results using keepDimFilter.

If keepDimFilter returns true for a dimension, the dimension is kept in the affine map results. Otherwise, the dimension is dropped from the results.

Examples:

  • getFilteredIdentityMap(4, [false, true, false, true]) -> affine_map<(d0, d1, d2, d3) -> (d1, d3)>
  • getFilteredIdentityMap(3, [false, false, true]) -> affine_map<(d0, d1, d2) -> (d2)>

Definition at line 138 of file AffineMap.cpp.

References AffineMap(), and getMultiDimIdentityMap().

Referenced by buildVectorWrite().

◆ getFromOpaquePointer()

AffineMap mlir::AffineMap::getFromOpaquePointer ( const void * pointer)
inlinestatic

Definition at line 413 of file AffineMap.h.

References AffineMap().

◆ getLargestKnownDivisorOfMapExprs()

uint64_t AffineMap::getLargestKnownDivisorOfMapExprs ( )

Get the largest known divisor of all map expressions.

For eg: for (d0, d1) -> (8*d0 + 4, 4*d1 + 2), the result is 2. In the case of maps with no expressions or all zero constant expressions, the largest known divisor is trivially the max uint64_t value.

Definition at line 319 of file AffineMap.cpp.

References getResults().

◆ getMajorSubMap()

AffineMap AffineMap::getMajorSubMap ( unsigned numResults) const

Returns the map consisting of the most major numResults results.

Returns the null AffineMap if numResults == 0. Returns *this if numResults >= this->getNumResults().

Definition at line 660 of file AffineMap.cpp.

References AffineMap(), getNumResults(), and getSliceMap().

◆ getMinorIdentityMap()

AffineMap AffineMap::getMinorIdentityMap ( unsigned dims,
unsigned results,
MLIRContext * context )
static

Returns an identity affine map (d0, ..., dn) -> (dp, ..., dn) on the most minor dimensions.

Definition at line 131 of file AffineMap.cpp.

References AffineMap(), get(), getMultiDimIdentityMap(), and getResults().

Referenced by mlir::vector::getTransferMinorIdentityMap(), isMinorIdentity(), mlirAffineMapMinorIdentityGet(), and vectorizeTensorExtract().

◆ getMinorSubMap()

AffineMap AffineMap::getMinorSubMap ( unsigned numResults) const

Returns the map consisting of the most minor numResults results.

Returns the null AffineMap if numResults == 0. Returns *this if numResults >= this->getNumResults().

Definition at line 668 of file AffineMap.cpp.

References AffineMap(), getNumResults(), and getSliceMap().

◆ getMultiDimIdentityMap()

◆ getMultiDimMapWithTargets()

AffineMap AffineMap::getMultiDimMapWithTargets ( unsigned numDims,
ArrayRef< unsigned > targets,
MLIRContext * context )
static

Returns an affine map with numDims input dimensions and results specified by targets.

Examples:

  • getMultiDimMapWithTargets(3, [0, 2, 1]) -> affine_map<(d0, d1, d2) -> (d0, d2, d1)>
  • getMultiDimMapWithTargets(3, [2, 1]) -> affine_map<(d0, d1, d2) -> (d2, d1)>

Definition at line 276 of file AffineMap.cpp.

References AffineMap(), get(), mlir::getAffineDimExpr(), and result.

Referenced by getPermutationMap().

◆ getNumDims()

unsigned AffineMap::getNumDims ( ) const

Definition at line 390 of file AffineMap.cpp.

Referenced by mlir::FlatLinearConstraints::addBound(), addConstToResults(), adjustMap(), mlir::alignAffineMapWithValues(), augmentMapAndBounds(), buildArithValue(), canonicalizeMapExprAndTermOrder(), collectInadmissInfo(), compose(), composeAffineMapAndOperands(), mlir::FlatLinearConstraints::composeMatchingMap(), composeMultiResultAffineMap(), composeSetAndOperands(), compressUnusedListImpl(), mlir::affine::MemRefRegion::compute(), computeMemoryOpIndices(), mlir::linalg::computePaddedShape(), constructTiledIndexSetHyperRect(), createSubApply(), mlir::affine::decompose(), mlir::shard::detail::defaultGetShardingOption(), dropResults(), dropResults(), dropZeroResults(), extractLoadCoordsForComposite(), findPermutationsIndexingOperand(), mlir::foldAttributesIntoMap(), genReplaceDimToLvlMap(), getCleanupLoopLowerBound(), getConstDifference(), mlir::getFlattenedAffineExprs(), getIndicesForAccess(), mlir::getMultiAffineFunctionFromMap(), mlir::affine::getRelationFromMap(), mlir::affine::getRelationFromMap(), getSharding(), mlir::Builder::getShiftedAffineMap(), getSliceMap(), getStridesAndOffset(), getSubMap(), getXferIndices(), inferIteratorsFromOutMap(), mlir::ValueBoundsConstraintSet::insert(), insertParallelDim(), insertResult(), mlir::inversePermutation(), isEmpty(), isIdentity(), isMinorIdentity(), isMinorIdentityWithBroadcasting(), isPermutation(), isTransposeMatrixLoadMap(), makeCanonicalAffineApplies(), DeduplicateAffineMinMaxExpressions< T >::matchAndRewrite(), MergeAffineMinMaxOp< T >::matchAndRewrite(), mlir::affine::materializeComputedBound(), packLinalgMetadataOnce(), partialConstantFold(), mlir::AsmPrinter::Impl::printAffineMap(), printBound(), printMinMaxBound(), projectCommonImpl(), mlir::arith::reifyValueBound(), remainsLegalAfterInline(), mlir::removeDuplicateExprs(), mlir::affine::reorderOperandsByHoistability(), replaceAffineMinBoundingBoxExpression(), replaceDimOrSym(), mlir::MutableAffineMap::reset(), scaleReductionDim(), setInterTileBoundsParametric(), setIntraTileBoundsParametric(), shiftDims(), shiftSymbols(), mlir::simplifyAffineMap(), simplifyAffineMinMaxOp(), mlir::affine::simplifyConstrainedMinMaxOp(), simplifyMapWithOperands(), simplifyMinOrMaxExprWithOperands(), mlir::linalg::splitReduction(), transferReadSupportsMMAMatrixType(), translateMap(), transposePackedMatmul(), mlir::detail::verifyAffineMapAsLayout(), verifyMemoryOpIndexing(), and mlir::linalg::detail::verifyStructuredOpInterface().

◆ getNumInputs()

unsigned AffineMap::getNumInputs ( ) const

◆ getNumOfZeroResults()

size_t AffineMap::getNumOfZeroResults ( ) const

Returns the number of "zero" results (constant values == 0) in this map.

Example:

  • For (d0, d1) -> (d0, d1, 0) returns 1
  • For (d0, d1, d2) -> (d0, d1) returns 0
  • For (d0, d1, d2) -> (d0, 0, d1, 0, d2) returns 2

Definition at line 589 of file AffineMap.cpp.

References getResults().

◆ getNumResults()

unsigned AffineMap::getNumResults ( ) const

Definition at line 398 of file AffineMap.cpp.

References getResults().

Referenced by mlir::FlatLinearConstraints::addBound(), mlir::affine::FlatAffineValueConstraints::addDomainFromSliceMaps(), mlir::affine::FlatAffineValueConstraints::addSliceBounds(), adjustMap(), mlir::applyPermutationMap(), mlir::linalg::areElementwiseOpsFusable(), buildArithValue(), mlir::affine::buildSliceTripCountMap(), calculateExpandedAccessIndices(), canonicalizeMapExprAndTermOrder(), collectInadmissInfo(), compose(), composeAffineMapAndOperands(), mlir::FlatLinearConstraints::composeMatchingMap(), composeMultiResultAffineMap(), mlir::linalg::computePaddedShape(), constructTiledIndexSetHyperRect(), createInlinedCompareImplementation(), createMask(), foldLoopBounds(), forEachIJPairInAllBuffers(), forEachIJPairInXs(), mlir::sparse_tensor::foreachInSparseConstant(), generateCopy(), genReplaceDimToLvlMap(), getCleanupLoopLowerBound(), getConstDifference(), getDimPosition(), getFirstResultIndexFunctionOf(), mlir::getFlattenedAffineExprs(), getIndicesForAccess(), mlir::affine::getLargestDivisorOfTripCount(), getMajorSubMap(), getMinorSubMap(), mlir::getMultiAffineFunctionFromMap(), getReductionIndex(), mlir::affine::getRelationFromMap(), mlir::affine::getRelationFromMap(), getResultIndex(), getResultIndex(), getResultIndex(), getResultPosition(), mlir::Builder::getShiftedAffineMap(), mlir::FlatLinearConstraints::getSliceBounds(), getStridesAndOffset(), mlir::ValueBoundsConstraintSet::insert(), mlir::inverseAndBroadcastProjectedPermutation(), mlir::sparse_tensor::inverseBlockSparsity(), mlir::inversePermutation(), mlir::isBatchMatvec(), mlir::isBatchVecmat(), isBroadcasted(), mlir::isColumnMajorMatmul(), mlir::linalg::isDimSequencePreserved(), isEmpty(), isIdentity(), mlir::isMatvec(), isMinorIdentity(), isMinorIdentityWithBroadcasting(), isPermutation(), isPermutationOfMinorIdentityWithBroadcasting(), isProjectedPermutation(), mlir::isRowMajorBatchMatmul(), mlir::isRowMajorMatmul(), isSingleConstant(), isSymbolIdentity(), isTiled(), isTransposed(), mlir::isVecmat(), makeCanonicalAffineApplies(), mlir::affine::makeComposedFoldedAffineApply(), mlir::affine::makeComposedFoldedMultiResultAffineApply(), mlir::linalg::makeTiledLoopRanges(), DeduplicateAffineMinMaxExpressions< T >::matchAndRewrite(), ContractOpToElementwise::matchAndRewriteMaskableOp(), packLinalgMetadataOnce(), partialConstantFold(), printBound(), projectCommonImpl(), replace(), replace(), replace(), replaceAffineMinBoundingBoxExpression(), replaceDimOrSym(), replaceDimsAndSymbols(), setInterTileBoundsParametric(), setIntraTileBoundsParametric(), simplifyAffineMinMaxOp(), mlir::affine::simplifyConstrainedMinMaxOp(), simplifyMapWithOperands(), simplifyMinOrMaxExprWithOperands(), mlir::linalg::splitReduction(), transposePackedMatmul(), verifyInputMaps(), verifyMemoryOpIndexing(), verifyOutputMap(), and verifyTransferOp().

◆ getNumSymbols()

unsigned AffineMap::getNumSymbols ( ) const

Definition at line 394 of file AffineMap.cpp.

Referenced by mlir::FlatLinearConstraints::addBound(), addConstToResults(), mlir::alignAffineMapWithValues(), augmentMapAndBounds(), canonicalizeMapExprAndTermOrder(), compose(), compose(), mlir::FlatLinearConstraints::composeMatchingMap(), composeSetAndOperands(), compressUnusedListImpl(), mlir::affine::MemRefRegion::compute(), computeMemoryOpIndices(), constructTiledIndexSetHyperRect(), createNewDynamicSizes(), createSubApply(), mlir::affine::decompose(), dropResults(), dropResults(), dropUnitExtentFromOperandMetadata(), dropZeroResults(), mlir::foldAttributesIntoMap(), getCleanupLoopLowerBound(), getConstDifference(), mlir::getFlattenedAffineExprs(), getIndexingMapInExpandedOp(), getIndicesForAccess(), mlir::getMultiAffineFunctionFromMap(), mlir::Builder::getShiftedAffineMap(), getSliceMap(), getStridesAndOffset(), getSubMap(), mlir::sparse_tensor::inferLvlToDim(), insertResult(), mlir::inversePermutation(), isEmpty(), isProjectedPermutation(), isSymbolIdentity(), makeCanonicalAffineApplies(), DeduplicateAffineMinMaxExpressions< T >::matchAndRewrite(), MergeAffineMinMaxOp< T >::matchAndRewrite(), partialConstantFold(), mlir::AsmPrinter::Impl::printAffineMap(), printBound(), projectCommonImpl(), remainsLegalAfterInline(), mlir::removeDuplicateExprs(), replaceAffineMinBoundingBoxExpression(), replaceDimOrSym(), mlir::MutableAffineMap::reset(), setInterTileBoundsParametric(), setIntraTileBoundsParametric(), shiftDims(), shiftSymbols(), mlir::simplifyAffineMap(), simplifyAffineMinMaxOp(), mlir::affine::simplifyConstrainedMinMaxOp(), simplifyMapWithOperands(), simplifyMinOrMaxExprWithOperands(), and verifyTransferOp().

◆ getPermutationMap() [1/2]

AffineMap AffineMap::getPermutationMap ( ArrayRef< int64_t > permutation,
MLIRContext * context )
static

Definition at line 269 of file AffineMap.cpp.

References AffineMap(), and getPermutationMap().

◆ getPermutationMap() [2/2]

AffineMap AffineMap::getPermutationMap ( ArrayRef< unsigned > permutation,
MLIRContext * context )
static

Returns an AffineMap representing a permutation.

The permutation is expressed as a non-empty vector of integers. E.g. the permutation (i,j,k) -> (j,k,i) will be expressed with permutation = [1,2,0]. All values in permutation must be integers, in the range 0..permutation.size()-1 without duplications (i.e. [1,1,2] is an invalid permutation).

Definition at line 260 of file AffineMap.cpp.

References AffineMap(), and getMultiDimMapWithTargets().

Referenced by convertTransferReadOp(), foldTransferInBoundsAttribute(), getPermutationMap(), mlir::linalg::interchangeGenericOp(), interchangeGenericOpPrecondition(), isTransposed(), VectorizationState::maskOperation(), mlirAffineMapPermutationGet(), tileLinalgOpImpl(), transferReadSupportsMMAMatrixType(), transposeOneLinalgOperandAndReplace(), and vectorizeLinalgIndex().

◆ getResult()

◆ getResultPosition()

std::optional< unsigned > AffineMap::getResultPosition ( AffineExpr input) const

Extracts the first result position where input dimension resides.

Returns std::nullopt if input is not a dimension expression or cannot be found in results.

Definition at line 415 of file AffineMap.cpp.

References getNumResults(), and getResult().

◆ getResults()

ArrayRef< AffineExpr > AffineMap::getResults ( ) const

Definition at line 403 of file AffineMap.cpp.

Referenced by addConstToResults(), mlir::applyPermutationMap(), areResultExprsSubsetOf(), augmentMapAndBounds(), canonicalizeMapExprAndTermOrder(), mlir::AffineExpr::compose(), compose(), compose(), composeSetAndOperands(), compressUnusedListImpl(), computeMemoryOpIndices(), mlir::linalg::computePaddedShape(), constructTiledIndexSetHyperRect(), createNewDynamicSizes(), mlir::shard::detail::defaultGetShardingOption(), dropResults(), dropResults(), mlir::linalg::dropUnitDims(), dropUnitExtentFromOperandMetadata(), dropZeroResults(), findPermutationsIndexingOperand(), forEachIJPairInAllBuffers(), fuse(), genReplaceDimToLvlMap(), mlir::sparse_tensor::getBlockSize(), getBroadcastDims(), getCollapsedOutputDimFromInputShape(), getConstantResults(), mlir::affine::getConstantTripCount(), getDomainReassociation(), getExpandedShapeAndType(), mlir::getFlattenedAffineExprs(), getIndexingMapInExpandedOp(), getIndicesForAccess(), mlir::affine::getLargestDivisorOfTripCount(), getLargestKnownDivisorOfMapExprs(), getMangledSortHelperFuncName(), getMinorIdentityMap(), getNumNonTrivialIdxExpOnSparseLvls(), getNumOfZeroResults(), getNumResults(), getPreservedDims(), getReassociationForExpansion(), getResult(), getShapeDefiningLoopRange(), getSharding(), getSharding(), mlir::Builder::getShiftedAffineMap(), getSliceMap(), getTileSizePos(), hasAtMostOneResultFunctionOfDim(), inferIteratorsFromOutMap(), insertResult(), mlir::inversePermutation(), mlir::sparse_tensor::isBlockSparsity(), isConstant(), mlir::linalg::isDimSequencePreserved(), isFunctionOfDim(), isFunctionOfSymbol(), isIdentity(), isMinorIdentityWithBroadcasting(), isNormalizedMemRefDynamicDim(), isPermutationOfMinorIdentityWithBroadcasting(), isProjectedPermutation(), isSymbolIdentity(), makeCanonicalAffineApplies(), DeduplicateAffineMinMaxExpressions< T >::matchAndRewrite(), MergeAffineMinMaxOp< T >::matchAndRewrite(), mlir::affine::AffineValueMap::operator==(), partialConstantFold(), permuteValues(), mlir::AsmPrinter::Impl::printAffineMap(), projectCommonImpl(), mlir::removeDuplicateExprs(), replace(), replace(), replace(), replaceAffineDelinearizeIndexInverseExpression(), replaceAffineMinBoundingBoxExpression(), replaceDimsAndSymbols(), mlir::MutableAffineMap::reset(), setInterTileBoundsParametric(), setIntraTileBoundsParametric(), shiftDims(), shiftSymbols(), mlir::simplifyAffineMap(), simplifyMapWithOperands(), simplifyMinOrMaxExprWithOperands(), sliceTransferIndices(), verifyOutputShape(), verifyPermutationMap(), and walkExprs().

◆ getSingleConstantResult()

int64_t AffineMap::getSingleConstantResult ( ) const

Returns the constant result of this map.

This methods asserts that the map has a single constant result.

Definition at line 377 of file AffineMap.cpp.

References getResult(), and isSingleConstant().

Referenced by mlir::affine::FlatAffineValueConstraints::addAffineParallelOpDomain(), mlir::affine::materializeComputedBound(), and mlir::arith::reifyValueBound().

◆ getSliceMap()

AffineMap AffineMap::getSliceMap ( unsigned start,
unsigned length ) const

Returns the map consisting of length expressions starting from start.

Definition at line 655 of file AffineMap.cpp.

References AffineMap(), get(), getContext(), getNumDims(), getNumSymbols(), and getResults().

Referenced by getMajorSubMap(), getMinorSubMap(), printMinMaxBound(), and replaceAffineMinBoundingBoxExpression().

◆ getSubMap()

◆ hash_value()

friend::llvm::hash_code mlir::AffineMap::hash_value ( AffineMap arg)

References AffineMap().

◆ inferFromExprList() [1/2]

◆ inferFromExprList() [2/2]

SmallVector< AffineMap, 4 > AffineMap::inferFromExprList ( ArrayRef< SmallVector< AffineExpr, 4 > > exprsList,
MLIRContext * context )
static

Definition at line 314 of file AffineMap.cpp.

◆ insertResult()

AffineMap mlir::AffineMap::insertResult ( AffineExpr expr,
unsigned pos ) const
inline

Returns a new AffineMap with the same number of dims and symbols and an extra result inserted at pos.

Definition at line 315 of file AffineMap.h.

References AffineMap(), get(), getContext(), getNumDims(), getNumSymbols(), and getResults().

Referenced by insertParallelDim(), and packLinalgMetadataOnce().

◆ isConstant()

bool AffineMap::isConstant ( ) const

Returns true if this affine map has only constant results.

Definition at line 373 of file AffineMap.cpp.

References getResults().

Referenced by mlir::affine::FlatAffineValueConstraints::addAffineParallelOpDomain(), and getConstantResults().

◆ isEmpty()

bool AffineMap::isEmpty ( ) const

Returns true if this affine map is an empty map, i.e., () -> ().

Definition at line 365 of file AffineMap.cpp.

References getNumDims(), getNumResults(), and getNumSymbols().

Referenced by mlir::linalg::interchangeGenericOp(), mlir::inversePermutation(), and makeCanonicalAffineApplies().

◆ isFunctionOfDim()

bool mlir::AffineMap::isFunctionOfDim ( unsigned position) const
inline

Return true if any affine expression involves AffineDimExpr position.

Definition at line 221 of file AffineMap.h.

References getResults(), and mlir::AffineExpr::isFunctionOfDim().

Referenced by composeAffineMapAndOperands(), and replaceAffineDelinearizeIndexInverseExpression().

◆ isFunctionOfSymbol()

bool mlir::AffineMap::isFunctionOfSymbol ( unsigned position) const
inline

Return true if any affine expression involves AffineSymbolExpr position.

Definition at line 228 of file AffineMap.h.

References getResults(), and mlir::AffineExpr::isFunctionOfSymbol().

Referenced by composeAffineMapAndOperands(), and replaceAffineDelinearizeIndexInverseExpression().

◆ isIdentity()

bool AffineMap::isIdentity ( ) const

Returns true if this affine map is an identity affine map.

An identity affine map corresponds to an identity affine function on the dimensional identifiers.

Definition at line 341 of file AffineMap.cpp.

References getNumDims(), getNumResults(), and getResults().

Referenced by getStridesAndOffset().

◆ isMinorIdentity()

bool AffineMap::isMinorIdentity ( ) const

Returns true if this affine map is a minor identity, i.e.

an identity affine map (d0, ..., dn) -> (dp, ..., dn) on the most minor dimensions.

Definition at line 151 of file AffineMap.cpp.

References getContext(), getMinorIdentityMap(), getNumDims(), and getNumResults().

Referenced by transferReadSupportsMMAMatrixType().

◆ isMinorIdentityWithBroadcasting()

bool AffineMap::isMinorIdentityWithBroadcasting ( SmallVectorImpl< unsigned > * broadcastedDims = nullptr) const

Returns true if this affine map is a minor identity up to broadcasted dimensions which are indicated by value 0 in the result.

If broadcastedDims is not null, it will be populated with the indices of the broadcasted dimensions in the result array. Example: affine_map<(d0, d1, d2, d3, d4) -> (0, d2, 0, d4)> (broadcastedDims will contain [0, 2])

Definition at line 172 of file AffineMap.cpp.

References getNumDims(), getNumResults(), and getResults().

◆ isPermutation()

bool AffineMap::isPermutation ( ) const

◆ isPermutationOfMinorIdentityWithBroadcasting()

bool AffineMap::isPermutationOfMinorIdentityWithBroadcasting ( SmallVectorImpl< unsigned > & permutedDims) const

Return true if this affine map can be converted to a minor identity with broadcast by doing a permute.

Return a permutation (there may be several) to apply to get to a minor identity with broadcasts. Ex:

  • (d0, d1, d2) -> (0, d1) maps to minor identity (d1, 0 = d2) with perm = [1, 0] and broadcast d2
  • (d0, d1, d2) -> (d0, 0) cannot be mapped to a minor identity by permutation + broadcast
  • (d0, d1, d2, d3) -> (0, d1, d3) maps to minor identity (d1, 0 = d2, d3) with perm = [1, 0, 2] and broadcast d2
  • (d0, d1) -> (d1, 0, 0, d0) maps to minor identity (d0, d1) with extra leading broadcat dimensions. The map returned would be (0, 0, d0, d1) with perm = [3, 0, 1, 2]

Definition at line 212 of file AffineMap.cpp.

References getNumInputs(), getNumResults(), and getResults().

◆ isProjectedPermutation()

bool AffineMap::isProjectedPermutation ( bool allowZeroInResults = false) const

Returns true if the AffineMap represents a subset (i.e.

a projection) of a symbol-less permutation map. allowZeroInResults allows projected permutation maps with constant zero result expressions. TODO: Remove allowZeroInResults when constant zero result expressions are broadly supported.

Definition at line 611 of file AffineMap.cpp.

References getNumInputs(), getNumResults(), getNumSymbols(), and getResults().

Referenced by mlir::applyPermutationMap(), getDomainReassociation(), getPreservedDims(), inferIteratorsFromOutMap(), mlir::inverseAndBroadcastProjectedPermutation(), mlir::linalg::detail::isContractionInterfaceImpl(), mlir::linalg::isDimSequencePreserved(), isPermutation(), and reindexIndexingMap().

◆ isSingleConstant()

bool AffineMap::isSingleConstant ( ) const

Returns true if this affine map is a single result constant function.

Definition at line 369 of file AffineMap.cpp.

References getNumResults(), and getResult().

Referenced by getSingleConstantResult(), mlir::affine::materializeComputedBound(), and mlir::arith::reifyValueBound().

◆ isSymbolIdentity()

bool AffineMap::isSymbolIdentity ( ) const

Returns true if this affine map is an identity affine map on the symbol identifiers.

Definition at line 353 of file AffineMap.cpp.

References getNumResults(), getNumSymbols(), and getResults().

◆ operator bool()

mlir::AffineMap::operator bool ( ) const
inlineexplicit

Definition at line 132 of file AffineMap.h.

◆ operator!=()

bool mlir::AffineMap::operator!= ( AffineMap other) const
inline

Definition at line 134 of file AffineMap.h.

References AffineMap().

◆ operator==()

bool mlir::AffineMap::operator== ( AffineMap other) const
inline

Definition at line 133 of file AffineMap.h.

References AffineMap().

◆ partialConstantFold()

AffineMap AffineMap::partialConstantFold ( ArrayRef< Attribute > operandConstants,
SmallVectorImpl< int64_t > * results = nullptr,
bool * hasPoison = nullptr ) const

Propagates the constant operands into this affine map.

Operands are allowed to be null, at which point they are treated as non-constant. This does not change the number of symbols and dimensions. Returns a new map, which may be equal to the old map if no folding happened. If results is provided and if all expressions in the map were folded to constants, results will contain the values of these constants.

Definition at line 449 of file AffineMap.cpp.

References AffineMap(), get(), mlir::getAffineConstantExpr(), getContext(), getNumDims(), getNumInputs(), getNumResults(), getNumSymbols(), and getResults().

Referenced by constantFold().

◆ print()

void AffineMap::print ( raw_ostream & os) const

◆ replace() [1/3]

AffineMap AffineMap::replace ( AffineExpr expr,
AffineExpr replacement,
unsigned numResultDims,
unsigned numResultSyms ) const

Sparse replace method.

Apply AffineExpr::replace(expr, replacement) to each of the results and return a new AffineMap with the new results and with the specified number of dims and symbols.

Definition at line 511 of file AffineMap.cpp.

References AffineMap(), get(), getContext(), getNumResults(), getResults(), and replacement().

Referenced by replaceAffineDelinearizeIndexInverseExpression(), replaceAffineMinBoundingBoxExpression(), replaceDimOrSym(), scaleReductionDim(), mlir::affine::simplifyConstrainedMinMaxOp(), translateMap(), and mlir::ValueBoundsConstraintSet::Variable::Variable().

◆ replace() [2/3]

AffineMap AffineMap::replace ( const DenseMap< AffineExpr, AffineExpr > & map) const

Sparse replace method.

Apply AffineExpr::replace(map) to each of the results and return a new AffineMap with the new results and with inferred number of dims and symbols.

Definition at line 535 of file AffineMap.cpp.

References getContext(), getNumResults(), getResults(), and inferFromExprList().

◆ replace() [3/3]

AffineMap AffineMap::replace ( const DenseMap< AffineExpr, AffineExpr > & map,
unsigned numResultDims,
unsigned numResultSyms ) const

Sparse replace method.

Apply AffineExpr::replace(map) to each of the results and return a new AffineMap with the new results and with the specified number of dims and symbols.

Definition at line 524 of file AffineMap.cpp.

References AffineMap(), get(), getContext(), getNumResults(), and getResults().

◆ replaceDimsAndSymbols()

AffineMap AffineMap::replaceDimsAndSymbols ( ArrayRef< AffineExpr > dimReplacements,
ArrayRef< AffineExpr > symReplacements,
unsigned numResultDims,
unsigned numResultSyms ) const

This method substitutes any uses of dimensions and symbols (e.g.

dim#0 with dimReplacements[0]) in subexpressions and returns the modified expression mapping. Because this can be used to eliminate dims and symbols, the client needs to specify the number of dims and symbols in the result. The returned map always has the same number of results.

Definition at line 496 of file AffineMap.cpp.

References AffineMap(), get(), getContext(), getNumResults(), getResults(), and mlir::AffineExpr::replaceDimsAndSymbols().

Referenced by mlir::alignAffineMapWithValues(), composeAffineMapAndOperands(), mlir::linalg::dropUnitDims(), mlir::foldAttributesIntoMap(), mlir::affine::reorderOperandsByHoistability(), and mlir::ValueBoundsConstraintSet::Variable::Variable().

◆ shiftDims()

AffineMap mlir::AffineMap::shiftDims ( unsigned shift,
unsigned offset = 0 ) const
inline

◆ shiftSymbols()

AffineMap mlir::AffineMap::shiftSymbols ( unsigned shift,
unsigned offset = 0 ) const
inline

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

Definition at line 280 of file AffineMap.h.

References AffineMap(), get(), getContext(), getNumDims(), getNumSymbols(), getResults(), and mlir::AffineExpr::shiftSymbols().

Referenced by composeMultiResultAffineMap(), and replaceDimOrSym().

◆ walkExprs()

void AffineMap::walkExprs ( llvm::function_ref< void(AffineExpr)> callback) const

Walk all of the AffineExpr's in this mapping.

Each node in an expression tree is visited in postorder.

Definition at line 486 of file AffineMap.cpp.

References getResults(), and mlir::AffineExpr::walk().


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