mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 21:40:08 +01:00
pan/decode: Print defer mode in deferrable instructions
Knowing which defer mode is used is quite useful. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Christoph Pillmayer <christoph.pillmayer@arm.com> Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38826>
This commit is contained in:
parent
97a10dfcae
commit
ced586fabd
1 changed files with 36 additions and 25 deletions
|
|
@ -94,6 +94,19 @@ static const char *conditions_str[] = {
|
|||
"le", "gt", "eq", "ne", "lt", "ge", "always",
|
||||
};
|
||||
|
||||
#if PAN_ARCH >= 11
|
||||
static const char *defer_modes_str[] = {
|
||||
".defer_immediate",
|
||||
".defer_indirect",
|
||||
};
|
||||
|
||||
#define defer_mode_str(I) \
|
||||
I.defer_mode < ARRAY_SIZE(defer_modes_str) ? defer_modes_str[I.defer_mode] \
|
||||
: ".defer_mode_invalid"
|
||||
#else
|
||||
#define defer_mode_str(I) ""
|
||||
#endif
|
||||
|
||||
static void
|
||||
print_cs_instr(FILE *fp, const uint64_t *instr)
|
||||
{
|
||||
|
|
@ -321,14 +334,9 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
|
|||
".increment",
|
||||
};
|
||||
|
||||
const char *defer_mode_name[] = {
|
||||
".defer_immediate",
|
||||
".defer_indirect",
|
||||
};
|
||||
|
||||
fprintf(fp, "SHARED_SB_INC%s%s #%u, #%u",
|
||||
progress_increment_name[I.progress_increment],
|
||||
defer_mode_name[I.defer_mode], I.sb_mask, I.shared_entry);
|
||||
defer_mode_str(I), I.sb_mask, I.shared_entry);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -379,8 +387,9 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
|
|||
|
||||
case MALI_CS_OPCODE_FINISH_FRAGMENT: {
|
||||
cs_unpack(instr, CS_FINISH_FRAGMENT, I);
|
||||
fprintf(fp, "FINISH_FRAGMENT%s d%u, d%u, #%x, #%u",
|
||||
fprintf(fp, "FINISH_FRAGMENT%s%s d%u, d%u, #%x, #%u",
|
||||
I.increment_fragment_completed ? ".frag_end" : "",
|
||||
defer_mode_str(I),
|
||||
I.last_heap_chunk, I.first_heap_chunk, I.wait_mask,
|
||||
I.signal_slot);
|
||||
break;
|
||||
|
|
@ -493,28 +502,29 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
|
|||
"INVALID",
|
||||
};
|
||||
|
||||
fprintf(fp, "FLUSH_CACHE2.%s_l2.%s_lsc.%s r%u, #%x, #%u",
|
||||
fprintf(fp, "FLUSH_CACHE2.%s_l2.%s_lsc.%s%s r%u, #%x, #%u",
|
||||
mode[I.l2_flush_mode], mode[I.lsc_flush_mode],
|
||||
other_mode[I.other_flush_mode], I.latest_flush_id, I.wait_mask,
|
||||
I.signal_slot);
|
||||
other_mode[I.other_flush_mode], defer_mode_str(I),
|
||||
I.latest_flush_id, I.wait_mask, I.signal_slot);
|
||||
break;
|
||||
}
|
||||
|
||||
case MALI_CS_OPCODE_SYNC_ADD32: {
|
||||
cs_unpack(instr, CS_SYNC_ADD32, I);
|
||||
fprintf(fp, "SYNC_ADD32%s%s [d%u], r%u, #%x, #%u",
|
||||
fprintf(fp, "SYNC_ADD32%s%s%s [d%u], r%u, #%x, #%u",
|
||||
I.error_propagate ? ".error_propagate" : "",
|
||||
I.scope == MALI_CS_SYNC_SCOPE_CSG ? ".csg" : ".system", I.address,
|
||||
I.scope == MALI_CS_SYNC_SCOPE_CSG ? ".csg" : ".system",
|
||||
defer_mode_str(I), I.address,
|
||||
I.data, I.wait_mask, I.signal_slot);
|
||||
break;
|
||||
}
|
||||
|
||||
case MALI_CS_OPCODE_SYNC_SET32: {
|
||||
cs_unpack(instr, CS_SYNC_SET32, I);
|
||||
fprintf(fp, "SYNC_SET32%s%s [d%u], r%u, #%x, #%u",
|
||||
fprintf(fp, "SYNC_SET32%s%s%s [d%u], r%u, #%x, #%u",
|
||||
I.error_propagate ? ".error_propagate" : "",
|
||||
I.scope == MALI_CS_SYNC_SCOPE_CSG ? ".csg" : ".system", I.address,
|
||||
I.data, I.wait_mask, I.signal_slot);
|
||||
I.scope == MALI_CS_SYNC_SCOPE_CSG ? ".csg" : ".system",
|
||||
defer_mode_str(I), I.address, I.data, I.wait_mask, I.signal_slot);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -534,9 +544,10 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
|
|||
};
|
||||
|
||||
cs_unpack(instr, CS_STORE_STATE, I);
|
||||
fprintf(fp, "STORE_STATE.%s d%u, #%i, #%x, #%u",
|
||||
fprintf(fp, "STORE_STATE.%s%s d%u, #%i, #%x, #%u",
|
||||
I.state >= ARRAY_SIZE(states_str) ? "UNKNOWN_STATE"
|
||||
: states_str[I.state],
|
||||
defer_mode_str(I),
|
||||
I.address, I.offset, I.wait_mask, I.signal_slot);
|
||||
break;
|
||||
}
|
||||
|
|
@ -590,27 +601,27 @@ print_cs_instr(FILE *fp, const uint64_t *instr)
|
|||
|
||||
case MALI_CS_OPCODE_TRACE_POINT: {
|
||||
cs_unpack(instr, CS_TRACE_POINT, I);
|
||||
fprintf(fp, "TRACE_POINT r%d:r%d, #%x, #%u", I.base_register,
|
||||
I.base_register + I.register_count - 1, I.wait_mask,
|
||||
I.signal_slot);
|
||||
fprintf(fp, "TRACE_POINT%s r%d:r%d, #%x, #%u", defer_mode_str(I),
|
||||
I.base_register, I.base_register + I.register_count - 1,
|
||||
I.wait_mask, I.signal_slot);
|
||||
break;
|
||||
}
|
||||
|
||||
case MALI_CS_OPCODE_SYNC_ADD64: {
|
||||
cs_unpack(instr, CS_SYNC_ADD64, I);
|
||||
fprintf(fp, "SYNC_ADD64%s%s [d%u], d%u, #%x, #%u",
|
||||
fprintf(fp, "SYNC_ADD64%s%s%s [d%u], d%u, #%x, #%u",
|
||||
I.error_propagate ? ".error_propagate" : "",
|
||||
I.scope == MALI_CS_SYNC_SCOPE_CSG ? ".csg" : ".system", I.address,
|
||||
I.data, I.wait_mask, I.signal_slot);
|
||||
I.scope == MALI_CS_SYNC_SCOPE_CSG ? ".csg" : ".system",
|
||||
defer_mode_str(I), I.address, I.data, I.wait_mask, I.signal_slot);
|
||||
break;
|
||||
}
|
||||
|
||||
case MALI_CS_OPCODE_SYNC_SET64: {
|
||||
cs_unpack(instr, CS_SYNC_SET64, I);
|
||||
fprintf(fp, "SYNC_SET64.%s%s [d%u], d%u, #%x, #%u",
|
||||
fprintf(fp, "SYNC_SET64.%s%s%s [d%u], d%u, #%x, #%u",
|
||||
I.error_propagate ? ".error_propagate" : "",
|
||||
I.scope == MALI_CS_SYNC_SCOPE_CSG ? ".csg" : ".system", I.address,
|
||||
I.data, I.wait_mask, I.signal_slot);
|
||||
I.scope == MALI_CS_SYNC_SCOPE_CSG ? ".csg" : ".system",
|
||||
defer_mode_str(I), I.address, I.data, I.wait_mask, I.signal_slot);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue