CLRX
1
An unofficial OpenCL extensions designed for Radeon GPUs
|
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... | |
AMD binaries handling.