|
MLIR 24.0.0git
|
#include "mlir/Dialect/Vector/Transforms/MemorySlotInterfacesImpl.h"#include "mlir/Dialect/Arith/IR/Arith.h"#include "mlir/Dialect/Arith/Utils/Utils.h"#include "mlir/Dialect/MemRef/Transforms/MemorySlotInterfacesImpl.h"#include "mlir/Dialect/Utils/StaticValueUtils.h"#include "mlir/Dialect/Vector/IR/VectorOps.h"#include "mlir/IR/BuiltinTypes.h"#include "mlir/Interfaces/MemorySlotInterfaces.h"Go to the source code of this file.
Functions | |
| static bool | isPromotableTransfer (VectorTransferOpInterface xferOp, const MemorySlot &slot, const SmallPtrSetImpl< OpOperand * > &blockingUses) |
| Returns whether xferOp can be promoted to use or define slot's vector value. | |
|
static |
Returns whether xferOp can be promoted to use or define slot's vector value.
The transfer's memref base must be the slot pointer, its vector type must equal slot.valueType, its indices must be zero, and its permutation map must be the identity. Out-of-bounds dimensions are allowed only for a supported dynamic subview.
More general transfers may be supportable, but their value depends on motivating use cases, implementation complexity, and generated code quality.
Definition at line 56 of file MemorySlotInterfacesImpl.cpp.
References mlir::getConstantIntValue(), mlir::memref::isDynamicSubViewSlot(), mlir::MemorySlot::ptr, and mlir::MemorySlot::valueType.