33 static_cast<uint32_t>(dxbc::PSV::SemanticKind::Invalid);
35 static_cast<uint32_t>(dxbc::PSV::InterpolationMode::Invalid);
44 return makeError(
"expected integer operand " +
Twine(OpId));
45 return CI->getZExtValue();
51 return dxbc::PSV::SemanticKind::Arbitrary;
57 return dxbc::PSV::SemanticKind::Invalid;
62 switch (SemanticKind) {
63 case dxbc::PSV::SemanticKind::Arbitrary: {
64 static constexpr IOType OutOrPatchConstant =
76 case dxbc::PSV::SemanticKind::DispatchThreadID:
77 case dxbc::PSV::SemanticKind::GroupID:
78 case dxbc::PSV::SemanticKind::GroupIndex:
79 case dxbc::PSV::SemanticKind::GroupThreadID: {
88 case dxbc::PSV::SemanticKind::Target: {
93 case dxbc::PSV::SemanticKind::VertexID: {
98 case dxbc::PSV::SemanticKind::IsFrontFace: {
104 case dxbc::PSV::SemanticKind::Position: {
120 case dxbc::PSV::SemanticKind::ClipDistance:
121 case dxbc::PSV::SemanticKind::CullDistance: {
137 case dxbc::PSV::SemanticKind::TessFactor:
138 case dxbc::PSV::SemanticKind::InsideTessFactor: {
156 "a single IOType is expected, not a mask of IOTypes");
158 if (Info.Stage == ShaderStage && any(Info.AllowedIOTypesMask & IOTy))
159 return Info.Interpretation;
166 enum class OpIdx :
unsigned {
182 const unsigned NumElementOperands =
to_underlying(OpIdx::LastEntry) + 1;
185 return makeError(
"signature element node is null");
186 if (
Node->getNumOperands() != NumElementOperands)
187 return makeError(
"signature element node has wrong number of operands");
193 return SigId.takeError();
199 return makeError(
"expected semantic name string");
207 return makeError(
"invalid component type");
215 return makeError(
"invalid semantic kind");
221 return makeError(
"expected semantic indices node");
222 for (
unsigned I = 0, E = Indices->getNumOperands();
I != E; ++
I) {
225 return Index.takeError();
234 return makeError(
"invalid interpolation mode");
239 return Rows.takeError();
244 return Cols.takeError();
246 return makeError(
"number of components per row must be within 1-4");
260 return makeError(
"start column must be within 0-3 or unallocated");
265 return makeError(
"start row and column sentinels must be set together");
272 return makeError(
"usage mask must be a 4-bit value");
280 return makeError(
"dynamic index mask must be a 4-bit value");
288 return makeError(
"geometry shader stream index must be within 0-3");
293 "number of semantic indices must equal the number of rows");
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file contains the declarations for the subclasses of Constant, which represent the different fla...
This file contains library features backported from future STL versions.
This file implements the C++20 <bit> header.
Represent a constant reference to an array (0 or more elements consecutively in memory),...
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
This is an important class for using LLVM in a threaded context.
static MDTuple * get(LLVMContext &Context, ArrayRef< Metadata * > MDs)
static LLVM_ABI MDString * get(LLVMContext &Context, StringRef Str)
void push_back(const T &Elt)
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Represent a constant reference to a string, i.e.
bool equals_insensitive(StringRef RHS) const
Check for string equality, ignoring case.
bool consume_front_insensitive(StringRef Prefix)
Returns true if this StringRef has the given prefix, ignoring case, and removes that prefix.
Twine - A lightweight data structure for efficiently representing the concatenation of temporary valu...
The instances of the Type class are immutable: once they are created, they are never changed.
static LLVM_ABI IntegerType * getInt32Ty(LLVMContext &C)
static LLVM_ABI IntegerType * getInt8Ty(LLVMContext &C)
LLVM_ABI EnumStrings< SemanticKind, 1 > getSemanticKinds()
ElementType
The element type of an SRV or UAV resource.
static constexpr uint32_t UnallocatedRow
@ PatchConstantOrPrimitive
LLVM_ABI SemanticInterpretation getInterpretationKind(dxbc::PSV::SemanticKind SemanticKind, Triple::EnvironmentType ShaderStage, IOType IOTy)
LLVM_ABI ArrayRef< SemanticStageInfo > getAvailableStages(dxbc::PSV::SemanticKind SemanticKind)
LLVM_ABI dxbc::PSV::SemanticKind getSemanticKind(StringRef SemanticName)
static constexpr uint8_t UnallocatedCol
std::enable_if_t< detail::IsValidPointer< X, Y >::value, X * > dyn_extract_or_null(Y &&MD)
Extract a Value from Metadata, if any, allowing null.
This is an optimization pass for GlobalISel generic memory operations.
decltype(auto) dyn_cast(const From &Val)
dyn_cast<X> - Return the argument parameter cast to the specified type.
LLVM_ABI std::error_code inconvertibleErrorCode()
The value returned by this function can be returned from convertToErrorCode for Error values where no...
Error createStringError(std::error_code EC, char const *Fmt, const Ts &... Vals)
Create formatted StringError object.
constexpr bool has_single_bit(T Value) noexcept
constexpr std::underlying_type_t< Enum > to_underlying(Enum E)
Returns underlying integer value of an enum.
static LLVM_ABI Expected< SemanticSignatureElement > fromMetadata(const MDNode *Node)
SmallVector< uint32_t > SemanticIndices
dxil::ElementType CompType
dxbc::PSV::SemanticKind SemanticKind
SemanticSignatureElement()=default
dxbc::PSV::InterpolationMode InterpMode
LLVM_ABI MDNode * toMetadata(LLVMContext &Ctx) const