diff options
Diffstat (limited to 'llvm/lib/ObjectYAML/DXContainerYAML.cpp')
| -rw-r--r-- | llvm/lib/ObjectYAML/DXContainerYAML.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/ObjectYAML/DXContainerYAML.cpp b/llvm/lib/ObjectYAML/DXContainerYAML.cpp index a6871e7855e4..38063670aee6 100644 --- a/llvm/lib/ObjectYAML/DXContainerYAML.cpp +++ b/llvm/lib/ObjectYAML/DXContainerYAML.cpp @@ -74,6 +74,16 @@ DXContainerYAML::PSVInfo::PSVInfo(const dxbc::PSV::v2::RuntimeInfo *P) memcpy(&Info, P, sizeof(dxbc::PSV::v2::RuntimeInfo)); } +DXContainerYAML::PSVInfo::PSVInfo(const dxbc::PSV::v3::RuntimeInfo *P, + StringRef StringTable) + : Version(3), + EntryName(StringTable.substr(P->EntryNameOffset, + StringTable.find('\0', P->EntryNameOffset) - + P->EntryNameOffset)) { + memset(&Info, 0, sizeof(Info)); + memcpy(&Info, P, sizeof(dxbc::PSV::v3::RuntimeInfo)); +} + namespace yaml { void MappingTraits<DXContainerYAML::VersionTuple>::mapping( @@ -348,6 +358,11 @@ void DXContainerYAML::PSVInfo::mapInfoForVersion(yaml::IO &IO) { IO.mapRequired("NumThreadsX", Info.NumThreadsX); IO.mapRequired("NumThreadsY", Info.NumThreadsY); IO.mapRequired("NumThreadsZ", Info.NumThreadsZ); + + if (Version == 2) + return; + + IO.mapRequired("EntryName", EntryName); } } // namespace llvm |
