CLRX  1
An unofficial OpenCL extensions designed for Radeon GPUs
Classes | Namespaces | Enumerations | Functions
AmdBinaries.h File Reference

AMD binaries handling. More...

#include <CLRX/Config.h>
#include <cstddef>
#include <cstdint>
#include <string>
#include <utility>
#include <memory>
#include <CLRX/amdbin/Elf.h>
#include <CLRX/amdbin/ElfBinaries.h>
#include <CLRX/utils/MemAccess.h>
#include <CLRX/utils/Containers.h>
#include <CLRX/utils/Utilities.h>
#include <CLRX/utils/GPUId.h>

Go to the source code of this file.

Classes

struct  CLRX::AmdKernelArg
 kernel argument info structure More...
 
struct  CLRX::X86KernelArgSym
 X86_64 kernel argument symbol. More...
 
struct  CLRX::X86_64KernelArgSym
 X86_64 kernel argument symbol. More...
 
struct  CLRX::CALEncodingEntry
 CALEncodingEntry. There are not copied (ULEV must be used) More...
 
struct  CLRX::CALNoteHeader
 ATI CAL Note header. There are not copied (ULEV must be used) More...
 
struct  CLRX::CALNote
 ATI CAL note. There are not copied (ULEV must be used) More...
 
struct  CLRX::CALNoteInput
 ATI CAL note input. More...
 
struct  CLRX::CALProgramInfoEntry
 CAL program info entry. There are not copied (ULEV must be used) More...
 
struct  CLRX::CALUAVEntry
 There are not copied (ULEV must be used) More...
 
struct  CLRX::CALDataSegmentEntry
 There are not copied (ULEV must be used) More...
 
struct  CLRX::CALConstantBufferMask
 There are not copied (ULEV must be used) More...
 
struct  CLRX::CALSamplerMapEntry
 There are not copied (ULEV must be used) More...
 
struct  CLRX::KernelInfo
 kernel informations More...
 
class  CLRX::AmdInnerGPUBinary32
 AMD inner binary for GPU binaries that represent a single kernel. More...
 
class  CLRX::AmdInnerX86Binary32
 AMD inner X86 binary. More...
 
class  CLRX::AmdInnerX86Binary64
 AMD inner binary for X86-64 binaries. More...
 
class  CLRX::AmdMainBinaryBase
 main AMD binary base class More...
 
struct  CLRX::AmdGPUKernelMetadata
 AMD GPU metadata for kernel. More...
 
struct  CLRX::AmdGPUKernelHeader
 AMD GPU header for kernel. More...
 
class  CLRX::AmdMainGPUBinaryBase
 main AMD GPU binary base class More...
 
class  CLRX::AmdMainGPUBinary32
 AMD main binary for GPU for 32-bit mode. More...
 
class  CLRX::AmdMainGPUBinary64
 AMD main binary for GPU for 64-bit mode. More...
 
class  CLRX::AmdMainX86Binary32
 AMD main binary for X86 systems. More...
 
class  CLRX::AmdMainX86Binary64
 AMD main binary for X86-64 systems. More...
 

Namespaces

 CLRX
 main namespace
 

Enumerations

enum  : Flags {
  AMDBIN_INNER_INT_CREATE_ALL = 0xff, CLRX::AMDBIN_CREATE_CALNOTES = 0x10, CLRX::AMDBIN_CREATE_KERNELINFO = 0x10, CLRX::AMDBIN_CREATE_KERNELINFOMAP = 0x20,
  CLRX::AMDBIN_CREATE_INNERBINMAP = 0x40, CLRX::AMDBIN_CREATE_INFOSTRINGS = 0x80, CLRX::AMDBIN_CREATE_KERNELHEADERS = 0x100, CLRX::AMDBIN_CREATE_KERNELHEADERMAP = 0x200,
  CLRX::AMDBIN_INNER_CREATE_SECTIONMAP = 0x1000, CLRX::AMDBIN_INNER_CREATE_SYMBOLMAP = 0x2000, CLRX::AMDBIN_INNER_CREATE_DYNSYMMAP = 0x4000, CLRX::AMDBIN_INNER_CREATE_CALNOTES = 0x10000,
  CLRX::AMDBIN_CREATE_ALL = ELF_CREATE_ALL | 0xffff0, CLRX::AMDBIN_INNER_SHIFT = 12
}
 
enum  : cxuint { ELF_M_X86 = 0x7d4 }
 
enum  CLRX::KernelArgType : cxbyte {
  VOID = 0, UCHAR, CHAR, USHORT,
  SHORT, UINT, INT, ULONG,
  LONG, FLOAT, DOUBLE, POINTER,
  IMAGE, IMAGE1D, IMAGE1D_ARRAY, IMAGE1D_BUFFER,
  IMAGE2D, IMAGE2D_ARRAY, IMAGE3D, UCHAR2,
  UCHAR3, UCHAR4, UCHAR8, UCHAR16,
  CHAR2, CHAR3, CHAR4, CHAR8,
  CHAR16, USHORT2, USHORT3, USHORT4,
  USHORT8, USHORT16, SHORT2, SHORT3,
  SHORT4, SHORT8, SHORT16, UINT2,
  UINT3, UINT4, UINT8, UINT16,
  INT2, INT3, INT4, INT8,
  INT16, ULONG2, ULONG3, ULONG4,
  ULONG8, ULONG16, LONG2, LONG3,
  LONG4, LONG8, LONG16, FLOAT2,
  FLOAT3, FLOAT4, FLOAT8, FLOAT16,
  DOUBLE2, DOUBLE3, DOUBLE4, DOUBLE8,
  DOUBLE16, SAMPLER, STRUCTURE, COUNTER32,
  COUNTER64, PIPE, CMDQUEUE, CLKEVENT,
  MAX_VALUE = COUNTER64, MAX_VALUE_CL2 = CLKEVENT, MIN_IMAGE = IMAGE, MAX_IMAGE = IMAGE3D
}
 kernel argument type
 
enum  CLRX::KernelPtrSpace : cxbyte {
  CLRX::KernelPtrSpace::NONE = 0, CLRX::KernelPtrSpace::LOCAL, CLRX::KernelPtrSpace::CONSTANT, CLRX::KernelPtrSpace::GLOBAL,
  MAX_VALUE = GLOBAL
}
 kernel pointer type of argument More...
 
enum  : cxbyte {
  CLRX::KARG_PTR_NORMAL = 0, CLRX::KARG_PTR_READ_ONLY = 1, CLRX::KARG_PTR_WRITE_ONLY = 2, CLRX::KARG_PTR_READ_WRITE = 3,
  KARG_PTR_ACCESS_MASK = 3, CLRX::KARG_PTR_CONST = 4, CLRX::KARG_PTR_RESTRICT = 8, CLRX::KARG_PTR_VOLATILE = 16
}
 
enum  : uint32_t {
  CALNOTE_ATI_PROGINFO = 1, CALNOTE_ATI_INPUTS = 2, CALNOTE_ATI_OUTPUTS = 3, CALNOTE_ATI_CONDOUT = 4,
  CALNOTE_ATI_FLOAT32CONSTS = 5, CALNOTE_ATI_INT32CONSTS = 6, CALNOTE_ATI_BOOL32CONSTS = 7, CALNOTE_ATI_EARLYEXIT = 8,
  CALNOTE_ATI_GLOBAL_BUFFERS = 9, CALNOTE_ATI_CONSTANT_BUFFERS = 10, CALNOTE_ATI_INPUT_SAMPLERS = 11, CALNOTE_ATI_PERSISTENT_BUFFERS = 12,
  CALNOTE_ATI_SCRATCH_BUFFERS = 13, CALNOTE_ATI_SUB_CONSTANT_BUFFERS = 14, CALNOTE_ATI_UAV_MAILBOX_SIZE = 15, CALNOTE_ATI_UAV = 16,
  CALNOTE_ATI_UAV_OP_MASK = 17, CALNOTE_ATI_MAXTYPE = CALNOTE_ATI_UAV_OP_MASK
}
 
enum  CLRX::AmdMainType {
  CLRX::AmdMainType::GPU_BINARY, CLRX::AmdMainType::GPU_64_BINARY, CLRX::AmdMainType::X86_BINARY, CLRX::AmdMainType::X86_64_BINARY,
  CLRX::AmdMainType::GPU_CL2_BINARY, CLRX::AmdMainType::GPU_CL2_64_BINARY
}
 AMD main binary type. More...
 

Functions

bool CLRX::isKernelArgImage (KernelArgType argType)
 return true if argType is image
 
bool CLRX::isAmdBinary (size_t binaryCodeSize, const cxbyte *binaryCode)
 check whether binary code is Amd Catalyst binary
 
AmdMainBinaryBase * CLRX::createAmdBinaryFromCode (size_t binaryCodeSize, cxbyte *binaryCode, Flags creationFlags=AMDBIN_CREATE_ALL)
 create AMD binary object from binary code More...
 

Detailed Description

AMD binaries handling.