21static_assert((
uint64_t)dxbc::FeatureFlags::NextUnusedBit <= 1ull << 63,
22 "Shader flag bits exceed enum size.");
25#define SHADER_FLAG(Num, Val, Str) \
26 Val = (FlagData & (uint64_t)dxbc::FeatureFlags::Val) > 0;
27#include "llvm/BinaryFormat/DXContainerConstants.def"
32#define SHADER_FLAG(Num, Val, Str) \
34 Flag |= (uint64_t)dxbc::FeatureFlags::Val;
35#include "llvm/BinaryFormat/DXContainerConstants.def"
41 dxbc::HashFlags::IncludesSource)) != 0),
56 assert(Stage < std::numeric_limits<uint8_t>::max() &&
57 "Stage should be a very small number");
79 IO.mapRequired(
"Major", Version.Major);
80 IO.mapRequired(
"Minor", Version.Minor);
85 IO.mapRequired(
"Hash", Header.Hash);
86 IO.mapRequired(
"Version", Header.Version);
87 IO.mapOptional(
"FileSize", Header.FileSize);
88 IO.mapRequired(
"PartCount", Header.PartCount);
89 IO.mapOptional(
"PartOffsets", Header.PartOffsets);
96 IO.mapRequired(
"ShaderKind", Program.
ShaderKind);
97 IO.mapOptional(
"Size", Program.
Size);
100 IO.mapOptional(
"DXILSize", Program.
DXILSize);
101 IO.mapOptional(
"DXIL", Program.
DXIL);
106#define SHADER_FLAG(Num, Val, Str) IO.mapRequired(#Val, Flags.Val);
107#include "llvm/BinaryFormat/DXContainerConstants.def"
113 IO.mapRequired(
"Digest", Hash.
Digest);
118 IO.mapRequired(
"Version", PSV.
Version);
121 void *OldContext = IO.getContext();
123 IO.setContext(&Version);
130 IO.mapRequired(
"Resources", PSV.
Resources);
133 IO.setContext(OldContext);
138 IO.mapRequired(
"Name",
P.Name);
139 IO.mapRequired(
"Size",
P.Size);
140 IO.mapOptional(
"Program",
P.Program);
141 IO.mapOptional(
"Flags",
P.Flags);
142 IO.mapOptional(
"Hash",
P.Hash);
143 IO.mapOptional(
"PSVInfo",
P.Info);
148 IO.mapTag(
"!dxcontainer",
true);
149 IO.mapRequired(
"Header", Obj.
Header);
150 IO.mapRequired(
"Parts", Obj.
Parts);
155 IO.mapRequired(
"Type", Res.
Type);
156 IO.mapRequired(
"Space", Res.
Space);
164 IO.mapRequired(
"Kind", Res.
Kind);
165 IO.mapRequired(
"Flags", Res.
Flags);
189 IO.mapRequired(
"InputControlPointCount",
191 IO.mapRequired(
"OutputControlPointCount",
194 IO.mapRequired(
"TessellatorOutputPrimitive",
198 IO.mapRequired(
"InputControlPointCount",
205 IO.mapRequired(
"GroupSharedBytesDependentOnViewID",
218 IO.mapRequired(
"MinimumWaveLaneCount",
Info.MinimumWaveLaneCount);
219 IO.mapRequired(
"MaximumWaveLaneCount",
Info.MaximumWaveLaneCount);
224 IO.mapRequired(
"UsesViewID",
Info.UsesViewID);
228 IO.mapRequired(
"MaxVertexCount",
Info.GeomData.MaxVertexCount);
232 IO.mapRequired(
"SigPatchConstOrPrimVectors",
233 Info.GeomData.SigPatchConstOrPrimVectors);
236 IO.mapRequired(
"SigPrimVectors",
Info.GeomData.MeshInfo.SigPrimVectors);
237 IO.mapRequired(
"MeshOutputTopology",
238 Info.GeomData.MeshInfo.MeshOutputTopology);
244 IO.mapRequired(
"SigInputElements",
Info.SigInputElements);
245 IO.mapRequired(
"SigOutputElements",
Info.SigOutputElements);
246 IO.mapRequired(
"SigPatchConstOrPrimElements",
247 Info.SigPatchConstOrPrimElements);
248 IO.mapRequired(
"SigInputVectors",
Info.SigInputVectors);
250 IO.mapRequired(
"SigOutputVectors", Vec);
255 IO.mapRequired(
"NumThreadsX",
Info.NumThreadsX);
256 IO.mapRequired(
"NumThreadsY",
Info.NumThreadsY);
257 IO.mapRequired(
"NumThreadsZ",
Info.NumThreadsZ);
Analysis containing CSE Info
This file declares classes for handling the YAML representation of DXContainer.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
MutableArrayRef - Represent a mutable reference to an array (0 or more elements consecutively in memo...
Triple::EnvironmentType getShaderStage(uint32_t Kind)
This is an optimization pass for GlobalISel generic memory operations.
uint16_t DXILMajorVersion
std::optional< uint32_t > Size
uint16_t DXILMinorVersion
std::optional< std::vector< llvm::yaml::Hex8 > > DXIL
std::optional< uint32_t > DXILSize
std::vector< Part > Parts
std::vector< ResourceBindInfo > Resources
dxbc::PSV::v2::RuntimeInfo Info
void mapInfoForVersion(yaml::IO &IO)
uint64_t getEncodedFlags()
std::vector< llvm::yaml::Hex8 > Digest
uint32_t PayloadSizeInBytes
uint32_t InputControlPointCount
uint32_t TessellatorDomain
uint8_t OutputPositionPresent
uint8_t OutputPositionPresent
uint32_t OutputStreamMask
uint32_t TessellatorOutputPrimitive
uint32_t OutputControlPointCount
uint32_t InputControlPointCount
uint32_t TessellatorDomain
uint32_t PayloadSizeInBytes
uint16_t MaxOutputVertices
uint16_t MaxOutputPrimitives
uint32_t GroupSharedBytesDependentOnViewID
uint32_t GroupSharedBytesUsed
uint8_t OutputPositionPresent