MLIR  21.0.0git
Namespaces | Macros | Functions
AffineExpandIndexOps.cpp File Reference
#include "mlir/Dialect/Affine/LoopUtils.h"
#include "mlir/Dialect/Affine/Passes.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Affine/Transforms/Transforms.h"
#include "mlir/Dialect/Affine/Utils.h"
#include "mlir/Dialect/Arith/Utils/Utils.h"
#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
#include "mlir/Dialect/Affine/Passes.h.inc"

Go to the source code of this file.

Namespaces

 mlir
 Include the generated interface declarations.
 
 mlir::affine
 

Macros

#define GEN_PASS_DEF_AFFINEEXPANDINDEXOPS
 

Functions

static SmallVector< ValuecomputeStrides (Location loc, RewriterBase &rewriter, ValueRange dynamicBasis, ArrayRef< int64_t > staticBasis, bool knownNonNegative)
 Given a basis (in static and dynamic components), return the sequence of suffix products of the basis, including the product of the entire basis, which must not contain an outer bound. More...
 

Macro Definition Documentation

◆ GEN_PASS_DEF_AFFINEEXPANDINDEXOPS

#define GEN_PASS_DEF_AFFINEEXPANDINDEXOPS

Definition at line 24 of file AffineExpandIndexOps.cpp.

Function Documentation

◆ computeStrides()

static SmallVector<Value> computeStrides ( Location  loc,
RewriterBase rewriter,
ValueRange  dynamicBasis,
ArrayRef< int64_t >  staticBasis,
bool  knownNonNegative 
)
static

Given a basis (in static and dynamic components), return the sequence of suffix products of the basis, including the product of the entire basis, which must not contain an outer bound.

If excess dynamic values are provided, the values at the beginning will be ignored. This allows for dropping the outer bound without needing to manipulate the dynamic value array. knownPositive indicases that the values being used to compute the strides are known to be non-negative.

Definition at line 41 of file AffineExpandIndexOps.cpp.

References mlir::OpBuilder::create(), and mlir::OpBuilder::createOrFold().

Referenced by foldDenseElementsAttrDestInsertOp(), foldDenseElementsAttrSrcExtractOp(), and foldExtractStridedSliceNonSplatConstant().