|
MLIR
22.0.0git
|
Type storage for SPIR-V structure types: More...
Inheritance diagram for mlir::spirv::detail::StructTypeStorage:Public Types | |
| using | KeyTy = std::tuple< StringRef, ArrayRef< Type >, ArrayRef< StructType::OffsetInfo >, ArrayRef< StructType::MemberDecorationInfo >, ArrayRef< StructType::StructDecorationInfo > > |
| A storage key is divided into 2 parts: More... | |
Public Member Functions | |
| StructTypeStorage (StringRef identifier) | |
| Construct a storage object for an identified struct type. More... | |
| StructTypeStorage (unsigned numMembers, Type const *memberTypes, StructType::OffsetInfo const *layoutInfo, unsigned numMemberDecorations, StructType::MemberDecorationInfo const *memberDecorationsInfo, unsigned numStructDecorations, StructType::StructDecorationInfo const *structDecorationsInfo) | |
| Construct a storage object for a literal struct type. More... | |
| bool | operator== (const KeyTy &key) const |
| For identified structs, return true if the given key contains the same identifier. More... | |
| ArrayRef< Type > | getMemberTypes () const |
| ArrayRef< StructType::OffsetInfo > | getOffsetInfo () const |
| ArrayRef< StructType::MemberDecorationInfo > | getMemberDecorationsInfo () const |
| ArrayRef< StructType::StructDecorationInfo > | getStructDecorationsInfo () const |
| StringRef | getIdentifier () const |
| bool | isIdentified () const |
| LogicalResult | mutate (TypeStorageAllocator &allocator, ArrayRef< Type > structMemberTypes, ArrayRef< StructType::OffsetInfo > structOffsetInfo, ArrayRef< StructType::MemberDecorationInfo > structMemberDecorationInfo, ArrayRef< StructType::StructDecorationInfo > structDecorationInfo) |
| Sets the struct type content for identified structs. More... | |
Public Member Functions inherited from mlir::TypeStorage | |
| const AbstractType & | getAbstractType () |
| Return the abstract type descriptor for this type. More... | |
Static Public Member Functions | |
| static StructTypeStorage * | construct (TypeStorageAllocator &allocator, const KeyTy &key) |
| If the given key contains a non-empty identifier, this method constructs an identified struct and leaves the rest of the struct type data to be set through a later call to StructType::trySetBody(...). More... | |
Public Attributes | |
| llvm::PointerIntPair< Type const *, 1, bool > | memberTypesAndIsBodySet |
| StructType::OffsetInfo const * | offsetInfo |
| unsigned | numMembers |
| unsigned | numMemberDecorations |
| StructType::MemberDecorationInfo const * | memberDecorationsInfo |
| unsigned | numStructDecorations |
| StructType::StructDecorationInfo const * | structDecorationsInfo |
| StringRef | identifier |
Additional Inherited Members | |
Protected Member Functions inherited from mlir::TypeStorage | |
| TypeStorage () | |
| This constructor is used by derived classes as part of the TypeUniquer. More... | |
Protected Member Functions inherited from mlir::StorageUniquer::BaseStorage | |
| BaseStorage ()=default | |
Type storage for SPIR-V structure types:
Structures are uniqued using:
Identified structures only have a mutable component consisting of:
Definition at line 804 of file SPIRVTypes.cpp.
| using mlir::spirv::detail::StructTypeStorage::KeyTy = std::tuple<StringRef, ArrayRef<Type>, ArrayRef<StructType::OffsetInfo>, ArrayRef<StructType::MemberDecorationInfo>, ArrayRef<StructType::StructDecorationInfo> > |
A storage key is divided into 2 parts:
An identified struct type is uniqued only by the first part (field 0) of the key.
A literal struct type is uniqued only by the second part (fields 1, 2, 3 and 4) of the key. The identifier field (field 0) must be empty.
Definition at line 844 of file SPIRVTypes.cpp.
|
inline |
Construct a storage object for an identified struct type.
A struct type associated with such storage must call StructType::trySetBody(...) later in order to mutate the storage object providing the actual content.
Definition at line 808 of file SPIRVTypes.cpp.
|
inline |
Construct a storage object for a literal struct type.
A struct type associated with such storage is immutable.
Definition at line 816 of file SPIRVTypes.cpp.
|
inlinestatic |
If the given key contains a non-empty identifier, this method constructs an identified struct and leaves the rest of the struct type data to be set through a later call to StructType::trySetBody(...).
If, on the other hand, the key contains an empty identifier, a literal struct is constructed using the other fields of the key.
Definition at line 870 of file SPIRVTypes.cpp.
References mlir::StorageUniquer::StorageAllocator::allocate(), and mlir::StorageUniquer::StorageAllocator::copyInto().
|
inline |
Definition at line 947 of file SPIRVTypes.cpp.
|
inline |
Definition at line 932 of file SPIRVTypes.cpp.
Definition at line 921 of file SPIRVTypes.cpp.
|
inline |
Definition at line 925 of file SPIRVTypes.cpp.
|
inline |
Definition at line 940 of file SPIRVTypes.cpp.
|
inline |
Definition at line 949 of file SPIRVTypes.cpp.
|
inline |
Sets the struct type content for identified structs.
Calling this method is only valid for identified structs.
Fails under the following conditions:
Definition at line 960 of file SPIRVTypes.cpp.
References mlir::StorageUniquer::StorageAllocator::copyInto().
|
inline |
For identified structs, return true if the given key contains the same identifier.
For literal structs, return true if the given key contains a matching list of member types + offset info + decoration info.
Definition at line 854 of file SPIRVTypes.cpp.
| StringRef mlir::spirv::detail::StructTypeStorage::identifier |
Definition at line 1010 of file SPIRVTypes.cpp.
| StructType::MemberDecorationInfo const* mlir::spirv::detail::StructTypeStorage::memberDecorationsInfo |
Definition at line 1007 of file SPIRVTypes.cpp.
| llvm::PointerIntPair<Type const *, 1, bool> mlir::spirv::detail::StructTypeStorage::memberTypesAndIsBodySet |
Definition at line 1003 of file SPIRVTypes.cpp.
| unsigned mlir::spirv::detail::StructTypeStorage::numMemberDecorations |
Definition at line 1006 of file SPIRVTypes.cpp.
| unsigned mlir::spirv::detail::StructTypeStorage::numMembers |
Definition at line 1005 of file SPIRVTypes.cpp.
| unsigned mlir::spirv::detail::StructTypeStorage::numStructDecorations |
Definition at line 1008 of file SPIRVTypes.cpp.
| StructType::OffsetInfo const* mlir::spirv::detail::StructTypeStorage::offsetInfo |
Definition at line 1004 of file SPIRVTypes.cpp.
| StructType::StructDecorationInfo const* mlir::spirv::detail::StructTypeStorage::structDecorationsInfo |
Definition at line 1009 of file SPIRVTypes.cpp.