MLIR
18.0.0git
|
The main mechanism for performing data layout queries. More...
#include "mlir/Interfaces/DataLayoutInterfaces.h"
Public Member Functions | |
DataLayout () | |
DataLayout (DataLayoutOpInterface op) | |
DataLayout (ModuleOp op) | |
unsigned | getTypeSize (Type t) const |
Returns the size of the given type in the current scope. More... | |
unsigned | getTypeSizeInBits (Type t) const |
Returns the size in bits of the given type in the current scope. More... | |
unsigned | getTypeABIAlignment (Type t) const |
Returns the required alignment of the given type in the current scope. More... | |
unsigned | getTypePreferredAlignment (Type t) const |
Returns the preferred of the given type in the current scope. More... | |
Attribute | getAllocaMemorySpace () const |
Returns the memory space used for AllocaOps. More... | |
unsigned | getStackAlignment () const |
Returns the natural alignment of the stack in bits. More... | |
Static Public Member Functions | |
static DataLayout | closest (Operation *op) |
Returns the layout of the closest parent operation carrying layout info. More... | |
The main mechanism for performing data layout queries.
Instances of this class can be created for an operation implementing DataLayoutOpInterface. Upon construction, a layout spec combining that of the given operation with all its ancestors will be computed and used to handle further requests. For efficiency, results to all requests will be cached in this object. Therefore, if the data layout spec for the scoping operation, or any of the enclosing operations, changes, the cache is no longer valid. The user is responsible creating a new DataLayout object after any spec change. In debug mode, the cache validity is being checked in every request.
Definition at line 149 of file DataLayoutInterfaces.h.
|
explicit |
Definition at line 369 of file DataLayoutInterfaces.cpp.
|
explicit |
Definition at line 371 of file DataLayoutInterfaces.cpp.
|
explicit |
Definition at line 380 of file DataLayoutInterfaces.cpp.
|
static |
Returns the layout of the closest parent operation carrying layout info.
Definition at line 389 of file DataLayoutInterfaces.cpp.
Referenced by defaultIsSmallAlloc(), handleByValArgument(), mlir::LLVM::CanonicalizeAlignedGep::matchAndRewrite(), mlir::LLVM::SplitStores::matchAndRewrite(), and mlir::LLVM::BitcastStores::matchAndRewrite().
mlir::Attribute mlir::DataLayout::getAllocaMemorySpace | ( | ) | const |
Returns the memory space used for AllocaOps.
Definition at line 484 of file DataLayoutInterfaces.cpp.
References mlir::detail::getDefaultAllocaMemorySpace().
unsigned mlir::DataLayout::getStackAlignment | ( | ) | const |
Returns the natural alignment of the stack in bits.
Alignment promotion of stack variables should be limited to the natural stack alignment to prevent dynamic stack alignment. Returns zero if the stack alignment is unspecified.
Definition at line 500 of file DataLayoutInterfaces.cpp.
References mlir::detail::getDefaultStackAlignment().
Referenced by tryToEnforceAllocaAlignment().
unsigned mlir::DataLayout::getTypeABIAlignment | ( | Type | t | ) | const |
Returns the required alignment of the given type in the current scope.
Definition at line 460 of file DataLayoutInterfaces.cpp.
References cachedLookup(), mlir::detail::getDefaultABIAlignment(), and mlir::Type::getTypeID().
Referenced by calculateStructAlignment(), gepToByteOffset(), mlir::detail::getDefaultABIAlignment(), mlir::detail::getDefaultPreferredAlignment(), getFloatTypePreferredAlignment(), mlir::LLVM::LLVMStructType::getTypeSizeInBits(), getWrittenToFields(), handleByValArgument(), and translateDataLayout().
unsigned mlir::DataLayout::getTypePreferredAlignment | ( | Type | t | ) | const |
Returns the preferred of the given type in the current scope.
Definition at line 472 of file DataLayoutInterfaces.cpp.
References cachedLookup(), mlir::detail::getDefaultPreferredAlignment(), and mlir::Type::getTypeID().
Referenced by mlir::detail::getDefaultPreferredAlignment(), and translateDataLayout().
unsigned mlir::DataLayout::getTypeSize | ( | Type | t | ) | const |
Returns the size of the given type in the current scope.
Definition at line 436 of file DataLayoutInterfaces.cpp.
References cachedLookup(), mlir::detail::getDefaultTypeSize(), and mlir::Type::getTypeID().
Referenced by allocBuffer(), areBitcastCompatible(), findIndicesForOffset(), gepToByteOffset(), mlir::detail::getDefaultABIAlignment(), mlir::detail::getDefaultTypeSizeInBits(), getFloatTypeABIAlignment(), getIntegerTypePreferredAlignment(), mlir::LLVMTypeConverter::getMemRefDescriptorSize(), getSizeInBytes(), mlir::LLVM::LLVMStructType::getTypeSizeInBits(), mlir::LLVMTypeConverter::getUnrankedMemRefDescriptorSize(), getWrittenToFields(), handleByValArgument(), splitIntegerStore(), and splitVectorStore().
unsigned mlir::DataLayout::getTypeSizeInBits | ( | Type | t | ) | const |
Returns the size in bits of the given type in the current scope.
Definition at line 448 of file DataLayoutInterfaces.cpp.
References cachedLookup(), mlir::detail::getDefaultTypeSizeInBits(), and mlir::Type::getTypeID().
Referenced by defaultIsSmallAlloc(), mlir::detail::getDefaultTypeSizeInBits(), mlir::LowerToLLVMOptions::LowerToLLVMOptions(), and translateDataLayout().