MLIR  22.0.0git
Macros | Functions
VectorUnroll.cpp File Reference
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Utils/IndexingUtils.h"
#include "mlir/Dialect/Vector/Transforms/VectorTransforms.h"
#include "mlir/Interfaces/VectorInterfaces.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/DebugLog.h"
#include "llvm/Support/InterleavedRange.h"
#include <optional>

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "vector-unroll"
 

Functions

static SmallVector< ValuesliceTransferIndices (ArrayRef< int64_t > elementOffsets, ArrayRef< Value > indices, AffineMap permutationMap, Location loc, OpBuilder &builder)
 Compute the indices of the slice index for a transfer op. More...
 
static SmallVector< ValuesliceLoadStoreIndices (PatternRewriter &rewriter, Location loc, OperandRange originalIndices, ArrayRef< int64_t > offsets)
 
static OperationcloneOpWithOperandsAndTypes (OpBuilder &builder, Location loc, Operation *op, ArrayRef< Value > operands, ArrayRef< Type > resultTypes)
 
static std::optional< SmallVector< int64_t > > getTargetShape (const vector::UnrollVectorOptions &options, Operation *op)
 Return the target shape for unrolling for the given op. More...
 
static SmallVector< int64_t > getUnrollOrder (unsigned numLoops, Operation *op, const vector::UnrollVectorOptions &options)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "vector-unroll"

Definition at line 23 of file VectorUnroll.cpp.

Function Documentation

◆ cloneOpWithOperandsAndTypes()

static Operation* cloneOpWithOperandsAndTypes ( OpBuilder builder,
Location  loc,
Operation op,
ArrayRef< Value operands,
ArrayRef< Type resultTypes 
)
static

◆ getTargetShape()

static std::optional<SmallVector<int64_t> > getTargetShape ( const vector::UnrollVectorOptions options,
Operation op 
)
static

Return the target shape for unrolling for the given op.

Return std::nullopt if the op shouldn't be or cannot be unrolled.

Definition at line 90 of file VectorUnroll.cpp.

References mlir::computeShapeRatio(), mlir::remark::failed(), mlir::Operation::getName(), mlir::OperationName::getStringRef(), and options.

◆ getUnrollOrder()

static SmallVector<int64_t> getUnrollOrder ( unsigned  numLoops,
Operation op,
const vector::UnrollVectorOptions options 
)
static

Definition at line 132 of file VectorUnroll.cpp.

References options.

◆ sliceLoadStoreIndices()

static SmallVector<Value> sliceLoadStoreIndices ( PatternRewriter rewriter,
Location  loc,
OperandRange  originalIndices,
ArrayRef< int64_t >  offsets 
)
static

◆ sliceTransferIndices()

static SmallVector<Value> sliceTransferIndices ( ArrayRef< int64_t >  elementOffsets,
ArrayRef< Value indices,
AffineMap  permutationMap,
Location  loc,
OpBuilder builder 
)
static

Compute the indices of the slice index for a transfer op.

Definition at line 29 of file VectorUnroll.cpp.

References mlir::detail::enumerate(), mlir::AffineMap::get(), mlir::getAffineConstantExpr(), mlir::getAffineDimExpr(), mlir::Builder::getContext(), and mlir::AffineMap::getResults().