23 #ifndef __CLRX_AMDCL2BINARIES_H__ 24 #define __CLRX_AMDCL2BINARIES_H__ 26 #include <CLRX/Config.h> 31 #include <CLRX/amdbin/Elf.h> 83 {
return kernels.
size(); }
87 {
return kernels[index]; }
91 {
return kernels[index]; }
105 std::unique_ptr<AmdCL2GPUKernelStub[]> kernelStubs;
123 {
return binarySize; }
143 {
return kernelStubs[index]; }
156 size_t globalDataSize;
162 size_t samplerInitSize;
165 size_t textRelEntrySize;
167 size_t globalDataRelsNum;
168 size_t globalDataRelEntrySize;
169 cxbyte* globalDataRela;
193 {
return globalDataSize; }
197 {
return globalData; }
200 {
return globalData; }
204 {
return rwDataSize; }
214 {
return bssAlignment; }
221 {
return samplerInitSize; }
225 {
return samplerInit; }
228 {
return samplerInit; }
232 {
return textRelsNum; }
235 {
return *
reinterpret_cast<const Elf64_Rela*
>(textRela + textRelEntrySize*index); }
238 {
return *
reinterpret_cast<Elf64_Rela*
>(textRela + textRelEntrySize*index); }
242 {
return globalDataRelsNum; }
245 {
return *
reinterpret_cast<const Elf64_Rela*
>(globalDataRela +
246 globalDataRelEntrySize*index); }
249 {
return *
reinterpret_cast<Elf64_Rela*
>(globalDataRela +
250 globalDataRelEntrySize*index); }
265 uint64_t metadataSize;
266 uint32_t unknown1[3];
271 uint64_t unknown2[2];
272 uint64_t reqdWorkGroupSize[3];
273 uint64_t unknown3[2];
276 uint64_t unknown4[3];
278 uint64_t unknown5[2];
288 uint64_t unknown1, unknown2;
300 uint32_t isPointerOrPipe;
319 cxuint driverVersion;
323 std::unique_ptr<AmdGPUKernelHeader[]> kernelHeaders;
324 MetadataMap isaMetadataMap;
327 std::unique_ptr<AmdCL2InnerGPUBinaryBase> innerBinary;
346 bool hasInnerBinary()
const 347 {
return innerBinary.get()!=
nullptr; }
351 {
return driverVersion; }
355 {
return *innerBinary; }
359 {
return *innerBinary; }
379 {
return kernelHeaders[index]; }
385 {
return isaMetadatas.
size(); }
389 {
return isaMetadatas[index]; }
395 {
return isaMetadatas[index].
size; }
399 {
return isaMetadatas[index].
data; }
403 {
return isaMetadatas[index].
data; }
407 {
return metadatas[index]; }
413 {
return metadatas[index].size; }
417 {
return metadatas[index].data; }
421 {
return metadatas[index].data; }
425 {
return aclVersionString; }
429 extern bool isAmdCL2Binary(
size_t binarySize,
const cxbyte* binary);
size_t codeSize
size
Definition: AmdCL2Binaries.h:57
bool hasKernelData() const
return if binary has kernel datas
Definition: AmdCL2Binaries.h:132
create kernel setup
Definition: AmdCL2Binaries.h:42
non copyable and non movable base structure (class)
Definition: Utilities.h:43
const cxbyte * getRwData() const
get readwrite atomic data
Definition: AmdCL2Binaries.h:207
uint32_t Flags
type for declaring various flags
Definition: Utilities.h:97
size_t getTextRelaEntriesNum() const
get text rel entries number
Definition: AmdCL2Binaries.h:231
cxbyte isRestrict
if pointer is restrict
Definition: AmdCL2Binaries.h:302
cxbyte * code
data
Definition: AmdCL2Binaries.h:58
create kernel setups map
Definition: AmdCL2Binaries.h:47
Array< std::pair< CString, size_t > > KernelDataMap
inner binary map type
Definition: AmdCL2Binaries.h:75
size_t getSize() const
return binary size
Definition: AmdCL2Binaries.h:122
std::unique_ptr< AmdCL2GPUKernelMetadata[]> metadatas
AMD metadatas.
Definition: AmdCL2Binaries.h:321
uint32_t ptrSpace
pointer space
Definition: AmdCL2Binaries.h:299
cxbyte * getBinaryCode()
return binary code
Definition: AmdCL2Binaries.h:128
const AmdCL2InnerGPUBinary & getInnerBinary() const
get inner binary
Definition: AmdCL2Binaries.h:362
size_t getGlobalDataRelaEntriesNum() const
get global data rel entries number
Definition: AmdCL2Binaries.h:241
class ElfBinaryTemplate< Elf64Types > ElfBinary64
type for 64-bit ELF binary
Definition: ElfBinaries.h:432
Array< AmdCL2GPUKernel > kernels
kernel headers
Definition: AmdCL2Binaries.h:77
uint32_t ptrAlignment
pointer alignment
Definition: AmdCL2Binaries.h:297
cxbyte * getGlobalData()
get global data
Definition: AmdCL2Binaries.h:199
Elf64_Rela & getTextRelaEntry(size_t index)
get text rela entry
Definition: AmdCL2Binaries.h:237
const Elf64_Rela & getTextRelaEntry(size_t index) const
get text rela entry
Definition: AmdCL2Binaries.h:234
const AmdCL2GPUKernelMetadata & getMetadataEntry(size_t index) const
get kernel metadata by index
Definition: AmdCL2Binaries.h:406
uint32_t argOffset
virtual argument offset
Definition: AmdCL2Binaries.h:295
an array class
Definition: Containers.h:38
const AmdCL2GPUKernelStub & getKernelStub(size_t index) const
get kernel stub for specified index
Definition: AmdCL2Binaries.h:142
size_t getMetadataSize(size_t index) const
get metadata size for specified inner binary
Definition: AmdCL2Binaries.h:412
uint32_t resId
resource id
Definition: AmdCL2Binaries.h:291
uint32_t kindOfType
kind of type
Definition: AmdCL2Binaries.h:305
size_t getBssSize() const
get bss section's size
Definition: AmdCL2Binaries.h:216
size_t getBssAlignment() const
get bss alignment
Definition: AmdCL2Binaries.h:213
all AMD binaries creation flags
Definition: AmdBinaries.h:58
size_t getISAMetadataSize(size_t index) const
get ISA metadata size for specified inner binary
Definition: AmdCL2Binaries.h:394
AMD OpenCL 2.0 GPU kernel stub.
Definition: AmdCL2Binaries.h:62
const cxbyte * getBinaryCode() const
return binary code
Definition: AmdCL2Binaries.h:125
size_t getKernelsNum() const
get kernels number
Definition: AmdCL2Binaries.h:82
bool isAmdCL2Binary(size_t binarySize, const cxbyte *binary)
check whether is Amd OpenCL 2.0 binary
AMD OpenCL 2.0 main binary for GPU for 64-bit mode.
Definition: AmdCL2Binaries.h:314
AmdCL2InnerGPUBinaryBase & getInnerBinaryBase()
get inner binary base
Definition: AmdCL2Binaries.h:358
size_t getISAMetadatasNum() const
get number of ISA metadatas
Definition: AmdCL2Binaries.h:384
uint64_t size
entry size
Definition: AmdCL2Binaries.h:285
AmdCL2GPUKernel & getKernelData(size_t index)
get kernel data for specified index
Definition: AmdCL2Binaries.h:90
create kernel setup
Definition: AmdCL2Binaries.h:46
cxbyte isVolatile
nonzero if pointer or pipe
Definition: AmdCL2Binaries.h:301
CString aclVersionString
acl version string
Definition: AmdCL2Binaries.h:326
const cxbyte * getISAMetadata(size_t index) const
get ISA metadata for specified inner binary
Definition: AmdCL2Binaries.h:398
uint32_t isConst
is const pointer
Definition: AmdCL2Binaries.h:306
const AmdCL2GPUKernelMetadata & getISAMetadataEntry(size_t index) const
get kernel ISA metadata by kernel index
Definition: AmdCL2Binaries.h:388
main namespace
Definition: AsmFormats.h:41
cxbyte * data
setup data
Definition: AmdCL2Binaries.h:65
bool hasKernelInfo() const
returns true if binary has kernel informations
Definition: AmdCL2Binaries.h:334
bool hasInfoStrings() const
returns true if binary has info strings
Definition: AmdCL2Binaries.h:342
const cxbyte * getGlobalData() const
get global data
Definition: AmdCL2Binaries.h:196
const AmdCL2OldInnerGPUBinary & getOldInnerBinary() const
get old inner binary
Definition: AmdCL2Binaries.h:370
cxbyte * getISAMetadata(size_t index)
get ISA metadata for specified inner binary
Definition: AmdCL2Binaries.h:402
uint64_t argNameSize
argument name size
Definition: AmdCL2Binaries.h:286
main AMD binary base class
Definition: AmdBinaries.h:399
AMD OpenCL 2.0 GPU metadata for kernel.
Definition: AmdCL2Binaries.h:52
inlines for accessing memory words in LittleEndian and unaligned
cxbyte * getMetadata(size_t index)
get metadata for specified inner binary
Definition: AmdCL2Binaries.h:420
AmdCL2InnerGPUBinary & getInnerBinary()
get inner binary
Definition: AmdCL2Binaries.h:366
const CString & getAclVersionString() const
get acl version string
Definition: AmdCL2Binaries.h:424
size_t getGlobalDataSize() const
get global data size
Definition: AmdCL2Binaries.h:192
bool hasKernelDataMap() const
return if binary has kernel datas map
Definition: AmdCL2Binaries.h:135
const AmdGPUKernelHeader & getKernelHeaderEntry(size_t index) const
get kernel header for specified index
Definition: AmdCL2Binaries.h:378
bool hasKernelDataMap() const
return if binary has kernel datas map
Definition: AmdCL2Binaries.h:188
AMD OpenCL 2.0 inner binary for GPU binaries that represent a single kernel.
Definition: AmdCL2Binaries.h:153
KernelDataMap kernelDataMap
kernel data map
Definition: AmdCL2Binaries.h:78
bool hasKernelInfoMap() const
returns true if binary has kernel informations map
Definition: AmdCL2Binaries.h:338
utilities for other libraries and programs
create compile options and driver info
Definition: AmdBinaries.h:49
const AmdCL2GPUKernel & getKernelData(size_t index) const
get kernel data for specified index
Definition: AmdCL2Binaries.h:86
size_t size
setup size
Definition: AmdCL2Binaries.h:64
GPU kernel argument entry.
Definition: AmdCL2Binaries.h:283
size_t getSamplerInitSize() const
get global data size
Definition: AmdCL2Binaries.h:220
const AmdCL2InnerGPUBinaryBase & getInnerBinaryBase() const
get inner binary base
Definition: AmdCL2Binaries.h:354
uint32_t vectorLength
vector length (for old drivers not aligned)
Definition: AmdCL2Binaries.h:290
Array< AmdCL2GPUKernelMetadata > isaMetadatas
AMD metadatas.
Definition: AmdCL2Binaries.h:322
AMD OpenCL 2.0 old inner binary for GPU binaries that represent a single kernel.
Definition: AmdCL2Binaries.h:98
bool hasKernelStubs() const
return if binary has kernel stubs
Definition: AmdCL2Binaries.h:138
Elf64_Rela & getGlobalDataRelaEntry(size_t index)
get global data rela entry
Definition: AmdCL2Binaries.h:248
size_t size() const
returns number of elements
Definition: Containers.h:169
create kernel informations
Definition: AmdBinaries.h:46
const T * data() const
get data
Definition: Containers.h:242
uint32_t argType
argument type
Definition: AmdCL2Binaries.h:296
uint64_t typeNameSize
type name size
Definition: AmdCL2Binaries.h:287
size_t setupSize
setup size
Definition: AmdCL2Binaries.h:55
const Elf64_Rela & getGlobalDataRelaEntry(size_t index) const
get global data rela entry
Definition: AmdCL2Binaries.h:244
CString kernelName
kernel name
Definition: AmdCL2Binaries.h:54
create kernel setups map
Definition: AmdCL2Binaries.h:43
const cxbyte * getSamplerInit() const
get global data
Definition: AmdCL2Binaries.h:224
cxbyte * setup
setup data
Definition: AmdCL2Binaries.h:56
create map of kernel informations
Definition: AmdBinaries.h:47
size_t getRwDataSize() const
get readwrite global data size
Definition: AmdCL2Binaries.h:203
cxbyte * getRwData()
get readwrite atomic data
Definition: AmdCL2Binaries.h:210
cxbyte isPipe
if pipe
Definition: AmdCL2Binaries.h:303
AmdCL2OldInnerGPUBinary & getOldInnerBinary()
get old inner binary
Definition: AmdCL2Binaries.h:374
create kernel stub
Definition: AmdCL2Binaries.h:48
const cxbyte * getMetadata(size_t index) const
get metadata for specified inner binary
Definition: AmdCL2Binaries.h:416
uint32_t ptrType
pointer type
Definition: AmdCL2Binaries.h:298
simple C-string container
Definition: CString.h:38
create kernel stub
Definition: AmdCL2Binaries.h:44
containers and other utils for other libraries and programs
AMD OpenCL 2.0 inner binary base class.
Definition: AmdCL2Binaries.h:71
cxuint getDriverVersion() const
get driver version
Definition: AmdCL2Binaries.h:350
cxbyte * getSamplerInit()
get global data
Definition: AmdCL2Binaries.h:227
bool hasKernelData() const
return if binary has kernel datas
Definition: AmdCL2Binaries.h:185