LLVM: include/llvm/Object/OffloadBinary.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17#ifndef LLVM_OBJECT_OFFLOADBINARY_H

18#define LLVM_OBJECT_OFFLOADBINARY_H

19

27#include

28

29namespace llvm {

30

32

33

42

43

54

55

56

57

58

59

60

61

62

63

64class OffloadBinary : public Binary {

65public:

68

69

71

72

78 std::unique_ptr Image;

79 };

80

81

84

85

87

89

95

99 return StringRef(&Buffer[TheEntry->ImageOffset], TheEntry->ImageSize);

100 }

101

102

104

106

107 static bool classof(const Binary *V) { return V->isOffloadFile(); }

108

116

126

131

132private:

134 const Entry *TheEntry)

136 TheHeader(TheHeader), TheEntry(TheEntry) {

138 reinterpret_cast<const StringEntry *>(&Buffer[TheEntry->StringOffset]);

139 for (uint64_t I = 0, E = TheEntry->NumStrings; I != E; ++I) {

140 StringRef Key = &Buffer[StringMapBegin[I].KeyOffset];

141 StringData[Key] = &Buffer[StringMapBegin[I].ValueOffset];

142 }

143 }

144

146

147

149

150 const char *Buffer;

151

152 const Header *TheHeader;

153

154 const Entry *TheEntry;

155};

156

157

158

160public:

161 using TargetID = std::pair<StringRef, StringRef>;

162

164 std::unique_ptr Buffer)

166

167

170 getBinary()->getMemoryBufferRef().getBuffer(),

171 getBinary()->getMemoryBufferRef().getBufferIdentifier());

172

173

175 assert(NewBinaryOrErr && "Failed to parse a copy of the binary?");

176 if (!NewBinaryOrErr)

178 return OffloadFile(std::move(*NewBinaryOrErr), std::move(Buffer));

179 }

180

181

182

186};

187

188

189

192

193

195

196

198

199

201

202

204

205

206

207

208

209

210

211

212

213

216

217}

218

219}

220#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")

This file implements a map that provides insertion order iteration.

This file defines the SmallString class.

Lightweight error class with error context and mandatory checking.

Tagged union holding either a T or a Error.

This class implements a map that also provides access to all stored values in a deterministic order.

typename VectorType::const_iterator const_iterator

static std::unique_ptr< MemoryBuffer > getMemBufferCopy(StringRef InputData, const Twine &BufferName="")

Open the specified memory range as a MemoryBuffer, copying the contents and taking ownership of it.

SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

StringRef - Represent a constant reference to a string, i.e.

A range adaptor for a pair of iterators.

OffloadBinary * getBinary()

Binary(unsigned int Type, MemoryBufferRef Source)

A simple binary serialization of an offloading file.

Definition OffloadBinary.h:64

static uint64_t getAlignment()

Definition OffloadBinary.h:88

OffloadKind getOffloadKind() const

Definition OffloadBinary.h:91

iterator_range< string_iterator > string_iterator_range

Definition OffloadBinary.h:67

StringRef getString(StringRef Key) const

Definition OffloadBinary.h:105

uint32_t getVersion() const

Definition OffloadBinary.h:92

StringRef getImage() const

Definition OffloadBinary.h:98

static LLVM_ABI SmallString< 0 > write(const OffloadingImage &)

Serialize the contents of File to a binary buffer to be read later.

uint32_t getFlags() const

Definition OffloadBinary.h:93

StringRef getTriple() const

Definition OffloadBinary.h:96

ImageKind getImageKind() const

Definition OffloadBinary.h:90

static LLVM_ABI Expected< std::unique_ptr< OffloadBinary > > create(MemoryBufferRef)

Attempt to parse the offloading binary stored in Data.

static bool classof(const Binary *V)

Definition OffloadBinary.h:107

string_iterator_range strings() const

Definition OffloadBinary.h:103

StringRef getArch() const

Definition OffloadBinary.h:97

uint64_t getSize() const

Definition OffloadBinary.h:94

static const uint32_t Version

The current version of the binary used for backwards compatibility.

Definition OffloadBinary.h:70

MapVector< StringRef, StringRef >::const_iterator string_iterator

Definition OffloadBinary.h:66

std::pair< StringRef, StringRef > TargetID

Definition OffloadBinary.h:161

OffloadFile copy() const

Make a deep copy of this offloading file.

Definition OffloadBinary.h:168

OffloadFile(std::unique_ptr< OffloadBinary > Binary, std::unique_ptr< MemoryBuffer > Buffer)

Definition OffloadBinary.h:163

LLVM_ABI Error extractOffloadBinaries(MemoryBufferRef Buffer, SmallVectorImpl< OffloadFile > &Binaries)

Extracts embedded device offloading code from a memory Buffer to a list of Binaries.

LLVM_ABI ImageKind getImageKind(StringRef Name)

Convert a string Name to an image kind.

LLVM_ABI bool areTargetsCompatible(const OffloadFile::TargetID &LHS, const OffloadFile::TargetID &RHS)

If the target is AMD we check the target IDs for mutual compatibility.

OffloadKind

The producer of the associated offloading image.

Definition OffloadBinary.h:34

@ OFK_SYCL

Definition OffloadBinary.h:39

@ OFK_LAST

Definition OffloadBinary.h:40

@ OFK_Cuda

Definition OffloadBinary.h:37

@ OFK_None

Definition OffloadBinary.h:35

@ OFK_HIP

Definition OffloadBinary.h:38

@ OFK_OpenMP

Definition OffloadBinary.h:36

LLVM_ABI OffloadKind getOffloadKind(StringRef Name)

Convert a string Name to an offload kind.

LLVM_ABI StringRef getImageKindName(ImageKind Name)

Convert an image kind to its string representation.

ImageKind

The type of contents the offloading image contains.

Definition OffloadBinary.h:44

@ IMG_Fatbinary

Definition OffloadBinary.h:49

@ IMG_SPIRV

Definition OffloadBinary.h:51

@ IMG_Object

Definition OffloadBinary.h:46

@ IMG_None

Definition OffloadBinary.h:45

@ IMG_LAST

Definition OffloadBinary.h:52

@ IMG_Bitcode

Definition OffloadBinary.h:47

@ IMG_PTX

Definition OffloadBinary.h:50

@ IMG_Cubin

Definition OffloadBinary.h:48

LLVM_ABI StringRef getOffloadKindName(OffloadKind Name)

Convert an offload kind to its string representation.

This is an optimization pass for GlobalISel generic memory operations.

LLVM_ATTRIBUTE_VISIBILITY_DEFAULT AnalysisKey InnerAnalysisManagerProxy< AnalysisManagerT, IRUnitT, ExtraArgTs... >::Key

OutputIt move(R &&Range, OutputIt Out)

Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.

void consumeError(Error Err)

Consume a Error without doing anything.

Implement std::hash so that hash_code can be used in STL containers.

Definition OffloadBinary.h:117

uint64_t NumStrings

Definition OffloadBinary.h:122

uint64_t ImageOffset

Definition OffloadBinary.h:123

ImageKind TheImageKind

Definition OffloadBinary.h:118

uint64_t ImageSize

Definition OffloadBinary.h:124

uint32_t Flags

Definition OffloadBinary.h:120

OffloadKind TheOffloadKind

Definition OffloadBinary.h:119

uint64_t StringOffset

Definition OffloadBinary.h:121

The offloading metadata that will be serialized to a memory buffer.

Definition OffloadBinary.h:73

OffloadKind TheOffloadKind

Definition OffloadBinary.h:75

uint32_t Flags

Definition OffloadBinary.h:76

std::unique_ptr< MemoryBuffer > Image

Definition OffloadBinary.h:78

ImageKind TheImageKind

Definition OffloadBinary.h:74

MapVector< StringRef, StringRef > StringData

Definition OffloadBinary.h:77

Definition OffloadBinary.h:127

uint64_t ValueOffset

Definition OffloadBinary.h:129

uint64_t KeyOffset

Definition OffloadBinary.h:128