[libamdhsacode] Support COV6/Generic Targets
Change-Id: I4680577eb56dc436fbc134b169f172dd476bff37
This commit is contained in:
committed by
Chiranjeevi Pattigidi
parent
5402842d5f
commit
a93c18dc90
@@ -483,6 +483,10 @@ namespace code {
|
||||
*major = 5;
|
||||
*minor = 0;
|
||||
return true;
|
||||
case ELF::ELFABIVERSION_AMDGPU_HSA_V6:
|
||||
*major = 6;
|
||||
*minor = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -600,6 +604,10 @@ namespace code {
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1103: MI.Name = "gfx1103"; MI.XnackSupported = false; MI.SrameccSupported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1150: MI.Name = "gfx1150"; MI.XnackSupported = false; MI.SrameccSupported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX1151: MI.Name = "gfx1151"; MI.XnackSupported = false; MI.SrameccSupported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX9_GENERIC: MI.Name = "gfx9-generic"; MI.XnackSupported = true; MI.SrameccSupported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_1_GENERIC: MI.Name = "gfx10-1-generic"; MI.XnackSupported = true; MI.SrameccSupported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX10_3_GENERIC: MI.Name = "gfx10-3-generic"; MI.XnackSupported = false; MI.SrameccSupported = false; break;
|
||||
case ELF::EF_AMDGPU_MACH_AMDGCN_GFX11_GENERIC: MI.Name = "gfx11-generic"; MI.XnackSupported = false; MI.SrameccSupported = false; break;
|
||||
default: return false;
|
||||
}
|
||||
return true;
|
||||
@@ -687,13 +695,17 @@ namespace code {
|
||||
return MI.Name;
|
||||
}
|
||||
|
||||
bool AmdHsaCode::GetIsa(std::string& isa_name)
|
||||
bool AmdHsaCode::GetIsa(std::string& isa_name, unsigned *genericVersion)
|
||||
{
|
||||
isa_name.clear();
|
||||
|
||||
uint32_t code_object_major_version = 0;
|
||||
uint32_t code_object_minor_version = 0;
|
||||
|
||||
// Generic versioning starts at 1, so zero means no generic version.
|
||||
if (genericVersion)
|
||||
*genericVersion = 0;
|
||||
|
||||
switch (img->EClass()) {
|
||||
case ELFCLASS64:
|
||||
// There is no e_machine and/or OS ABI for R600 so rely on checking
|
||||
@@ -740,7 +752,7 @@ namespace code {
|
||||
MI.Name += ":xnack+";
|
||||
else if (MI.XnackSupported)
|
||||
MI.Name += ":xnack-";
|
||||
} else if (code_object_major_version == 4 || code_object_major_version == 5) {
|
||||
} else if (code_object_major_version >= 4) {
|
||||
switch (img->EFlags() & ELF::EF_AMDGPU_FEATURE_SRAMECC_V4) {
|
||||
case ELF::EF_AMDGPU_FEATURE_SRAMECC_OFF_V4:
|
||||
MI.Name += ":sramecc-";
|
||||
@@ -758,6 +770,12 @@ namespace code {
|
||||
MI.Name += ":xnack+";
|
||||
break;
|
||||
}
|
||||
|
||||
// Generic version is not part of the ISA name.
|
||||
// Only parse it when the caller wants it.
|
||||
if (genericVersion && code_object_major_version >= 6) {
|
||||
*genericVersion = (img->EFlags() & ELF::EF_AMDGPU_GENERIC_VERSION) >> ELF::EF_AMDGPU_GENERIC_VERSION_OFFSET;
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user