diff --git a/src/freedreno/ir3/disasm-a3xx.c b/src/freedreno/ir3/disasm-a3xx.c index a362c8fd952..c2466a83bf3 100644 --- a/src/freedreno/ir3/disasm-a3xx.c +++ b/src/freedreno/ir3/disasm-a3xx.c @@ -399,6 +399,7 @@ static const struct opc_info { OPC(7, OPC_FENCE, fence), OPC(7, OPC_LOCK, lock), OPC(7, OPC_UNLOCK, unlock), + OPC(7, OPC_ALIAS, alias), /* clang-format on */ #undef OPC }; diff --git a/src/freedreno/ir3/ir3_print.c b/src/freedreno/ir3/ir3_print.c index 7805ccecc6b..cd78a69d82a 100644 --- a/src/freedreno/ir3/ir3_print.c +++ b/src/freedreno/ir3/ir3_print.c @@ -18,6 +18,7 @@ #define RESET "\x1b[0m" #define RED "\x1b[0;31m" #define GREEN "\x1b[0;32m" +#define YELLOW "\x1b[0;33m" #define BLUE "\x1b[0;34m" #define MAGENTA "\x1b[0;35m" @@ -27,6 +28,7 @@ #define SYN_REG(x) RED x RESET #define SYN_IMMED(x) GREEN x RESET #define SYN_CONST(x) GREEN x RESET +#define SYN_RT(x) YELLOW x RESET #define SYN_SSA(x) BLUE x RESET #define SYN_ARRAY(x) MAGENTA x RESET @@ -243,6 +245,34 @@ print_instr_name(struct log_stream *stream, struct ir3_instruction *instr, mesa_log_stream_printf(stream, ".%s", type_name(instr->cat6.type)); break; + case OPC_ALIAS: + switch (instr->cat7.alias_scope) { + case ALIAS_TEX: + mesa_log_stream_printf(stream, ".tex"); + break; + case ALIAS_RT: + mesa_log_stream_printf(stream, ".rt"); + break; + case ALIAS_MEM: + mesa_log_stream_printf(stream, ".mem"); + break; + } + + if (instr->cat7.alias_type_float) { + mesa_log_stream_printf(stream, ".f"); + } else { + mesa_log_stream_printf(stream, ".b"); + } + + if (instr->srcs[0]->flags & IR3_REG_HALF) { + mesa_log_stream_printf(stream, "16"); + } else { + mesa_log_stream_printf(stream, "32"); + } + + mesa_log_stream_printf(stream, ".%u", + instr->cat7.alias_table_size_minus_one); + break; default: break; } @@ -358,6 +388,9 @@ print_reg_name(struct log_stream *stream, struct ir3_instruction *instr, else if (reg->flags & IR3_REG_PREDICATE) mesa_log_stream_printf(stream, SYN_REG("p0.%c"), "xyzw"[reg_comp(reg)]); + else if (reg->flags & IR3_REG_RT) + mesa_log_stream_printf(stream, SYN_RT("rt%u.%c"), reg_num(reg), + "xyzw"[reg_comp(reg)]); else mesa_log_stream_printf(stream, SYN_REG("r%u.%c"), reg_num(reg), "xyzw"[reg_comp(reg)]);