brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · d5a0edd Raw
79 lines · cpp
1//===- OffloadYAML.cpp - Offload Binary YAMLIO implementation -------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file defines classes for handling the YAML representation of offload10// binaries.11//12//===----------------------------------------------------------------------===//13 14#include <llvm/ObjectYAML/OffloadYAML.h>15 16namespace llvm {17 18namespace yaml {19 20void ScalarEnumerationTraits<object::ImageKind>::enumeration(21    IO &IO, object::ImageKind &Value) {22#define ECase(X) IO.enumCase(Value, #X, object::X)23  ECase(IMG_None);24  ECase(IMG_Object);25  ECase(IMG_Bitcode);26  ECase(IMG_Cubin);27  ECase(IMG_Fatbinary);28  ECase(IMG_PTX);29  ECase(IMG_LAST);30#undef ECase31  IO.enumFallback<Hex16>(Value);32}33 34void ScalarEnumerationTraits<object::OffloadKind>::enumeration(35    IO &IO, object::OffloadKind &Value) {36#define ECase(X) IO.enumCase(Value, #X, object::X)37  ECase(OFK_None);38  ECase(OFK_OpenMP);39  ECase(OFK_Cuda);40  ECase(OFK_HIP);41  ECase(OFK_LAST);42#undef ECase43  IO.enumFallback<Hex16>(Value);44}45 46void MappingTraits<OffloadYAML::Binary>::mapping(IO &IO,47                                                 OffloadYAML::Binary &O) {48  assert(!IO.getContext() && "The IO context is initialized already");49  IO.setContext(&O);50  IO.mapTag("!Offload", true);51  IO.mapOptional("Version", O.Version);52  IO.mapOptional("Size", O.Size);53  IO.mapOptional("EntryOffset", O.EntryOffset);54  IO.mapOptional("EntrySize", O.EntrySize);55  IO.mapRequired("Members", O.Members);56  IO.setContext(nullptr);57}58 59void MappingTraits<OffloadYAML::Binary::StringEntry>::mapping(60    IO &IO, OffloadYAML::Binary::StringEntry &SE) {61  assert(IO.getContext() && "The IO context is not initialized");62  IO.mapRequired("Key", SE.Key);63  IO.mapRequired("Value", SE.Value);64}65 66void MappingTraits<OffloadYAML::Binary::Member>::mapping(67    IO &IO, OffloadYAML::Binary::Member &M) {68  assert(IO.getContext() && "The IO context is not initialized");69  IO.mapOptional("ImageKind", M.ImageKind);70  IO.mapOptional("OffloadKind", M.OffloadKind);71  IO.mapOptional("Flags", M.Flags);72  IO.mapOptional("String", M.StringEntries);73  IO.mapOptional("Content", M.Content);74}75 76} // namespace yaml77 78} // namespace llvm79