Make supported targets consistent
Add missing target names and make all parts consistent with which
targets are supported.
- Add gfx805 as a supported target.
- Add all ELF targets to genric code.
- Make offline loader match supported targets.
Change-Id: Idab4d69edc71645aecaa83aa55e29c1aeee4c1d6
[ROCm/ROCR-Runtime commit: b443397bcc]
Этот коммит содержится в:
@@ -41,7 +41,7 @@ set(PROJECT_NAME "rocrtst64")
|
||||
project (${PROJECT_NAME})
|
||||
|
||||
|
||||
set(DEFAULT_TARGETS "gfx700;gfx701;gfx702;gfx801;gfx802;gfx803;gfx810;gfx900;gfx902;gfx904;gfx906;gfx908;gfx1010;gfx1011;gfx1012;gfx1030;gfx1031")
|
||||
set(DEFAULT_TARGETS "gfx700;gfx701;gfx702;gfx801;gfx802;gfx803;gfx805;gfx810;gfx900;gfx902;gfx904;gfx906;gfx908;gfx1010;gfx1011;gfx1012;gfx1030;gfx1031")
|
||||
|
||||
#
|
||||
# Currently support for Windows platform is not present
|
||||
|
||||
@@ -1847,7 +1847,13 @@ static std::string ConvertOldTargetNameToNew(
|
||||
|
||||
// FIXME #1: Should 9:0:3 be completely (loader, sc, etc.) removed?
|
||||
// FIXME #2: What does PAL do with respect to boltzmann/usual fiji/tonga?
|
||||
if (OldName == "AMD:AMDGPU:7:0:0")
|
||||
if (OldName == "AMD:AMDGPU:6:0:0")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx600";
|
||||
else if (OldName == "AMD:AMDGPU:6:0:1")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx601";
|
||||
else if (OldName == "AMD:AMDGPU:6:0:2")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx602";
|
||||
else if (OldName == "AMD:AMDGPU:7:0:0")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx700";
|
||||
else if (OldName == "AMD:AMDGPU:7:0:1")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx701";
|
||||
@@ -1857,6 +1863,8 @@ static std::string ConvertOldTargetNameToNew(
|
||||
NewName = "amdgcn-amd-amdhsa--gfx703";
|
||||
else if (OldName == "AMD:AMDGPU:7:0:4")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx704";
|
||||
else if (OldName == "AMD:AMDGPU:7:0:5")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx705";
|
||||
else if (OldName == "AMD:AMDGPU:8:0:0")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx800";
|
||||
else if (OldName == "AMD:AMDGPU:8:0:1") {
|
||||
@@ -1869,6 +1877,8 @@ static std::string ConvertOldTargetNameToNew(
|
||||
NewName = "amdgcn-amd-amdhsa--gfx803";
|
||||
else if (OldName == "AMD:AMDGPU:8:0:4")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx804";
|
||||
else if (OldName == "AMD:AMDGPU:8:0:5")
|
||||
NewName = "amdgcn-amd-amdhsa--gfx805";
|
||||
else if (OldName == "AMD:AMDGPU:8:1:0") {
|
||||
NewName = "amdgcn-amd-amdhsa--gfx810";
|
||||
xnack_supported = true;
|
||||
|
||||
@@ -231,7 +231,7 @@ const IsaRegistry::IsaMap IsaRegistry::supported_isas_ =
|
||||
IsaRegistry::GetSupportedIsas();
|
||||
|
||||
const IsaRegistry::IsaMap IsaRegistry::GetSupportedIsas() {
|
||||
#define ISAREG_ENTRY_GEN(maj, min, stp, sramecc, xnack) \
|
||||
#define ISAREG_ENTRY_GEN(name, maj, min, stp, sramecc, xnack) \
|
||||
Isa amd_amdgpu_##maj##min##stp##_SRAMECC_##sramecc##_XNACK_##xnack; \
|
||||
amd_amdgpu_##maj##min##stp##_SRAMECC_##sramecc##_XNACK_##xnack.version_ = Isa::Version(maj, min, stp); \
|
||||
amd_amdgpu_##maj##min##stp##_SRAMECC_##sramecc##_XNACK_##xnack.sramecc_ = sramecc; \
|
||||
@@ -246,56 +246,57 @@ const IsaRegistry::IsaMap IsaRegistry::GetSupportedIsas() {
|
||||
IsaFeature disabled = IsaFeature::Disabled;
|
||||
IsaFeature enabled = IsaFeature::Enabled;
|
||||
|
||||
// Version SRAMECC XNACK
|
||||
ISAREG_ENTRY_GEN(7, 0, 0, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN(7, 0, 1, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN(7, 0, 2, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN(8, 0, 1, unsupported, any)
|
||||
ISAREG_ENTRY_GEN(8, 0, 1, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN(8, 0, 1, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN(8, 0, 2, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN(8, 0, 3, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN(8, 1, 0, unsupported, any)
|
||||
ISAREG_ENTRY_GEN(8, 1, 0, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN(8, 1, 0, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 0, unsupported, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 0, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 0, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 2, unsupported, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 2, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 2, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 4, unsupported, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 4, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 4, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, any, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, any, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, any, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, disabled, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, enabled, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, disabled, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, disabled, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, enabled, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 6, enabled, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, any, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, any, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, any, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, disabled, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, enabled, any)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, disabled, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, disabled, enabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, enabled, disabled)
|
||||
ISAREG_ENTRY_GEN(9, 0, 8, enabled, enabled)
|
||||
ISAREG_ENTRY_GEN(10, 1, 0, unsupported, any)
|
||||
ISAREG_ENTRY_GEN(10, 1, 0, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN(10, 1, 0, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN(10, 1, 1, unsupported, any)
|
||||
ISAREG_ENTRY_GEN(10, 1, 1, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN(10, 1, 1, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN(10, 1, 2, unsupported, any)
|
||||
ISAREG_ENTRY_GEN(10, 1, 2, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN(10, 1, 2, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN(10, 3, 0, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN(10, 3, 1, unsupported, unsupported)
|
||||
// Target ID Version SRAMECC XNACK
|
||||
ISAREG_ENTRY_GEN("gfx700", 7, 0, 0, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN("gfx701", 7, 0, 1, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN("gfx702", 7, 0, 2, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN("gfx801", 8, 0, 1, unsupported, any)
|
||||
ISAREG_ENTRY_GEN("gfx801:xnack-", 8, 0, 1, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx801:xnack+", 8, 0, 1, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx802", 8, 0, 2, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN("gfx803", 8, 0, 3, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN("gfx805", 8, 0, 5, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN("gfx810", 8, 1, 0, unsupported, any)
|
||||
ISAREG_ENTRY_GEN("gfx810:xnack-", 8, 1, 0, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx810:xnack+", 8, 1, 0, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx900", 9, 0, 0, unsupported, any)
|
||||
ISAREG_ENTRY_GEN("gfx900:xnack-", 9, 0, 0, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx900:xnack+", 9, 0, 0, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx902", 9, 0, 2, unsupported, any)
|
||||
ISAREG_ENTRY_GEN("gfx902:xnack-", 9, 0, 2, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx900:xnack+", 9, 0, 2, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx904", 9, 0, 4, unsupported, any)
|
||||
ISAREG_ENTRY_GEN("gfx904:xnack-", 9, 0, 4, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx904:xnack+", 9, 0, 4, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx906", 9, 0, 6, any, any)
|
||||
ISAREG_ENTRY_GEN("gfx906:xnack-", 9, 0, 6, any, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx906:xnack+", 9, 0, 6, any, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx906:sramecc-", 9, 0, 6, disabled, any)
|
||||
ISAREG_ENTRY_GEN("gfx906:sramecc+", 9, 0, 6, enabled, any)
|
||||
ISAREG_ENTRY_GEN("gfx906:sramecc-:xnack-", 9, 0, 6, disabled, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx906:sramecc-:xnack+", 9, 0, 6, disabled, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx906:sramecc+:xnack-", 9, 0, 6, enabled, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx906:sramecc+:xnack+", 9, 0, 6, enabled, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx908", 9, 0, 8, any, any)
|
||||
ISAREG_ENTRY_GEN("gfx908:xnack-", 9, 0, 8, any, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx908:xnack+", 9, 0, 8, any, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx908:sramecc-", 9, 0, 8, disabled, any)
|
||||
ISAREG_ENTRY_GEN("gfx908:sramecc+", 9, 0, 8, enabled, any)
|
||||
ISAREG_ENTRY_GEN("gfx908:sramecc-:xnack-", 9, 0, 8, disabled, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx908:sramecc+:xnack+", 9, 0, 8, disabled, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx908:sramecc-:xnack-", 9, 0, 8, enabled, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx908:sramecc+:xnack+", 9, 0, 8, enabled, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx1010", 10, 1, 0, unsupported, any)
|
||||
ISAREG_ENTRY_GEN("gfx1010:xnack-", 10, 1, 0, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx1010:xnack+", 10, 1, 0, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx1011", 10, 1, 1, unsupported, any)
|
||||
ISAREG_ENTRY_GEN("gfx1011:xnack-", 10, 1, 1, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx1011:xnack+", 10, 1, 1, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx1012", 10, 1, 2, unsupported, any)
|
||||
ISAREG_ENTRY_GEN("gfx1012:xnack-", 10, 1, 2, unsupported, disabled)
|
||||
ISAREG_ENTRY_GEN("gfx1012:xnack+", 10, 1, 2, unsupported, enabled)
|
||||
ISAREG_ENTRY_GEN("gfx1030", 10, 3, 0, unsupported, unsupported)
|
||||
ISAREG_ENTRY_GEN("gfx1031", 10, 3, 1, unsupported, unsupported)
|
||||
#undef ISAREG_ENTRY_GEN
|
||||
return supported_isas;
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@ extern uint8_t ocl_blit_object_gfx702[];
|
||||
extern uint8_t ocl_blit_object_gfx801[];
|
||||
extern uint8_t ocl_blit_object_gfx802[];
|
||||
extern uint8_t ocl_blit_object_gfx803[];
|
||||
extern uint8_t ocl_blit_object_gfx805[];
|
||||
extern uint8_t ocl_blit_object_gfx810[];
|
||||
extern uint8_t ocl_blit_object_gfx900[];
|
||||
extern uint8_t ocl_blit_object_gfx902[];
|
||||
@@ -959,65 +960,45 @@ hsa_status_t BlitKernel::LaunchKernel(BlitQueue& blit_queue,
|
||||
|
||||
hsa_status_t BlitKernel::GetPatchedBlitObject(const char* agent_name,
|
||||
uint8_t** blit_code_object) {
|
||||
if (strncmp(agent_name, "gfx", 3) != 0) {
|
||||
return HSA_STATUS_ERROR_INVALID_ISA_NAME;
|
||||
}
|
||||
std::string sname(agent_name);
|
||||
|
||||
uint64_t target_name = atoi(&agent_name[3]);
|
||||
|
||||
switch (target_name) {
|
||||
case 700:
|
||||
if (sname == "gfx700") {
|
||||
*blit_code_object = ocl_blit_object_gfx700;
|
||||
break;
|
||||
case 701:
|
||||
} else if (sname == "gfx701") {
|
||||
*blit_code_object = ocl_blit_object_gfx701;
|
||||
break;
|
||||
case 702:
|
||||
} else if (sname == "gfx702") {
|
||||
*blit_code_object = ocl_blit_object_gfx702;
|
||||
break;
|
||||
case 801:
|
||||
} else if (sname == "gfx801") {
|
||||
*blit_code_object = ocl_blit_object_gfx801;
|
||||
break;
|
||||
case 802:
|
||||
} else if (sname == "gfx802") {
|
||||
*blit_code_object = ocl_blit_object_gfx802;
|
||||
break;
|
||||
case 803:
|
||||
} else if (sname == "gfx803") {
|
||||
*blit_code_object = ocl_blit_object_gfx803;
|
||||
break;
|
||||
case 810:
|
||||
} else if (sname == "gfx805") {
|
||||
*blit_code_object = ocl_blit_object_gfx805;
|
||||
} else if (sname == "gfx810") {
|
||||
*blit_code_object = ocl_blit_object_gfx810;
|
||||
break;
|
||||
case 900:
|
||||
} else if (sname == "gfx900") {
|
||||
*blit_code_object = ocl_blit_object_gfx900;
|
||||
break;
|
||||
case 902:
|
||||
} else if (sname == "gfx902") {
|
||||
*blit_code_object = ocl_blit_object_gfx902;
|
||||
break;
|
||||
case 904:
|
||||
} else if (sname == "gfx904") {
|
||||
*blit_code_object = ocl_blit_object_gfx904;
|
||||
break;
|
||||
case 906:
|
||||
} else if (sname == "gfx906") {
|
||||
*blit_code_object = ocl_blit_object_gfx906;
|
||||
break;
|
||||
case 908:
|
||||
} else if (sname == "gfx908") {
|
||||
*blit_code_object = ocl_blit_object_gfx908;
|
||||
break;
|
||||
case 1010:
|
||||
} else if (sname == "gfx1010") {
|
||||
*blit_code_object = ocl_blit_object_gfx1010;
|
||||
break;
|
||||
case 1011:
|
||||
} else if (sname == "gfx1011") {
|
||||
*blit_code_object = ocl_blit_object_gfx1011;
|
||||
break;
|
||||
case 1012:
|
||||
} else if (sname == "gfx1012") {
|
||||
*blit_code_object = ocl_blit_object_gfx1012;
|
||||
break;
|
||||
case 1030:
|
||||
} else if (sname == "gfx1030") {
|
||||
*blit_code_object = ocl_blit_object_gfx1030;
|
||||
break;
|
||||
case 1031:
|
||||
} else if (sname == "gfx1031") {
|
||||
*blit_code_object = ocl_blit_object_gfx1031;
|
||||
break;
|
||||
default:
|
||||
} else {
|
||||
return HSA_STATUS_ERROR_INVALID_ISA_NAME;
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ endif()
|
||||
|
||||
# Determine the target devices if not specified
|
||||
if (NOT DEFINED TARGET_DEVICES)
|
||||
set (TARGET_DEVICES "gfx700;gfx701;gfx702;gfx801;gfx802;gfx803;gfx810;gfx900;gfx902;gfx904;gfx906;gfx908;gfx1010;gfx1011;gfx1012;gfx1030;gfx1031")
|
||||
set (TARGET_DEVICES "gfx700;gfx701;gfx702;gfx801;gfx802;gfx803;gfx805;gfx810;gfx900;gfx902;gfx904;gfx906;gfx908;gfx1010;gfx1011;gfx1012;gfx1030;gfx1031")
|
||||
endif()
|
||||
set( TARGET_DEVICES ${TARGET_DEVICES} CACHE STRING "Build targets" FORCE )
|
||||
|
||||
|
||||
@@ -85,30 +85,40 @@ enum : unsigned {
|
||||
// Not specified processor.
|
||||
EF_AMDGPU_MACH_NONE = 0x000,
|
||||
|
||||
// AMDGCN GFX7.
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX700 = 0x022,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX701 = 0x023,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX702 = 0x024,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX703 = 0x025,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX704 = 0x026,
|
||||
// AMDGCN GFX8.
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX801 = 0x028,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX802 = 0x029,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX803 = 0x02a,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX810 = 0x02b,
|
||||
// AMDGCN GFX9.
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX900 = 0x02c,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX902 = 0x02d,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX904 = 0x02e,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX908 = 0x030,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX909 = 0x031,
|
||||
// AMDGCN GFX10.
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1010 = 0x033,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1011 = 0x034,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1012 = 0x035,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1030 = 0x036,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1031 = 0x037,
|
||||
// AMDGCN-based processors.
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX600 = 0x020,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX601 = 0x021,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX700 = 0x022,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX701 = 0x023,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX702 = 0x024,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX703 = 0x025,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX704 = 0x026,
|
||||
EF_AMDGPU_MACH_AMDGCN_RESERVED_0X27 = 0x027,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX801 = 0x028,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX802 = 0x029,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX803 = 0x02a,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX810 = 0x02b,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX900 = 0x02c,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX902 = 0x02d,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX904 = 0x02e,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX906 = 0x02f,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX908 = 0x030,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX909 = 0x031,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX90C = 0x032,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1010 = 0x033,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1011 = 0x034,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1012 = 0x035,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1030 = 0x036,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1031 = 0x037,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1032 = 0x038,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX1033 = 0x039,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX602 = 0x03a,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX705 = 0x03b,
|
||||
EF_AMDGPU_MACH_AMDGCN_GFX805 = 0x03c,
|
||||
|
||||
// First/last AMDGCN-based processors.
|
||||
EF_AMDGPU_MACH_AMDGCN_FIRST = EF_AMDGPU_MACH_AMDGCN_GFX600,
|
||||
EF_AMDGPU_MACH_AMDGCN_LAST = EF_AMDGPU_MACH_AMDGCN_GFX805,
|
||||
|
||||
// Indicates if the "xnack" target feature is enabled for all code contained
|
||||
// in the object.
|
||||
|
||||
@@ -549,25 +549,33 @@ namespace code {
|
||||
// TODO: Move isa registry into the loader.
|
||||
static bool GetMachInfo(unsigned mach, std::string &name, bool &sramecc_supported, bool &xnack_supported) {
|
||||
switch (mach) {
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX700: name = "gfx700"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX600: name = "gfx600"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX601: name = "gfx601"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX602: name = "gfx602"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX701: name = "gfx701"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX702: name = "gfx702"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX703: name = "gfx703"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX704: name = "gfx704"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX705: name = "gfx705"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX801: name = "gfx801"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX802: name = "gfx802"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX803: name = "gfx803"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX805: name = "gfx805"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX810: name = "gfx810"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX900: name = "gfx900"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX902: name = "gfx902"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX904: name = "gfx904"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX906: name = "gfx906"; xnack_supported = true; sramecc_supported = true; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX908: name = "gfx908"; xnack_supported = true; sramecc_supported = true; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX909: name = "gfx909"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX90C: name = "gfx90c"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1010: name = "gfx1010"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1011: name = "gfx1011"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1012: name = "gfx1012"; xnack_supported = true; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1030: name = "gfx1030"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1031: name = "gfx1031"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1032: name = "gfx1032"; xnack_supported = false; sramecc_supported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1033: name = "gfx1033"; xnack_supported = false; sramecc_supported = false; break;
|
||||
default: return false;
|
||||
}
|
||||
return true;
|
||||
@@ -578,7 +586,13 @@ namespace code {
|
||||
assert(!old_name.empty() && "Expecting non-empty old name");
|
||||
|
||||
unsigned mach = 0;
|
||||
if (old_name == "AMD:AMDGPU:7:0:0")
|
||||
if (old_name == "AMD:AMDGPU:6:0:0")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX600;
|
||||
else if (old_name == "AMD:AMDGPU:6:0:1")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX601;
|
||||
else if (old_name == "AMD:AMDGPU:6:0:2")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX602;
|
||||
else if (old_name == "AMD:AMDGPU:7:0:0")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX700;
|
||||
else if (old_name == "AMD:AMDGPU:7:0:1")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX701;
|
||||
@@ -588,12 +602,16 @@ namespace code {
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX703;
|
||||
else if (old_name == "AMD:AMDGPU:7:0:4")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX704;
|
||||
else if (old_name == "AMD:AMDGPU:7:0:5")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX705;
|
||||
else if (old_name == "AMD:AMDGPU:8:0:1")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX801;
|
||||
else if (old_name == "AMD:AMDGPU:8:0:2")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX802;
|
||||
else if (old_name == "AMD:AMDGPU:8:0:3")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX803;
|
||||
else if (old_name == "AMD:AMDGPU:8:0:5")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX805;
|
||||
else if (old_name == "AMD:AMDGPU:8:1:0")
|
||||
mach = ELF::EF_AMDGPU_MACH_AMDGCN_GFX810;
|
||||
else if (old_name == "AMD:AMDGPU:9:0:0" || old_name == "AMD:AMDGPU:9:0:1")
|
||||
|
||||
@@ -82,16 +82,16 @@ namespace loader {
|
||||
invalid.handle = 0;
|
||||
gfx700.handle = 700;
|
||||
gfx701.handle = 701;
|
||||
gfx800.handle = 800;
|
||||
gfx702.handle = 702;
|
||||
gfx801.handle = 801;
|
||||
gfx802.handle = 802;
|
||||
gfx803.handle = 803;
|
||||
gfx804.handle = 804;
|
||||
gfx805.handle = 805;
|
||||
gfx810.handle = 810;
|
||||
gfx900.handle = 900;
|
||||
gfx901.handle = 901;
|
||||
gfx902.handle = 902;
|
||||
gfx903.handle = 903;
|
||||
gfx904.handle = 904;
|
||||
gfx906.handle = 906;
|
||||
gfx908.handle = 908;
|
||||
gfx1010.handle = 1010;
|
||||
gfx1011.handle = 1011;
|
||||
@@ -107,6 +107,14 @@ namespace loader {
|
||||
return gfx700;
|
||||
} else if (sname == "AMD:AMDGPU:7:0:1") {
|
||||
return gfx701;
|
||||
} else if (sname == "AMD:AMDGPU:7:0:2") {
|
||||
return gfx702;
|
||||
} else if (sname == "AMD:AMDGPU:7:0:3") {
|
||||
return gfx703;
|
||||
} else if (sname == "AMD:AMDGPU:7:0:4") {
|
||||
return gfx704;
|
||||
} else if (sname == "AMD:AMDGPU:7:0:5") {
|
||||
return gfx705;
|
||||
} else if (sname == "AMD:AMDGPU:8:0:0") {
|
||||
return gfx800;
|
||||
} else if (sname == "AMD:AMDGPU:8:0:1") {
|
||||
@@ -117,6 +125,8 @@ namespace loader {
|
||||
return gfx803;
|
||||
} else if (sname == "AMD:AMDGPU:8:0:4") {
|
||||
return gfx804;
|
||||
} else if (sname == "AMD:AMDGPU:8:0:5") {
|
||||
return gfx805;
|
||||
} else if (sname == "AMD:AMDGPU:8:1:0") {
|
||||
return gfx810;
|
||||
} else if (sname == "AMD:AMDGPU:9:0:0") {
|
||||
@@ -126,7 +136,15 @@ namespace loader {
|
||||
} else if (sname == "AMD:AMDGPU:9:0:2") {
|
||||
return gfx902;
|
||||
} else if (sname == "AMD:AMDGPU:9:0:3") {
|
||||
return gfx903;
|
||||
return gfx902;
|
||||
} else if (sname == "AMD:AMDGPU:9:0:4") {
|
||||
return gfx904;
|
||||
} else if (sname == "AMD:AMDGPU:9:0:5") {
|
||||
return gfx904;
|
||||
} else if (sname == "AMD:AMDGPU:9:0:6") {
|
||||
return gfx906;
|
||||
} else if (sname == "AMD:AMDGPU:9:0:7") {
|
||||
return gfx906;
|
||||
} else if (sname == "AMD:AMDGPU:9:0:8") {
|
||||
return gfx908;
|
||||
} else if (sname == "AMD:AMDGPU:10:1:0") {
|
||||
@@ -141,6 +159,9 @@ namespace loader {
|
||||
return gfx1031;
|
||||
}
|
||||
|
||||
// The offline loader only supports code object v2 which only supports
|
||||
// asics up to gfx906. Do NOT add handling of new asics into this
|
||||
// if-else-if* block.
|
||||
assert(0);
|
||||
return invalid;
|
||||
}
|
||||
|
||||
@@ -55,8 +55,9 @@ namespace loader {
|
||||
class OfflineLoaderContext : public amd::hsa::loader::Context {
|
||||
private:
|
||||
hsa_isa_t invalid;
|
||||
hsa_isa_t gfx700, gfx701, gfx800, gfx801, gfx802, gfx803, gfx804, gfx810;
|
||||
hsa_isa_t gfx900, gfx901, gfx902, gfx903, gfx908;
|
||||
hsa_isa_t gfx700, gfx701, gfx702, gfx703, gfx704, gfx705;
|
||||
hsa_isa_t gfx800, gfx801, gfx802, gfx803, gfx804, gfx805, gfx810;
|
||||
hsa_isa_t gfx900, gfx901, gfx902, gfx904, gfx906, gfx908;
|
||||
hsa_isa_t gfx1010, gfx1011, gfx1012, gfx1030, gfx1031;
|
||||
std::ostream& out;
|
||||
typedef std::set<void*> PointerSet;
|
||||
|
||||
Ссылка в новой задаче
Block a user