26 return RegisterValue != ~0U;
32 return !(RegisterSpace >= 0xFFFFFFF0);
37 FlagT Flags = FlagT(FlagsVal);
39 return Flags == FlagT::DataVolatile;
41 assert(
Version == 2 &&
"Provided invalid root signature version");
44 FlagT DataFlags = FlagT::DataVolatile | FlagT::DataStatic |
45 FlagT::DataStaticWhileSetAtExecute;
51 return (Flags | DataFlags) == DataFlags;
69 FlagT Flags = FlagT(FlagsVal);
71 const bool IsSampler =
78 return Flags == FlagT::DescriptorsVolatile;
79 return Flags == (FlagT::DataVolatile | FlagT::DescriptorsVolatile);
83 FlagT DataFlags = FlagT::DataVolatile | FlagT::DataStatic |
84 FlagT::DataStaticWhileSetAtExecute;
90 FlagT DescriptorFlags = FlagT::DescriptorsStaticKeepingBufferBoundsChecks |
91 FlagT::DescriptorsVolatile;
96 if ((Flags & FlagT::DescriptorsVolatile) == FlagT::DescriptorsVolatile) {
97 FlagT Mask = FlagT::DescriptorsVolatile;
99 Mask |= FlagT::DataVolatile;
100 Mask |= FlagT::DataStaticWhileSetAtExecute;
102 return (Flags & ~Mask) == FlagT::None;
107 if ((Flags & FlagT::DescriptorsStaticKeepingBufferBoundsChecks) ==
108 FlagT::DescriptorsStaticKeepingBufferBoundsChecks) {
109 FlagT Mask = FlagT::DescriptorsStaticKeepingBufferBoundsChecks;
111 Mask |= FlagT::DataVolatile;
112 Mask |= FlagT::DataStatic;
113 Mask |= FlagT::DataStaticWhileSetAtExecute;
115 return (Flags & ~Mask) == FlagT::None;
119 FlagT Mask = FlagT::None;
121 Mask |= FlagT::DataVolatile;
122 Mask |= FlagT::DataStaticWhileSetAtExecute;
123 Mask |= FlagT::DataStatic;
125 return (Flags & ~Mask) == FlagT::None;
129 return NumDescriptors > 0;
134#define FILTER(Num, Val) case llvm::to_underlying(dxbc::SamplerFilter::Val):
135#include "llvm/BinaryFormat/DXContainerConstants.def"
145#define TEXTURE_ADDRESS_MODE(Num, Val) \
146 case llvm::to_underlying(dxbc::TextureAddressMode::Val):
147#include "llvm/BinaryFormat/DXContainerConstants.def"
154 return MipLODBias >= -16.f && MipLODBias <= 15.99f;
158 return MaxAnisotropy <= 16u;
162 switch (ComparisonFunc) {
163#define COMPARISON_FUNC(Num, Val) \
164 case llvm::to_underlying(dxbc::ComparisonFunc::Val):
165#include "llvm/BinaryFormat/DXContainerConstants.def"
172 switch (BorderColor) {
173#define STATIC_BORDER_COLOR(Num, Val) \
174 case llvm::to_underlying(dxbc::StaticBorderColor::Val):
175#include "llvm/BinaryFormat/DXContainerConstants.def"
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
LLVM_ABI bool verifyAddress(uint32_t Address)
LLVM_ABI bool verifyRootDescriptorFlag(uint32_t Version, uint32_t FlagsVal)
LLVM_ABI bool verifyRegisterSpace(uint32_t RegisterSpace)
LLVM_ABI bool verifyComparisonFunc(uint32_t ComparisonFunc)
LLVM_ABI bool verifySamplerFilter(uint32_t Value)
LLVM_ABI bool verifyVersion(uint32_t Version)
LLVM_ABI bool verifyRootFlag(uint32_t Flags)
LLVM_ABI bool verifyLOD(float LOD)
LLVM_ABI bool verifyBorderColor(uint32_t BorderColor)
LLVM_ABI bool verifyMipLODBias(float MipLODBias)
LLVM_ABI bool verifyNumDescriptors(uint32_t NumDescriptors)
LLVM_ABI bool verifyDescriptorRangeFlag(uint32_t Version, uint32_t Type, uint32_t FlagsVal)
LLVM_ABI bool verifyMaxAnisotropy(uint32_t MaxAnisotropy)
LLVM_ABI bool verifyRangeType(uint32_t Type)
LLVM_ABI bool verifyRegisterValue(uint32_t RegisterValue)
This is an optimization pass for GlobalISel generic memory operations.
int popcount(T Value) noexcept
Count the number of set bits in a value.
constexpr std::underlying_type_t< Enum > to_underlying(Enum E)
Returns underlying integer value of an enum.