MLIR
17.0.0git
|
Helper class to produce LLVM dialect operations extracting or inserting elements of a MemRef descriptor. More...
#include "mlir/Conversion/LLVMCommon/MemRefBuilder.h"
Public Member Functions | |
MemRefDescriptor (Value descriptor) | |
Construct a helper for the given descriptor value. More... | |
Value | allocatedPtr (OpBuilder &builder, Location loc) |
Builds IR extracting the allocated pointer from the descriptor. More... | |
void | setAllocatedPtr (OpBuilder &builder, Location loc, Value ptr) |
Builds IR inserting the allocated pointer into the descriptor. More... | |
Value | alignedPtr (OpBuilder &builder, Location loc) |
Builds IR extracting the aligned pointer from the descriptor. More... | |
void | setAlignedPtr (OpBuilder &builder, Location loc, Value ptr) |
Builds IR inserting the aligned pointer into the descriptor. More... | |
Value | offset (OpBuilder &builder, Location loc) |
Builds IR extracting the offset from the descriptor. More... | |
void | setOffset (OpBuilder &builder, Location loc, Value offset) |
Builds IR inserting the offset into the descriptor. More... | |
void | setConstantOffset (OpBuilder &builder, Location loc, uint64_t offset) |
Builds IR inserting the offset into the descriptor. More... | |
Value | size (OpBuilder &builder, Location loc, unsigned pos) |
Builds IR extracting the pos-th size from the descriptor. More... | |
Value | size (OpBuilder &builder, Location loc, Value pos, int64_t rank) |
void | setSize (OpBuilder &builder, Location loc, unsigned pos, Value size) |
Builds IR inserting the pos-th size into the descriptor. More... | |
void | setConstantSize (OpBuilder &builder, Location loc, unsigned pos, uint64_t size) |
Value | stride (OpBuilder &builder, Location loc, unsigned pos) |
Builds IR extracting the pos-th size from the descriptor. More... | |
void | setStride (OpBuilder &builder, Location loc, unsigned pos, Value stride) |
Builds IR inserting the pos-th stride into the descriptor. More... | |
void | setConstantStride (OpBuilder &builder, Location loc, unsigned pos, uint64_t stride) |
Type | getIndexType () |
Returns the type of array element in this descriptor. More... | |
LLVM::LLVMPointerType | getElementPtrType () |
Returns the (LLVM) pointer type this descriptor contains. More... | |
![]() | |
StructBuilder (Value v) | |
Construct a helper for the given value. More... | |
operator Value () | |
Static Public Member Functions | |
static MemRefDescriptor | undef (OpBuilder &builder, Location loc, Type descriptorType) |
Builds IR creating an undef value of the descriptor type. More... | |
static MemRefDescriptor | fromStaticShape (OpBuilder &builder, Location loc, LLVMTypeConverter &typeConverter, MemRefType type, Value memory) |
Builds IR creating a MemRef descriptor that represents type and populates it with static shape and stride information extracted from the type. More... | |
static MemRefDescriptor | fromStaticShape (OpBuilder &builder, Location loc, LLVMTypeConverter &typeConverter, MemRefType type, Value memory, Value alignedMemory) |
static Value | pack (OpBuilder &builder, Location loc, LLVMTypeConverter &converter, MemRefType type, ValueRange values) |
Builds IR populating a MemRef descriptor structure from a list of individual values composing that descriptor, in the following order: More... | |
static void | unpack (OpBuilder &builder, Location loc, Value packed, MemRefType type, SmallVectorImpl< Value > &results) |
Builds IR extracting individual elements of a MemRef descriptor structure and returning them as results list. More... | |
static unsigned | getNumUnpackedValues (MemRefType type) |
Returns the number of non-aggregate values that would be produced by unpack . More... | |
![]() | |
static StructBuilder | undef (OpBuilder &builder, Location loc, Type descriptorType) |
Builds IR creating an undef value of the descriptor type. More... | |
Additional Inherited Members | |
![]() | |
Value | extractPtr (OpBuilder &builder, Location loc, unsigned pos) |
Builds IR to extract a value from the struct at position pos. More... | |
void | setPtr (OpBuilder &builder, Location loc, unsigned pos, Value ptr) |
Builds IR to set a value in the struct at position pos. More... | |
![]() | |
Value | value |
Type | structType |
Helper class to produce LLVM dialect operations extracting or inserting elements of a MemRef descriptor.
Wraps a Value pointing to the descriptor. The Value may be null, in which case none of the operations are valid.
Definition at line 33 of file MemRefBuilder.h.
|
explicit |
Construct a helper for the given descriptor value.
Definition at line 23 of file MemRefBuilder.cpp.
References mlir::Type::cast(), mlir::Value::getType(), kOffsetPosInMemRefDescriptor, and mlir::StructBuilder::value.
Referenced by undef().
Builds IR extracting the aligned pointer from the descriptor.
Definition at line 89 of file MemRefBuilder.cpp.
References mlir::StructBuilder::extractPtr(), and kAlignedPtrPosInMemRefDescriptor.
Referenced by mlir::AllocationOpLLVMLowering::createIndexConstant(), mlir::LLVMTypeConverter::promoteOperands(), and unpack().
Builds IR extracting the allocated pointer from the descriptor.
Definition at line 78 of file MemRefBuilder.cpp.
References mlir::StructBuilder::extractPtr(), and kAllocatedPtrPosInMemRefDescriptor.
Referenced by unpack().
|
static |
Builds IR creating a MemRef descriptor that represents type
and populates it with static shape and stride information extracted from the type.
Definition at line 43 of file MemRefBuilder.cpp.
Referenced by mlir::GPUFuncOpLowering::matchAndRewrite(), and mlir::LLVMTypeConverter::promoteBarePtrsToDescriptors().
|
static |
Definition at line 49 of file MemRefBuilder.cpp.
References mlir::LLVMTypeConverter::convertType(), mlir::getStridesAndOffset(), offset(), and undef().
LLVM::LLVMPointerType MemRefDescriptor::getElementPtrType | ( | ) |
Returns the (LLVM) pointer type this descriptor contains.
Definition at line 186 of file MemRefBuilder.cpp.
References mlir::Type::cast(), mlir::Value::getType(), kAlignedPtrPosInMemRefDescriptor, and mlir::StructBuilder::value.
Referenced by mlir::AllocationOpLLVMLowering::createIndexConstant(), and getIndexedPtrs().
|
inline |
Returns the type of array element in this descriptor.
Definition at line 87 of file MemRefBuilder.h.
|
static |
Returns the number of non-aggregate values that would be produced by unpack
.
Definition at line 240 of file MemRefBuilder.cpp.
Referenced by unpack(), and wrapExternalFunction().
Builds IR extracting the offset from the descriptor.
Definition at line 108 of file MemRefBuilder.cpp.
References mlir::OpBuilder::create(), kOffsetPosInMemRefDescriptor, and mlir::StructBuilder::value.
Referenced by mlir::AllocationOpLLVMLowering::createIndexConstant(), fromStaticShape(), setConstantOffset(), setOffset(), and unpack().
|
static |
Builds IR populating a MemRef descriptor structure from a list of individual values composing that descriptor, in the following order:
Creates a MemRef descriptor structure from a list of individual values composing that descriptor, in the following order:
type
. Definition at line 201 of file MemRefBuilder.cpp.
References mlir::LLVMTypeConverter::convertType(), kAlignedPtrPosInMemRefDescriptor, kAllocatedPtrPosInMemRefDescriptor, kOffsetPosInMemRefDescriptor, kSizePosInMemRefDescriptor, and undef().
Referenced by mlir::LLVMTypeConverter::LLVMTypeConverter(), and wrapExternalFunction().
Builds IR inserting the aligned pointer into the descriptor.
Definition at line 94 of file MemRefBuilder.cpp.
References kAlignedPtrPosInMemRefDescriptor, and mlir::StructBuilder::setPtr().
Builds IR inserting the allocated pointer into the descriptor.
Definition at line 83 of file MemRefBuilder.cpp.
References kAllocatedPtrPosInMemRefDescriptor, and mlir::StructBuilder::setPtr().
Builds IR inserting the offset into the descriptor.
Definition at line 121 of file MemRefBuilder.cpp.
References createIndexAttrConstant(), offset(), and setOffset().
void MemRefDescriptor::setConstantSize | ( | OpBuilder & | builder, |
Location | loc, | ||
unsigned | pos, | ||
uint64_t | size | ||
) |
Definition at line 160 of file MemRefBuilder.cpp.
References createIndexAttrConstant(), setSize(), and size().
void MemRefDescriptor::setConstantStride | ( | OpBuilder & | builder, |
Location | loc, | ||
unsigned | pos, | ||
uint64_t | stride | ||
) |
Definition at line 180 of file MemRefBuilder.cpp.
References createIndexAttrConstant(), setStride(), and stride().
Builds IR inserting the offset into the descriptor.
Definition at line 114 of file MemRefBuilder.cpp.
References mlir::OpBuilder::create(), kOffsetPosInMemRefDescriptor, offset(), and mlir::StructBuilder::value.
Referenced by setConstantOffset().
Builds IR inserting the pos-th size into the descriptor.
Definition at line 154 of file MemRefBuilder.cpp.
References mlir::OpBuilder::create(), kSizePosInMemRefDescriptor, size(), and mlir::StructBuilder::value.
Referenced by setConstantSize().
Builds IR inserting the pos-th stride into the descriptor.
Definition at line 173 of file MemRefBuilder.cpp.
References mlir::OpBuilder::create(), kStridePosInMemRefDescriptor, stride(), and mlir::StructBuilder::value.
Referenced by setConstantStride().
Builds IR extracting the pos-th size from the descriptor.
Definition at line 128 of file MemRefBuilder.cpp.
References mlir::OpBuilder::create(), kSizePosInMemRefDescriptor, and mlir::StructBuilder::value.
Referenced by setConstantSize(), setSize(), and unpack().
Definition at line 133 of file MemRefBuilder.cpp.
References mlir::OpBuilder::create(), createIndexAttrConstant(), kSizePosInMemRefDescriptor, and mlir::StructBuilder::value.
Builds IR extracting the pos-th size from the descriptor.
Builds IR extracting the pos-th stride from the descriptor.
Definition at line 167 of file MemRefBuilder.cpp.
References mlir::OpBuilder::create(), kStridePosInMemRefDescriptor, and mlir::StructBuilder::value.
Referenced by mlir::AllocationOpLLVMLowering::createIndexConstant(), setConstantStride(), setStride(), and unpack().
|
static |
Builds IR creating an undef
value of the descriptor type.
Definition at line 32 of file MemRefBuilder.cpp.
References mlir::OpBuilder::create(), and MemRefDescriptor().
Referenced by mlir::ConvertToLLVMPattern::createMemRefDescriptor(), fromStaticShape(), and pack().
|
static |
Builds IR extracting individual elements of a MemRef descriptor structure and returning them as results
list.
Definition at line 222 of file MemRefBuilder.cpp.
References alignedPtr(), allocatedPtr(), getNumUnpackedValues(), offset(), size(), and stride().
Referenced by mlir::LLVMTypeConverter::promoteOperands(), and wrapForExternalCallers().