LLVM 22.0.0git
DXContainerReader.cpp
Go to the documentation of this file.
1//===- DXContainerReader.cpp ----------------------------------------------===//
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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "DXContainerReader.h"
10
11namespace llvm {
12namespace objcopy {
13namespace dxbc {
14
15using namespace object;
16
18 auto Obj = std::make_unique<Object>();
19 Obj->Header = DXContainerObj.getHeader();
20 for (const SectionRef &Part : DXContainerObj.sections()) {
21 DataRefImpl PartDRI = Part.getRawDataRefImpl();
22 Expected<StringRef> Name = DXContainerObj.getSectionName(PartDRI);
23 if (auto E = Name.takeError())
24 return E;
25 assert(Name->size() == 4 &&
26 "Valid DXIL Part name consists of 4 characters");
28 DXContainerObj.getSectionContents(PartDRI);
29 if (auto E = Data.takeError())
30 return E;
31 Obj->Parts.push_back({*Name, *Data});
32 }
33 return std::move(Obj);
34}
35
36} // end namespace dxbc
37} // end namespace objcopy
38} // end namespace llvm
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
Tagged union holding either a T or a Error.
Definition Error.h:485
Expected< std::unique_ptr< Object > > create() const
This is a value type class that represents a single section in the list of sections in the object fil...
Definition ObjectFile.h:83
This is an optimization pass for GlobalISel generic memory operations.
FunctionAddr VTableAddr uintptr_t uintptr_t Data
Definition InstrProf.h:189