1129c056dSChris Bieneman //===- DXContainerYAML.cpp - DXContainer YAMLIO implementation ------------===//
2129c056dSChris Bieneman //
3129c056dSChris Bieneman // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4129c056dSChris Bieneman // See https://llvm.org/LICENSE.txt for license information.
5129c056dSChris Bieneman // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6129c056dSChris Bieneman //
7129c056dSChris Bieneman //===----------------------------------------------------------------------===//
8129c056dSChris Bieneman //
9129c056dSChris Bieneman // This file defines classes for handling the YAML representation of
10129c056dSChris Bieneman // DXContainerYAML.
11129c056dSChris Bieneman //
12129c056dSChris Bieneman //===----------------------------------------------------------------------===//
13129c056dSChris Bieneman 
14129c056dSChris Bieneman #include "llvm/ObjectYAML/DXContainerYAML.h"
15129c056dSChris Bieneman 
16129c056dSChris Bieneman namespace llvm {
17129c056dSChris Bieneman namespace yaml {
18129c056dSChris Bieneman 
mapping(IO & IO,DXContainerYAML::VersionTuple & Version)19129c056dSChris Bieneman void MappingTraits<DXContainerYAML::VersionTuple>::mapping(
20129c056dSChris Bieneman     IO &IO, DXContainerYAML::VersionTuple &Version) {
21129c056dSChris Bieneman   IO.mapRequired("Major", Version.Major);
22129c056dSChris Bieneman   IO.mapRequired("Minor", Version.Minor);
23129c056dSChris Bieneman }
24129c056dSChris Bieneman 
mapping(IO & IO,DXContainerYAML::FileHeader & Header)25129c056dSChris Bieneman void MappingTraits<DXContainerYAML::FileHeader>::mapping(
26129c056dSChris Bieneman     IO &IO, DXContainerYAML::FileHeader &Header) {
27129c056dSChris Bieneman   IO.mapRequired("Hash", Header.Hash);
28129c056dSChris Bieneman   IO.mapRequired("Version", Header.Version);
29129c056dSChris Bieneman   IO.mapOptional("FileSize", Header.FileSize);
30129c056dSChris Bieneman   IO.mapRequired("PartCount", Header.PartCount);
31129c056dSChris Bieneman   IO.mapOptional("PartOffsets", Header.PartOffsets);
32129c056dSChris Bieneman }
33129c056dSChris Bieneman 
mapping(IO & IO,DXContainerYAML::DXILProgram & Program)3421c94523SChris Bieneman void MappingTraits<DXContainerYAML::DXILProgram>::mapping(
3521c94523SChris Bieneman     IO &IO, DXContainerYAML::DXILProgram &Program) {
3621c94523SChris Bieneman   IO.mapRequired("MajorVersion", Program.MajorVersion);
3721c94523SChris Bieneman   IO.mapRequired("MinorVersion", Program.MinorVersion);
3821c94523SChris Bieneman   IO.mapRequired("ShaderKind", Program.ShaderKind);
3921c94523SChris Bieneman   IO.mapOptional("Size", Program.Size);
40*157f1f25SChris Bieneman   IO.mapRequired("DXILMajorVersion", Program.DXILMajorVersion);
4121c94523SChris Bieneman   IO.mapRequired("DXILMinorVersion", Program.DXILMinorVersion);
4221c94523SChris Bieneman   IO.mapOptional("DXILSize", Program.DXILSize);
4321c94523SChris Bieneman   IO.mapOptional("DXIL", Program.DXIL);
4421c94523SChris Bieneman }
4521c94523SChris Bieneman 
mapping(IO & IO,DXContainerYAML::Part & P)46129c056dSChris Bieneman void MappingTraits<DXContainerYAML::Part>::mapping(IO &IO,
47129c056dSChris Bieneman                                                    DXContainerYAML::Part &P) {
48129c056dSChris Bieneman   IO.mapRequired("Name", P.Name);
49129c056dSChris Bieneman   IO.mapRequired("Size", P.Size);
5021c94523SChris Bieneman   IO.mapOptional("Program", P.Program);
51129c056dSChris Bieneman }
52129c056dSChris Bieneman 
mapping(IO & IO,DXContainerYAML::Object & Obj)53129c056dSChris Bieneman void MappingTraits<DXContainerYAML::Object>::mapping(
54129c056dSChris Bieneman     IO &IO, DXContainerYAML::Object &Obj) {
55129c056dSChris Bieneman   IO.mapTag("!dxcontainer", true);
56129c056dSChris Bieneman   IO.mapRequired("Header", Obj.Header);
57129c056dSChris Bieneman   IO.mapRequired("Parts", Obj.Parts);
58129c056dSChris Bieneman }
59129c056dSChris Bieneman 
60129c056dSChris Bieneman } // namespace yaml
61129c056dSChris Bieneman } // namespace llvm
62