Implement Target ID Proposal

Changes from Konstantin Zhuravlyov, Tony Tye

Change-Id: I532801193afa9d5b8ac2a877b5497eab661f0597
Cette révision appartient à :
Konstantin Zhuravlyov
2020-11-10 13:41:20 -05:00
Parent a09ba8bcc8
révision 3a08d0964e
22 fichiers modifiés avec 754 ajouts et 443 suppressions
+58 -39
Voir le fichier
@@ -1681,7 +1681,7 @@ hsa_status_t hsa_isa_compatible(
const Isa *agent_isa_object = Isa::Object(agent_isa);
IS_VALID(agent_isa_object);
*result = code_object_isa_object->IsCompatible(agent_isa_object);
*result = Isa::IsCompatible(*code_object_isa_object, *agent_isa_object);
return HSA_STATUS_SUCCESS;
CATCH;
}
@@ -1843,6 +1843,7 @@ hsa_status_t hsa_code_object_destroy(
static std::string ConvertOldTargetNameToNew(
const std::string &OldName, bool IsFinalizer, uint32_t EFlags) {
std::string NewName = "";
bool xnack_supported = false;
// 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?
@@ -1858,60 +1859,78 @@ static std::string ConvertOldTargetNameToNew(
NewName = "amdgcn-amd-amdhsa--gfx704";
else if (OldName == "AMD:AMDGPU:8:0:0")
NewName = "amdgcn-amd-amdhsa--gfx800";
else if (OldName == "AMD:AMDGPU:8:0:1")
else if (OldName == "AMD:AMDGPU:8:0:1") {
NewName = "amdgcn-amd-amdhsa--gfx801";
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:8:0:2")
NewName = "amdgcn-amd-amdhsa--gfx802";
else if (OldName == "AMD:AMDGPU:8:0:3")
NewName = "amdgcn-amd-amdhsa--gfx803";
else if (OldName == "AMD:AMDGPU:8:0:4")
NewName = "amdgcn-amd-amdhsa--gfx804";
else if (OldName == "AMD:AMDGPU:8:1:0")
else if (OldName == "AMD:AMDGPU:8:1:0") {
NewName = "amdgcn-amd-amdhsa--gfx810";
else if (OldName == "AMD:AMDGPU:9:0:0")
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:9:0:0") {
NewName = "amdgcn-amd-amdhsa--gfx900";
else if (OldName == "AMD:AMDGPU:9:0:1")
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:9:0:1") {
NewName = "amdgcn-amd-amdhsa--gfx900";
else if (OldName == "AMD:AMDGPU:9:0:2")
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:9:0:2") {
NewName = "amdgcn-amd-amdhsa--gfx902";
else if (OldName == "AMD:AMDGPU:9:0:3")
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:9:0:3") {
NewName = "amdgcn-amd-amdhsa--gfx902";
else if (OldName == "AMD:AMDGPU:9:0:4")
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:9:0:4") {
NewName = "amdgcn-amd-amdhsa--gfx904";
else if (OldName == "AMD:AMDGPU:9:0:6")
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:9:0:5") {
NewName = "amdgcn-amd-amdhsa--gfx904";
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:9:0:6") {
NewName = "amdgcn-amd-amdhsa--gfx906";
else if (OldName == "AMD:AMDGPU:9:0:8")
NewName = "amdgcn-amd-amdhsa--gfx908";
else if (OldName == "AMD:AMDGPU:10:1:0")
NewName = "amdgcn-amd-amdhsa--gfx1010";
else if (OldName == "AMD:AMDGPU:10:1:1")
NewName = "amdgcn-amd-amdhsa--gfx1011";
else if (OldName == "AMD:AMDGPU:10:1:2")
NewName = "amdgcn-amd-amdhsa--gfx1012";
else if (OldName == "AMD:AMDGPU:10:3:0")
NewName = "amdgcn-amd-amdhsa--gfx1030";
else if (OldName == "AMD:AMDGPU:10:3:1")
NewName = "amdgcn-amd-amdhsa--gfx1031";
else
assert(false && "Unhandled target");
xnack_supported = true;
}
else if (OldName == "AMD:AMDGPU:9:0:7") {
NewName = "amdgcn-amd-amdhsa--gfx906";
xnack_supported = true;
}
else {
// Code object v2 only supports asics up to gfx906. Do NOT add handling
// of new asics into this if-else-if* block.
return "";
}
if (IsFinalizer && (EFlags & EF_AMDGPU_XNACK)) {
NewName = NewName + "+xnack";
if (IsFinalizer) {
if (EFlags & ELF::EF_AMDGPU_FEATURE_XNACK_V2)
NewName = NewName + ":xnack+";
else if (xnack_supported)
NewName = NewName + ":xnack-";
} else {
if (EFlags != 0 && (EFlags & EF_AMDGPU_XNACK_LC)) {
NewName = NewName + "+xnack";
} else {
if (OldName == "AMD:AMDGPU:8:0:1")
NewName = NewName + "+xnack";
else if (OldName == "AMD:AMDGPU:8:1:0")
NewName = NewName + "+xnack";
else if (OldName == "AMD:AMDGPU:9:0:1")
NewName = NewName + "+xnack";
else if (OldName == "AMD:AMDGPU:9:0:2")
NewName = NewName + "+xnack";
else if (OldName == "AMD:AMDGPU:9:0:3")
NewName = NewName + "+xnack";
}
if (OldName == "AMD:AMDGPU:8:0:1")
NewName = NewName + ":xnack+";
else if (OldName == "AMD:AMDGPU:8:1:0")
NewName = NewName + ":xnack+";
else if (OldName == "AMD:AMDGPU:9:0:1")
NewName = NewName + ":xnack+";
else if (OldName == "AMD:AMDGPU:9:0:3")
NewName = NewName + ":xnack+";
else if (OldName == "AMD:AMDGPU:9:0:5")
NewName = NewName + ":xnack+";
else if (OldName == "AMD:AMDGPU:9:0:7")
NewName = NewName + ":xnack+";
else if (xnack_supported)
NewName = NewName + ":xnack-";
}
return NewName;