broadcom/compiler: name registers correctly based on V3D version

So we can differentiate between TMU for V3D 4.x and UNIFA for V3D 4.x,
which are aliased.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8980>
This commit is contained in:
Iago Toral Quiroga 2021-02-11 11:32:35 +01:00 committed by Marge Bot
parent f85fcaa494
commit 457ed5aa01
4 changed files with 17 additions and 7 deletions

View file

@ -163,7 +163,8 @@ vir_print_reg(struct v3d_compile *c, const struct qinst *inst,
break;
case QFILE_MAGIC:
fprintf(stderr, "%s", v3d_qpu_magic_waddr_name(reg.index));
fprintf(stderr, "%s",
v3d_qpu_magic_waddr_name(c->devinfo, reg.index));
break;
case QFILE_SMALL_IMM: {
@ -202,7 +203,8 @@ vir_dump_sig_addr(const struct v3d_device_info *devinfo,
if (!instr->sig_magic)
fprintf(stderr, ".rf%d", instr->sig_addr);
else {
const char *name = v3d_qpu_magic_waddr_name(instr->sig_addr);
const char *name =
v3d_qpu_magic_waddr_name(devinfo, instr->sig_addr);
if (name)
fprintf(stderr, ".%s", name);
else

View file

@ -90,7 +90,7 @@ v3d_qpu_disasm_waddr(struct disasm_state *disasm, uint32_t waddr, bool magic)
return;
}
const char *name = v3d_qpu_magic_waddr_name(waddr);
const char *name = v3d_qpu_magic_waddr_name(disasm->devinfo, waddr);
if (name)
append(disasm, "%s", name);
else
@ -187,7 +187,9 @@ v3d_qpu_disasm_sig_addr(struct disasm_state *disasm,
if (!instr->sig_magic)
append(disasm, ".rf%d", instr->sig_addr);
else {
const char *name = v3d_qpu_magic_waddr_name(instr->sig_addr);
const char *name =
v3d_qpu_magic_waddr_name(disasm->devinfo,
instr->sig_addr);
if (name)
append(disasm, ".%s", name);
else

View file

@ -27,8 +27,13 @@
#include "qpu_instr.h"
const char *
v3d_qpu_magic_waddr_name(enum v3d_qpu_waddr waddr)
v3d_qpu_magic_waddr_name(const struct v3d_device_info *devinfo,
enum v3d_qpu_waddr waddr)
{
/* V3D 4.x UNIFA aliases TMU in V3D 3.x in the table below */
if (devinfo->ver < 40 && waddr == V3D_QPU_WADDR_TMU)
return "tmu";
static const char *waddr_magic[] = {
[V3D_QPU_WADDR_R0] = "r0",
[V3D_QPU_WADDR_R1] = "r1",
@ -39,7 +44,7 @@ v3d_qpu_magic_waddr_name(enum v3d_qpu_waddr waddr)
[V3D_QPU_WADDR_NOP] = "-",
[V3D_QPU_WADDR_TLB] = "tlb",
[V3D_QPU_WADDR_TLBU] = "tlbu",
[V3D_QPU_WADDR_TMU] = "tmu",
[V3D_QPU_WADDR_UNIFA] = "unifa",
[V3D_QPU_WADDR_TMUL] = "tmul",
[V3D_QPU_WADDR_TMUD] = "tmud",
[V3D_QPU_WADDR_TMUA] = "tmua",

View file

@ -388,7 +388,8 @@ struct v3d_qpu_instr {
};
};
const char *v3d_qpu_magic_waddr_name(enum v3d_qpu_waddr waddr);
const char *v3d_qpu_magic_waddr_name(const struct v3d_device_info *devinfo,
enum v3d_qpu_waddr waddr);
const char *v3d_qpu_add_op_name(enum v3d_qpu_add_op op);
const char *v3d_qpu_mul_op_name(enum v3d_qpu_mul_op op);
const char *v3d_qpu_cond_name(enum v3d_qpu_cond cond);