28 OS <<
" (element " << ElementIndex <<
")";
35 "stacked packing is only valid for a vertex shader input signature");
38 for (
auto &&[Index, Element] :
enumerate(Elements)) {
41 assert(Element.Rows > 0 &&
"signature element must have at least one row");
43 "signature element must have between 1 and 4 columns");
53 "unexpected semantic interpretation for stacked packing, should "
54 "have been diagnosed by Sema");
59 static_cast<unsigned>(Index));
61 Element.StartRow = NextRow;
63 NextRow += Element.Rows;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
Tagged union holding either a T or a Error.
Represent a mutable reference to an array (0 or more elements consecutively in memory),...
void log(raw_ostream &OS) const override
Print an error message to an output stream.
This class implements an extremely fast bulk output stream that can only output to a stream.
static constexpr uint32_t UnallocatedRow
LLVM_ABI Expected< unsigned > packSignatureStacked(MutableArrayRef< SemanticSignatureElement > Elements, Triple::EnvironmentType ShaderStage, IOType IOTy)
Packs eligible signature elements into consecutive rows.
LLVM_ABI SemanticInterpretation getInterpretationKind(dxbc::PSV::SemanticKind SemanticKind, Triple::EnvironmentType ShaderStage, IOType IOTy)
static constexpr unsigned MaxSignatureRows
static constexpr uint8_t UnallocatedCol
static constexpr unsigned MaxSignatureCols
This is an optimization pass for GlobalISel generic memory operations.
auto enumerate(FirstRange &&First, RestRanges &&...Rest)
Given two or more input ranges, returns a new range whose values are tuples (A, B,...
Error make_error(ArgTs &&... Args)
Make a Error instance representing failure using the given error info type.