23 #ifndef __CLRX_ROCMBINARIES_H__ 24 #define __CLRX_ROCMBINARIES_H__ 86 MAX_VALUE = HIDDEN_COMPLETION_ACTION
127 MAX_VALUE = READ_WRITE
168 uint64_t maxFlatWorkGroupSize;
169 cxuint fixedWorkGroupSize[3];
194 void parse(
size_t metadataSize,
const char* metadata);
208 std::unique_ptr<ROCmRegion[]> regions;
209 RegionMap regionsMap;
212 size_t globalDataSize;
217 std::unique_ptr<ROCmMetadata> metadataInfo;
218 RegionMap kernelInfosMap;
230 uint32_t& archStepping)
const;
234 {
return regionsNum; }
238 {
return regions[index]; }
241 const ROCmRegion& getRegion(
const char* name)
const;
255 {
return globalDataSize; }
259 {
return globalData; }
262 {
return globalData; }
266 {
return metadataSize; }
276 {
return metadataInfo!=
nullptr; }
280 {
return *metadataInfo; }
284 {
return metadataInfo->kernels.size(); }
288 {
return metadataInfo->kernels[index]; }
299 {
return newBinFormat; }
303 {
return gotSymbols.
size(); }
307 {
return gotSymbols; }
311 {
return gotSymbols[index]; }
323 ROCMFLAG_USE_DISPATCH_PTR = AMDHSAFLAG_USE_DISPATCH_PTR,
326 ROCMFLAG_USE_DISPATCH_ID = AMDHSAFLAG_USE_DISPATCH_ID,
327 ROCMFLAG_USE_FLAT_SCRATCH_INIT = AMDHSAFLAG_USE_FLAT_SCRATCH_INIT,
329 ROCMFLAG_USE_GRID_WORKGROUP_COUNT_BIT = AMDHSAFLAG_USE_GRID_WORKGROUP_COUNT_BIT,
334 ROCMFLAG_USE_ORDERED_APPEND_GDS = AMDHSAFLAG_USE_ORDERED_APPEND_GDS,
337 ROCMFLAG_USE_DYNAMIC_CALL_STACK = AMDHSAFLAG_USE_DYNAMIC_CALL_STACK,
353 ROCMSECTID_HASH = ELFSECTID_OTHER_BUILTIN,
356 ROCMSECTID_GPUCONFIG,
359 ROCMSECTID_MAX = ROCMSECTID_GOT
403 void addEmptyKernel(
const char* kernelName);
413 std::unique_ptr<ElfBinaryGen64> elfBinGen64;
418 std::unique_ptr<cxbyte[]> noteBuf;
419 std::string metadataStr;
421 const char* metadata;
423 uint16_t mainBuiltinSectTable[ROCMSECTID_MAX-ELFSECTID_START+1];
425 void* rocmRelaDynGen;
427 void generateInternal(std::ostream* osPtr, std::vector<char>* vPtr,
447 size_t codeSize,
const cxbyte* code,
448 size_t globalDataSize,
const cxbyte* globalData,
449 const std::vector<ROCmSymbolInput>& symbols);
452 size_t codeSize,
const cxbyte* code,
453 size_t globalDataSize,
const cxbyte* globalData,
454 std::vector<ROCmSymbolInput>&& symbols);
465 void prepareBinaryGen();
468 {
return elfBinGen64->getRegionOffset(
469 mainBuiltinSectTable[sectionId - ELFSECTID_START]); }
471 void updateSymbols();
477 void generate(std::ostream& os);
480 void generate(std::vector<char>& vector);
ROCmAccessQual
ROCm access qualifier.
Definition: ROCmBinaries.h:121
CString format
printf format
Definition: ROCmBinaries.h:181
ROCmValueKind
ROCm Value kind.
Definition: ROCmBinaries.h:70
use ordered append gds
Definition: Commons.h:56
ROCm data region.
Definition: ROCmBinaries.h:61
non copyable and non movable base structure (class)
Definition: Utilities.h:46
uint32_t Flags
type for declaring various flags
Definition: Utilities.h:100
const ROCmInput * getInput() const
get input
Definition: ROCmBinaries.h:459
ROCmRegionType type
type
Definition: ROCmBinaries.h:66
uint64_t pointeeAlign
alignemnt of pointed data of pointer
Definition: ROCmBinaries.h:137
const char * getMetadata() const
get metadata
Definition: ROCmBinaries.h:268
size_t size
data size
Definition: ROCmBinaries.h:64
bool isRestrict
is restrict
Definition: ROCmBinaries.h:144
ROCm printf call info.
Definition: ROCmBinaries.h:177
class ElfBinaryTemplate< Elf64Types > ElfBinary64
type for 64-bit ELF binary
Definition: ElfBinaries.h:483
use 64-bit pointers
Definition: Commons.h:57
CString regionName
region name
Definition: ROCmBinaries.h:63
creation flags for ELF binaries
Definition: ElfBinaries.h:73
ROCmValueKind valueKind
value kind
Definition: ROCmBinaries.h:138
AMD HSA kernel configuration structure.
Definition: Commons.h:64
use workgroup count for Y dim
Definition: Commons.h:52
common definitions for binaries
size_t offset
data
Definition: ROCmBinaries.h:65
const Array< size_t > getGotSymbols() const
get GOT symbols (indices) (from elfbin dynsymbols)
Definition: ROCmBinaries.h:306
use kernel argument segment pointer
Definition: Commons.h:46
use workgroup count for X dim
Definition: Commons.h:51
size_t getKernelInfosNum() const
get kernel metadata infos number
Definition: ROCmBinaries.h:283
const ROCmRegion & getRegion(size_t index) const
get region by index
Definition: ROCmBinaries.h:237
const ROCmKernelMetadata & getKernelInfo(size_t index) const
get kernel metadata info
Definition: ROCmBinaries.h:287
Array< uint32_t > argSizes
unique id of call
Definition: ROCmBinaries.h:180
uint64_t align
argument alignment in bytes
Definition: ROCmBinaries.h:136
ROCmValueType
ROCm argument's value type.
Definition: ROCmBinaries.h:90
size_t getSectionOffset(cxuint sectionId) const
get section offset (from main section)
Definition: ROCmBinaries.h:467
use private segment buffer
Definition: Commons.h:43
size_t getMetadataSize() const
get metadata size
Definition: ROCmBinaries.h:265
ROCmAccessQual actualAccessQual
actual access qualifier
Definition: ROCmBinaries.h:142
size_t getCodeSize() const
get code size
Definition: ROCmBinaries.h:244
cxbyte * getGlobalData()
get global data
Definition: ROCmBinaries.h:261
CString name
name
Definition: ROCmBinaries.h:133
ROCm main binary for GPU for 64-bit mode.
Definition: ROCmBinaries.h:201
data object
Definition: ROCmBinaries.h:55
bool isConst
is constant
Definition: ROCmBinaries.h:143
bool isROCmBinary(size_t binarySize, const cxbyte *binary)
check whether is Amd OpenCL 2.0 binary
ROCmAccessQual accessQual
access qualifier (for images and values)
Definition: ROCmBinaries.h:141
create metadata info object
Definition: ROCmBinaries.h:47
create region map
Definition: ROCmBinaries.h:46
bool isVolatile
is volatile
Definition: ROCmBinaries.h:145
unsigned char cxbyte
unsigned byte
Definition: Config.h:229
bool isPipe
is pipe
Definition: ROCmBinaries.h:146
main namespace
Definition: AsmDefs.h:38
size_t getGlobalDataSize() const
get global data size
Definition: ROCmBinaries.h:254
ROCmRegionType
ROCm region/symbol type.
Definition: ROCmBinaries.h:53
Array< std::pair< CString, size_t > > RegionMap
region map type
Definition: ROCmBinaries.h:205
cxbyte * getCode()
get code
Definition: ROCmBinaries.h:250
unsigned int cxuint
unsigned int
Definition: Config.h:237
use workgroup count for Z dim
Definition: Commons.h:53
create kernel metadata info map
Definition: ROCmBinaries.h:48
all ROCm binaries flags
Definition: ROCmBinaries.h:49
size_t getGotSymbolsNum() const
get GOT symbol index (from elfbin dynsymbols)
Definition: ROCmBinaries.h:302
bool isNewBinaryFormat() const
return true is new binary format
Definition: ROCmBinaries.h:298
ROCm kernel argument.
Definition: ROCmBinaries.h:131
xnack enabled
Definition: Commons.h:60
inlines for accessing memory words in LittleEndian and unaligned
GPUDeviceType
type of GPU device
Definition: GPUId.h:51
const cxbyte * getCode() const
get code
Definition: ROCmBinaries.h:247
ROCm binary generator.
Definition: ROCmBinaries.h:407
ROCmValueType valueType
value type
Definition: ROCmBinaries.h:139
utilities for other libraries and programs
bool hasKernelInfoMap() const
returns true if object has kernel map
Definition: ROCmBinaries.h:317
debug enabled
Definition: Commons.h:59
passed as dynamic shared pointer
const CString & getTarget() const
get target
Definition: ROCmBinaries.h:294
bool hasMetadataInfo() const
has metadata info
Definition: ROCmBinaries.h:275
bool hasRegionMap() const
returns true if kernel map exists
Definition: ROCmBinaries.h:314
use queue pointer
Definition: Commons.h:45
GPU identification utilities.
size_t size() const
returns number of elements
Definition: Containers.h:172
ROCmAddressSpace
ROCm argument address space.
Definition: ROCmBinaries.h:108
size_t getRegionsNum() const
get regions number
Definition: ROCmBinaries.h:233
ROCmAddressSpace addressSpace
pointer address space
Definition: ROCmBinaries.h:140
use private segment size
Definition: Commons.h:49
size_t getGotSymbol(size_t index) const
get GOT symbol index (from elfbin dynsymbols)
Definition: ROCmBinaries.h:310
const ROCmMetadata & getMetadataInfo() const
get metadata info
Definition: ROCmBinaries.h:279
const cxbyte * getGlobalData() const
get global data
Definition: ROCmBinaries.h:258
OpenCL kernel to call ??
Definition: ROCmBinaries.h:57
simple C-string container
Definition: CString.h:38
containers and other utils for other libraries and programs
function kernel (code)
Definition: ROCmBinaries.h:56
CString typeName
type name
Definition: ROCmBinaries.h:134
uint64_t size
argument size in bytes
Definition: ROCmBinaries.h:135
char * getMetadata()
get metadata
Definition: ROCmBinaries.h:271
pointer to constant memory
AmdHsaKernelConfig ROCmKernelConfig
ROCm kernel configuration structure.
Definition: ROCmBinaries.h:343