MLIR
20.0.0git
|
#include "mlir/Dialect/SPIRV/IR/SPIRVTypes.h"
Public Types | |
using | ExtensionArrayRefVector = SmallVectorImpl< ArrayRef< Extension > > |
The extension requirements for each type are following the ((Extension::A OR Extension::B) AND (Extension::C OR Extension::D)) convention. More... | |
using | CapabilityArrayRefVector = SmallVectorImpl< ArrayRef< Capability > > |
The capability requirements for each type are following the ((Capability::A OR Extension::B) AND (Capability::C OR Capability::D)) convention. More... | |
Public Types inherited from mlir::Type | |
template<typename ConcreteType , typename BaseType , typename StorageType , template< typename T > class... Traits> | |
using | TypeBase = detail::StorageUserBase< ConcreteType, BaseType, StorageType, detail::TypeUniquer, Traits... > |
Utility class for implementing types. More... | |
using | ImplType = TypeStorage |
using | AbstractTy = AbstractType |
Public Member Functions | |
bool | isScalarOrVector () |
void | getExtensions (ExtensionArrayRefVector &extensions, std::optional< StorageClass > storage=std::nullopt) |
Appends to extensions the extensions needed for this type to appear in the given storage class. More... | |
void | getCapabilities (CapabilityArrayRefVector &capabilities, std::optional< StorageClass > storage=std::nullopt) |
Appends to capabilities the capabilities needed for this type to appear in the given storage class. More... | |
std::optional< int64_t > | getSizeInBytes () |
Returns the size in bytes for each type. More... | |
constexpr | Type ()=default |
Type (const ImplType *impl) | |
Type (const Type &other)=default | |
Public Member Functions inherited from mlir::Type | |
constexpr | Type ()=default |
Type (const ImplType *impl) | |
Type (const Type &other)=default | |
Type & | operator= (const Type &other)=default |
bool | operator== (Type other) const |
bool | operator!= (Type other) const |
operator bool () const | |
bool | operator! () const |
template<typename... Tys> | |
bool | isa () const |
template<typename... Tys> | |
bool | isa_and_nonnull () const |
template<typename U > | |
U | dyn_cast () const |
template<typename U > | |
U | dyn_cast_or_null () const |
template<typename U > | |
U | cast () const |
TypeID | getTypeID () |
Return a unique identifier for the concrete type. More... | |
MLIRContext * | getContext () const |
Return the MLIRContext in which this type was uniqued. More... | |
Dialect & | getDialect () const |
Get the dialect this type is registered to. More... | |
bool | isIndex () const |
bool | isFloat4E2M1FN () const |
bool | isFloat6E2M3FN () const |
bool | isFloat6E3M2FN () const |
bool | isFloat8E5M2 () const |
bool | isFloat8E4M3 () const |
bool | isFloat8E4M3FN () const |
bool | isFloat8E5M2FNUZ () const |
bool | isFloat8E4M3FNUZ () const |
bool | isFloat8E4M3B11FNUZ () const |
bool | isFloat8E3M4 () const |
bool | isFloat8E8M0FNU () const |
bool | isBF16 () const |
bool | isF16 () const |
bool | isTF32 () const |
bool | isF32 () const |
bool | isF64 () const |
bool | isF80 () const |
bool | isF128 () const |
bool | isInteger () const |
Return true if this is an integer type (with the specified width). More... | |
bool | isInteger (unsigned width) const |
Return true if this is an integer type with the specified width. More... | |
bool | isSignlessInteger () const |
Return true if this is a signless integer type (with the specified width). More... | |
bool | isSignlessInteger (unsigned width) const |
bool | isSignedInteger () const |
Return true if this is a signed integer type (with the specified width). More... | |
bool | isSignedInteger (unsigned width) const |
bool | isUnsignedInteger () const |
Return true if this is an unsigned integer type (with the specified width). More... | |
bool | isUnsignedInteger (unsigned width) const |
unsigned | getIntOrFloatBitWidth () const |
Return the bit width of an integer or a float type, assert failure on other types. More... | |
bool | isSignlessIntOrIndex () const |
Return true if this is a signless integer or index type. More... | |
bool | isSignlessIntOrIndexOrFloat () const |
Return true if this is a signless integer, index, or float type. More... | |
bool | isSignlessIntOrFloat () const |
Return true of this is a signless integer or a float type. More... | |
bool | isIntOrIndex () const |
Return true if this is an integer (of any signedness) or an index type. More... | |
bool | isIntOrFloat () const |
Return true if this is an integer (of any signedness) or a float type. More... | |
bool | isIntOrIndexOrFloat () const |
Return true if this is an integer (of any signedness), index, or float type. More... | |
void | print (raw_ostream &os) const |
Print the current type. More... | |
void | print (raw_ostream &os, AsmState &state) const |
void | dump () const |
const void * | getAsOpaquePointer () const |
Methods for supporting PointerLikeTypeTraits. More... | |
template<typename InterfaceT > | |
bool | hasPromiseOrImplementsInterface () |
Returns true if InterfaceT has been promised by the dialect or implemented. More... | |
template<template< typename T > class Trait> | |
bool | hasTrait () |
Returns true if the type was registered with a particular trait. More... | |
const AbstractTy & | getAbstractType () const |
Return the abstract type descriptor for this type. More... | |
ImplType * | getImpl () const |
Return the Type implementation. More... | |
void | walkImmediateSubElements (function_ref< void(Attribute)> walkAttrsFn, function_ref< void(Type)> walkTypesFn) const |
Walk all of the immediately nested sub-attributes and sub-types. More... | |
auto | replaceImmediateSubElements (ArrayRef< Attribute > replAttrs, ArrayRef< Type > replTypes) const |
Replace the immediately nested sub-attributes and sub-types with those provided. More... | |
template<WalkOrder Order = WalkOrder::PostOrder, typename... WalkFns> | |
auto | walk (WalkFns &&...walkFns) |
Walk this type and all attibutes/types nested within using the provided walk functions. More... | |
template<typename... ReplacementFns> | |
auto | replace (ReplacementFns &&...replacementFns) |
Recursively replace all of the nested sub-attributes and sub-types using the provided map functions. More... | |
Static Public Member Functions | |
static bool | classof (Type type) |
Static Public Member Functions inherited from mlir::Type | |
static Type | getFromOpaquePointer (const void *pointer) |
Additional Inherited Members | |
Protected Attributes inherited from mlir::Type | |
ImplType * | impl {nullptr} |
Definition at line 42 of file SPIRVTypes.h.
using mlir::spirv::SPIRVType::CapabilityArrayRefVector = SmallVectorImpl<ArrayRef<Capability> > |
The capability requirements for each type are following the ((Capability::A OR Extension::B) AND (Capability::C OR Capability::D)) convention.
Definition at line 64 of file SPIRVTypes.h.
using mlir::spirv::SPIRVType::ExtensionArrayRefVector = SmallVectorImpl<ArrayRef<Extension> > |
The extension requirements for each type are following the ((Extension::A OR Extension::B) AND (Extension::C OR Extension::D)) convention.
Definition at line 53 of file SPIRVTypes.h.
|
static |
Definition at line 651 of file SPIRVTypes.cpp.
References mlir::Type::getDialect(), and mlir::spirv::CompositeType::isValid().
void SPIRVType::getCapabilities | ( | SPIRVType::CapabilityArrayRefVector & | capabilities, |
std::optional< StorageClass > | storage = std::nullopt |
||
) |
Appends to capabilities
the capabilities needed for this type to appear in the given storage
class.
This method does not guarantee the uniqueness of capabilities; the same capability may be appended multiple times.
Definition at line 685 of file SPIRVTypes.cpp.
void SPIRVType::getExtensions | ( | SPIRVType::ExtensionArrayRefVector & | extensions, |
std::optional< StorageClass > | storage = std::nullopt |
||
) |
Appends to extensions
the extensions needed for this type to appear in the given storage
class.
This method does not guarantee the uniqueness of extensions; the same extension may be appended multiple times.
Definition at line 666 of file SPIRVTypes.cpp.
std::optional< int64_t > SPIRVType::getSizeInBytes | ( | ) |
Returns the size in bytes for each type.
If no size can be calculated, returns std::nullopt
. Note that if the type has explicit layout, it is also taken into account in calculation.
Definition at line 705 of file SPIRVTypes.cpp.
Referenced by deduceCanonicalResource(), and ConvertAccessChain::matchAndRewrite().
bool SPIRVType::isScalarOrVector | ( | ) |
Definition at line 662 of file SPIRVTypes.cpp.
References mlir::Type::isIntOrFloat().
Referenced by deduceCanonicalResource().
|
constexprdefault |
|
default |