MLIR
17.0.0git
|
#include "mlir/Dialect/Vector/Utils/VectorUtils.h"
#include "mlir/Dialect/Affine/Analysis/LoopAnalysis.h"
#include "mlir/Dialect/Affine/IR/AffineOps.h"
#include "mlir/Dialect/Arith/IR/Arith.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/Dialect/MemRef/IR/MemRef.h"
#include "mlir/Dialect/Tensor/IR/Tensor.h"
#include "mlir/Dialect/Utils/IndexingUtils.h"
#include "mlir/Dialect/Vector/IR/VectorOps.h"
#include "mlir/IR/Builders.h"
#include "mlir/IR/IntegerSet.h"
#include "mlir/IR/Operation.h"
#include "mlir/IR/TypeUtilities.h"
#include "mlir/Support/LLVM.h"
#include "mlir/Support/MathExtras.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SetVector.h"
Go to the source code of this file.
Functions | |
static AffineMap | makePermutationMap (ArrayRef< Value > indices, const DenseMap< Operation *, unsigned > &enclosingLoopToVectorDim) |
Constructs a permutation map from memref indices to vector dimension. More... | |
template<typename T > | |
static SetVector< Operation * > | getParentsOfType (Block *block) |
Implementation detail that walks up the parents and records the ones with the specified type. More... | |
static SetVector< Operation * > | getEnclosingforOps (Block *block) |
Returns the enclosing AffineForOp, from closest to farthest. More... | |
Returns the enclosing AffineForOp, from closest to farthest.
Definition at line 121 of file VectorUtils.cpp.
Implementation detail that walks up the parents and records the ones with the specified type.
TODO: could also be implemented as a collect parents followed by a filter and made available outside this file.
Definition at line 107 of file VectorUtils.cpp.
References mlir::Block::getParentOp().
|
static |
Constructs a permutation map from memref indices to vector dimension.
The implementation uses the knowledge of the mapping of enclosing loop to vector dimension. enclosingLoopToVectorDim
carries this information as a map with:
Returns an empty AffineMap if enclosingLoopToVectorDim
is empty, signalling that no permutation map can be constructed given enclosingLoopToVectorDim
.
Examples can be found in the documentation of makePermutationMap
, in the header file.
Definition at line 68 of file VectorUtils.cpp.
References mlir::AffineMap::get(), mlir::getAffineConstantExpr(), mlir::getAffineDimExpr(), and mlir::getInvariantAccesses().
Referenced by vectorizeAffineLoad(), and vectorizeAffineStore().