aco: fix printing assembly with CLRXdisasm on GFX6

We thought that CLRXdisasm allowed gfx600 as well as gfx700 but
it actually doesn't. Use the family for GFX6 chips instead.

Fixes: 0099f85232 ("aco: print assembly with CLRXdisasm for GFX6-GFX7 if found on the system")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3531>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3531>
This commit is contained in:
Samuel Pitoiset 2020-01-20 18:41:00 +01:00 committed by Marge Bot
parent dda542e912
commit 54e54ec3e8

View file

@ -16,6 +16,7 @@ void print_asm_gfx6_gfx7(Program *program, std::vector<uint32_t>& binary,
{
char path[] = "/tmp/fileXXXXXX";
char line[2048], command[128];
const char *gpu_type;
FILE *p;
int fd;
@ -30,8 +31,39 @@ void print_asm_gfx6_gfx7(Program *program, std::vector<uint32_t>& binary,
goto fail;
}
sprintf(command, "clrxdisasm --gpuType=%s -r %s",
program->chip_class == GFX6 ? "gfx600" : "gfx700", path);
/* Determine the GPU type for CLRXdisasm. Use the family for GFX6 chips
* because it doesn't allow to use gfx600 directly.
*/
switch (program->chip_class) {
case GFX6:
switch (program->family) {
case CHIP_TAHITI:
gpu_type = "tahiti";
break;
case CHIP_PITCAIRN:
gpu_type = "pitcairn";
break;
case CHIP_VERDE:
gpu_type = "capeverde";
break;
case CHIP_OLAND:
gpu_type = "oland";
break;
case CHIP_HAINAN:
gpu_type = "hainan";
break;
default:
unreachable("Invalid GFX6 family!");
}
break;
case GFX7:
gpu_type = "gfx700";
break;
default:
unreachable("Invalid chip class!");
}
sprintf(command, "clrxdisasm --gpuType=%s -r %s", gpu_type, path);
p = popen(command, "r");
if (p) {