d96481fb36
Change-Id: I69d2fea4a7a43adf96ccea794270e4af991c5261
365 γραμμές
12 KiB
C
365 γραμμές
12 KiB
C
/* Copyright (c) 2012 - 2021 Advanced Micro Devices, Inc.
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
in the Software without restriction, including without limitation the rights
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included in
|
|
all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
THE SOFTWARE. */
|
|
|
|
#ifndef _ACL_ENUMS_0_8_H_
|
|
#define _ACL_ENUMS_0_8_H_
|
|
|
|
typedef enum _acl_error_enum_0_8 {
|
|
ACL_SUCCESS = 0,
|
|
ACL_ERROR = 1,
|
|
ACL_INVALID_ARG = 2,
|
|
ACL_OUT_OF_MEM = 3,
|
|
ACL_SYS_ERROR = 4,
|
|
ACL_UNSUPPORTED = 5,
|
|
ACL_ELF_ERROR = 6,
|
|
ACL_INVALID_FILE = 7,
|
|
ACL_INVALID_COMPILER= 8,
|
|
ACL_INVALID_TARGET = 9,
|
|
ACL_INVALID_BINARY = 10,
|
|
ACL_INVALID_OPTION = 11,
|
|
ACL_INVALID_TYPE = 12,
|
|
ACL_INVALID_SECTION = 13,
|
|
ACL_INVALID_SYMBOL = 14,
|
|
ACL_INVALID_QUERY = 15,
|
|
ACL_FRONTEND_FAILURE= 16,
|
|
ACL_INVALID_BITCODE = 17,
|
|
ACL_LINKER_ERROR = 18,
|
|
ACL_OPTIMIZER_ERROR = 19,
|
|
ACL_CODEGEN_ERROR = 20,
|
|
ACL_ISAGEN_ERROR = 21,
|
|
ACL_INVALID_SOURCE = 22,
|
|
ACL_LIBRARY_ERROR = 23,
|
|
ACL_INVALID_SPIR = 24,
|
|
ACL_LWVERIFY_FAIL = 25,
|
|
ACL_HWVERIFY_FAIL = 26,
|
|
ACL_SPIRV_LOAD_FAIL = 27,
|
|
ACL_SPIRV_SAVE_FAIL = 28,
|
|
ACL_LAST_ERROR = 29
|
|
} acl_error_0_8;
|
|
|
|
typedef enum _comp_device_caps_enum_0_8 {
|
|
capError = 0,
|
|
capFMA = 1,
|
|
capImageSupport = 2,
|
|
capSaveSOURCE = 3, // input source
|
|
capSaveLLVMIR = 4, // output LLVMIR from frontend
|
|
capSaveCG = 5, // output from LLVM-BE
|
|
capSaveEXE = 6, // output executable
|
|
capSaveAMDIL = 7, // Save per-kernel AMDIL
|
|
capSaveHSAIL = 8, // Save per-kernel HSAIL
|
|
capEncrypted = 9,
|
|
capSaveDISASM = 10,
|
|
capSaveAS = 11,
|
|
capSaveSPIR = 12,
|
|
capDumpLast = 13
|
|
} compDeviceCaps_0_8;
|
|
|
|
typedef enum _comp_opt_settings_enum_0_8 {
|
|
optO0 = 0, // No optimization setting.
|
|
optO1 = 1,
|
|
optO2 = 2,
|
|
optO3 = 3,
|
|
optO4 = 4,
|
|
optOs = 5,
|
|
optError = 6, // Invalid optimization set
|
|
optLast = 7
|
|
} compOptSettings_0_8;
|
|
|
|
#define FLAG_SHIFT_VALUE 5
|
|
#define FLAG_MASK_VALUE ((1 << capDumpLast) - 1)
|
|
#define FLAG_BITLOC(A) (1 << ((A) & FLAG_MASK_VALUE))
|
|
#define FLAG_ARRAY_SIZE 4
|
|
|
|
//! An enumeration that defines the possible valid device types that
|
|
// can be compiled for.
|
|
typedef enum _acl_dev_type_enum_0_8 {
|
|
aclError = 0, // aclDevType of 0 is an error.
|
|
aclX86 = 1, // Targeting a 32bit X86 CPU device.
|
|
aclAMDIL = 2, // Targeting an AMDIL GPU device.
|
|
aclHSAIL = 3, // Targeting an HSAIL GPU device.
|
|
aclX64 = 4, // Targeting a 64bit X86 CPU device.
|
|
aclHSAIL64= 5, // Targeting a 64bit HSAIL GPU device.
|
|
aclAMDIL64= 6, // Targeting a 64bit AMDIL GPU device
|
|
aclLast = 7
|
|
} aclDevType_0_8;
|
|
|
|
//! Enum that represents the versions of the compiler
|
|
typedef enum _acl_cl_version_enum_0_8 {
|
|
ACL_VERSION_ERROR = 0,
|
|
ACL_VERSION_0_7 = 1,
|
|
ACL_VERSION_0_8 = 2,
|
|
ACL_VERSION_0_8_1 = 3,
|
|
ACL_VERSION_0_9 = 4,
|
|
ACL_VERSION_1_0 = 5,
|
|
ACL_VERSION_LAST = 6
|
|
} aclCLVersion_0_8;
|
|
|
|
//! Enum of the various aclTypes that are supported
|
|
typedef enum _acl_type_enum_0_8 {
|
|
ACL_TYPE_DEFAULT = 0,
|
|
ACL_TYPE_OPENCL = 1,
|
|
ACL_TYPE_LLVMIR_TEXT = 2,
|
|
ACL_TYPE_LLVMIR_BINARY = 3,
|
|
ACL_TYPE_SPIR_TEXT = 4,
|
|
ACL_TYPE_SPIR_BINARY = 5,
|
|
ACL_TYPE_AMDIL_TEXT = 6,
|
|
ACL_TYPE_AMDIL_BINARY = 7,
|
|
ACL_TYPE_HSAIL_TEXT = 8,
|
|
ACL_TYPE_HSAIL_BINARY = 9,
|
|
ACL_TYPE_X86_TEXT = 10,
|
|
ACL_TYPE_X86_BINARY = 11,
|
|
ACL_TYPE_CG = 12,
|
|
ACL_TYPE_SOURCE = 13,
|
|
ACL_TYPE_ISA = 14,
|
|
ACL_TYPE_HEADER = 15,
|
|
ACL_TYPE_RSLLVMIR_BINARY = 16,
|
|
ACL_TYPE_SPIRV_BINARY = 17,
|
|
ACL_TYPE_ASM_TEXT = 18,
|
|
ACL_TYPE_LAST = 19
|
|
} aclType_0_8;
|
|
|
|
//! Enum of the various loader types that are supported.
|
|
typedef enum _acl_loader_type_enum_0_8 {
|
|
ACL_LOADER_COMPLIB = 0,
|
|
ACL_LOADER_FRONTEND = 1,
|
|
ACL_LOADER_LINKER = 2,
|
|
ACL_LOADER_OPTIMIZER= 3,
|
|
ACL_LOADER_CODEGEN = 4,
|
|
ACL_LOADER_BACKEND = 5,
|
|
ACL_LOADER_SC = 6,
|
|
ACL_LOADER_LAST = 7
|
|
} aclLoaderType_0_8;
|
|
|
|
// Enumeration for the various acl versions
|
|
typedef enum _bif_version_enum_0_8 {
|
|
aclBIFVersionError = 0, // Error
|
|
aclBIFVersion20 = 1, // Version 2.0 of the OpenCL BIF
|
|
aclBIFVersion21 = 2, // Version 2.1 of the OpenCL BIF
|
|
aclBIFVersion30 = 3, // Version 3.0 of the OpenCL BIF
|
|
aclBIFVersion31 = 4, // Version 3.1 of the OpenCL BIF
|
|
aclBIFVersionLatest = aclBIFVersion31, // Most recent version of the BIF
|
|
aclBIFVersionCAL = 5,
|
|
aclBIFVersionLast = 6
|
|
} aclBIFVersion_0_8;
|
|
|
|
// Enumeration for the various platform types
|
|
typedef enum _bif_platform_enum_0_8 {
|
|
aclPlatformCAL = 0, // For BIF 2.0 backward compatibility
|
|
aclPlatformCPU = 1, // For BIF 2.0 backward compatibility
|
|
aclPlatformCompLib = 2,
|
|
aclPlatformLast = 3
|
|
} aclPlatform_0_8;
|
|
|
|
// Enumeration for the various bif sections
|
|
typedef enum _bif_sections_enum_0_8 {
|
|
aclLLVMIR = 0,
|
|
aclSOURCE = 1,
|
|
aclILTEXT = 2, // For BIF 2.0 backward compatibility
|
|
aclASTEXT = 3, // For BIF 2.0 backward compatibility
|
|
aclCAL = 4, // For BIF 2.0 backward compatibility
|
|
aclDLL = 5, // For BIF 2.0 backward compatibility
|
|
aclSTRTAB = 6,
|
|
aclSYMTAB = 7,
|
|
aclRODATA = 8,
|
|
aclSHSTRTAB = 9,
|
|
aclNOTES = 10,
|
|
aclCOMMENT = 11,
|
|
aclILDEBUG = 12, // For BIF 2.0 backward compatibility
|
|
aclDEBUG_INFO = 13,
|
|
aclDEBUG_ABBREV = 14,
|
|
aclDEBUG_LINE = 15,
|
|
aclDEBUG_PUBNAMES = 16,
|
|
aclDEBUG_PUBTYPES = 17,
|
|
aclDEBUG_LOC = 18,
|
|
aclDEBUG_ARANGES = 19,
|
|
aclDEBUG_RANGES = 20,
|
|
aclDEBUG_MACINFO = 21,
|
|
aclDEBUG_STR = 22,
|
|
aclDEBUG_FRAME = 23,
|
|
aclJITBINARY = 24, // For BIF 2.0 backward compatibility
|
|
aclCODEGEN = 25,
|
|
aclTEXT = 26,
|
|
aclINTERNAL = 27,
|
|
aclSPIR = 28,
|
|
aclHEADER = 29,
|
|
aclBRIG = 30,
|
|
aclBRIGxxx1 = 31,
|
|
aclBRIGxxx2 = 32,
|
|
aclBRIGxxx3 = 33,
|
|
aclHSADEBUG = 34,
|
|
aclKSTATS = 35, // For storing kernel statistics
|
|
aclSPIRV = 36,
|
|
aclLAST = 37
|
|
} aclSections_0_8;
|
|
|
|
//! An enumeration that defines what are valid queries for aclQueryInfo.
|
|
typedef enum _rt_query_types_enum_0_8 {
|
|
RT_ABI_VERSION = 0,
|
|
RT_DEVICE_NAME = 1,
|
|
RT_MEM_SIZES = 2,
|
|
RT_GPU_FUNC_CAPS = 3,
|
|
RT_GPU_FUNC_ID = 4,
|
|
RT_GPU_DEFAULT_ID = 5,
|
|
RT_WORK_GROUP_SIZE = 6,
|
|
RT_WORK_REGION_SIZE = 7,
|
|
RT_ARGUMENT_ARRAY = 8,
|
|
RT_GPU_PRINTF_ARRAY = 9,
|
|
RT_CPU_BARRIER_NAMES = 10,
|
|
RT_DEVICE_ENQUEUE = 11,
|
|
RT_KERNEL_INDEX = 12,
|
|
RT_KERNEL_NAME = 13,
|
|
RT_KERNEL_NAMES = 14,
|
|
RT_CONTAINS_LLVMIR = 15,
|
|
RT_CONTAINS_OPTIONS = 16,
|
|
RT_CONTAINS_BRIG = 17,
|
|
RT_CONTAINS_HSAIL = 18,
|
|
RT_CONTAINS_ISA = 19,
|
|
RT_CONTAINS_LOADER_MAP = 20,
|
|
RT_CONTAINS_SPIR = 21,
|
|
RT_NUM_KERNEL_HIDDEN_ARGS = 22,
|
|
RT_CONTAINS_SPIRV = 23,
|
|
RT_WAVES_PER_SIMD_HINT = 24,
|
|
RT_WORK_GROUP_SIZE_HINT = 25,
|
|
RT_VEC_TYPE_HINT = 26,
|
|
RT_LAST_TYPE = 27
|
|
} aclQueryType_0_8;
|
|
|
|
//! An enumeration for the various GPU capabilities
|
|
typedef enum _rt_gpu_caps_enum_0_8 {
|
|
RT_COMPILER_WRITE = 1 << 0,
|
|
RT_DATA_SECTION = 1 << 1,
|
|
RT_WGS = 1 << 2,
|
|
RT_LIMIT_WGS = 1 << 3,
|
|
RT_PACKED_REGS = 1 << 4,
|
|
RT_64BIT_ABI = 1 << 5,
|
|
RT_PRINTF = 1 << 6,
|
|
RT_ARENA_UAV = 1 << 7,
|
|
RT_LRP_MEM = 1 << 8, // Local/Region/Private Memory
|
|
RT_INDEX_TEMPS = 1 << 9,
|
|
RT_WRS = 1 << 10,
|
|
RT_GWS = 1 << 11,
|
|
RT_SWGWS = 1 << 12,
|
|
RT_GPU_CAPS_MASK = 0xFFF
|
|
} aclGPUCaps_0_8;
|
|
|
|
//! An enumeration for the various CPU capabilities.
|
|
typedef enum _rt_cpu_caps_enum_0_8 {
|
|
RT_KERNEL_BARRIER = 1 << 0,
|
|
RT_PROGRAM_BARRIER = 1 << 1,
|
|
RT_CPU_CAPS_MASK = 0x3
|
|
} aclCPUCaps_0_8;
|
|
|
|
//! An enumeration that maps Resource type to index values
|
|
typedef enum _rt_gpu_resource_enum_0_8 {
|
|
RT_RES_UAV = 0, // UAV resources
|
|
RT_RES_PRI = 1, // Private resources
|
|
RT_RES_LDS = 2, // LDS resources
|
|
RT_RES_GDS = 3, // GDS resources
|
|
RT_RES_CON = 4, // Constant resources
|
|
RT_RES_LAST = 5
|
|
} aclGPUResource_0_8;
|
|
|
|
//! An enumeration that maps memory types to index values
|
|
typedef enum _rt_gpu_mem_sizes_enum_0_8 {
|
|
RT_MEM_HW_LOCAL = 0,
|
|
RT_MEM_SW_LOCAL = 1,
|
|
RT_MEM_HW_PRIVATE = 2,
|
|
RT_MEM_SW_PRIVATE = 3,
|
|
RT_MEM_HW_REGION = 4,
|
|
RT_MEM_SW_REGION = 5,
|
|
RT_MEM_LAST = 6
|
|
} aclGPUMemSizes_0_8;
|
|
|
|
// Enumerations for the various argument types.
|
|
typedef enum _acl_arg_type_enum_0_8 {
|
|
ARG_TYPE_ERROR = 0,
|
|
ARG_TYPE_SAMPLER = 1,
|
|
ARG_TYPE_IMAGE = 2,
|
|
ARG_TYPE_COUNTER = 3,
|
|
ARG_TYPE_VALUE = 4,
|
|
ARG_TYPE_POINTER = 5,
|
|
ARG_TYPE_SEMAPHORE = 6,
|
|
ARG_TYPE_QUEUE = 7, // enum for device enqueue
|
|
ARG_TYPE_LAST = 8
|
|
} aclArgType_0_8;
|
|
|
|
// Enumerations of the valid data types for pass by value and
|
|
// pass by pointer kernel arguments.
|
|
typedef enum _acl_data_type_enum_0_8 {
|
|
DATATYPE_ERROR = 0,
|
|
DATATYPE_i1 = 1,
|
|
DATATYPE_i8 = 2,
|
|
DATATYPE_i16 = 3,
|
|
DATATYPE_i32 = 4,
|
|
DATATYPE_i64 = 5,
|
|
DATATYPE_u8 = 6,
|
|
DATATYPE_u16 = 7,
|
|
DATATYPE_u32 = 8,
|
|
DATATYPE_u64 = 9,
|
|
DATATYPE_f16 = 10,
|
|
DATATYPE_f32 = 11,
|
|
DATATYPE_f64 = 12,
|
|
DATATYPE_f80 = 13,
|
|
DATATYPE_f128 = 14,
|
|
DATATYPE_struct = 15,
|
|
DATATYPE_union = 16,
|
|
DATATYPE_event = 17,
|
|
DATATYPE_opaque = 18,
|
|
DATATYPE_unknown = 19,
|
|
DATATYPE_LAST = 20
|
|
} aclArgDataType_0_8;
|
|
|
|
// Enumerations of the valid memory types for pass by pointer
|
|
// kernel arguments
|
|
typedef enum _acl_memory_type_enum_0_8 {
|
|
PTR_MT_ERROR = 0, // Error
|
|
PTR_MT_GLOBAL = 1, // global buffer
|
|
PTR_MT_SCRATCH_EMU = 2, // SW emulated private memory
|
|
PTR_MT_LDS_EMU = 3, // SW emulated local memory
|
|
PTR_MT_UAV = 4, // uniformed access vector memory
|
|
PTR_MT_CONSTANT_EMU = 5, // SW emulated constant memory
|
|
PTR_MT_GDS_EMU = 6, // SW emulated region memory
|
|
PTR_MT_LDS = 7, // HW local memory
|
|
PTR_MT_SCRATCH = 8, // HW private memory
|
|
PTR_MT_CONSTANT = 9, // HW constant memory
|
|
PTR_MT_GDS = 10, // HW region memory
|
|
PTR_MT_UAV_SCRATCH = 11, // SI and later HW private memory
|
|
PTR_MT_UAV_CONSTANT = 12, // SI and later HW constant memory
|
|
PTR_MT_LAST = 13
|
|
} aclMemoryType_0_8;
|
|
|
|
// Enumeration that specifies the various access types for a pointer/image.
|
|
typedef enum _acl_access_type_enum_0_8 {
|
|
ACCESS_TYPE_ERROR = 0,
|
|
ACCESS_TYPE_RO = 1,
|
|
ACCESS_TYPE_WO = 2,
|
|
ACCESS_TYPE_RW = 3,
|
|
ACCESS_TYPE_LAST = 4
|
|
} aclAccessType_0_8;
|
|
|
|
// Enumeration that specifies the binary types.
|
|
typedef enum _acl_binary_image_type_enum_0_8 {
|
|
BINARY_TYPE_ELF = 1,
|
|
BINARY_TYPE_LLVM = 2,
|
|
BINARY_TYPE_SPIRV = 4,
|
|
} aclBinaryImageType_0_8;
|
|
|
|
#endif // _ACL_ENUMS_0_8_H_
|