mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-21 20:10:14 +01:00
i965/disasm: Improve disassembly of atomic messages on Haswell+.
This backports the atomic message disassembly support from gen8_disasm.c, which additionally offers support for decoding atomic surface read/write messages, and showing SIMD modes and other details. Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
This commit is contained in:
parent
eb3185f686
commit
00b72bbab5
1 changed files with 21 additions and 7 deletions
|
|
@ -1417,33 +1417,47 @@ brw_disassemble_inst(FILE *file, struct brw_context *brw, brw_inst *inst,
|
|||
}
|
||||
/* FALLTHROUGH */
|
||||
|
||||
case HSW_SFID_DATAPORT_DATA_CACHE_1:
|
||||
case HSW_SFID_DATAPORT_DATA_CACHE_1: {
|
||||
if (brw->gen >= 7) {
|
||||
format(file, " (");
|
||||
|
||||
unsigned msg_ctrl = brw_inst_dp_msg_control(brw, inst);
|
||||
|
||||
err |= control(file, "DP DC1 message type",
|
||||
dp_dc1_msg_type_hsw,
|
||||
brw_inst_dp_msg_type(brw, inst), &space);
|
||||
|
||||
format(file, ", %d, ", brw_inst_binding_table_index(brw, inst));
|
||||
format(file, ", Surface = %d, ",
|
||||
brw_inst_binding_table_index(brw, inst));
|
||||
|
||||
switch (brw_inst_dp_msg_type(brw, inst)) {
|
||||
case HSW_DATAPORT_DC_PORT1_UNTYPED_ATOMIC_OP:
|
||||
case HSW_DATAPORT_DC_PORT1_UNTYPED_ATOMIC_OP_SIMD4X2:
|
||||
case HSW_DATAPORT_DC_PORT1_TYPED_ATOMIC_OP:
|
||||
case HSW_DATAPORT_DC_PORT1_TYPED_ATOMIC_OP_SIMD4X2:
|
||||
case HSW_DATAPORT_DC_PORT1_ATOMIC_COUNTER_OP:
|
||||
format(file, "SIMD%d,", (msg_ctrl & (1 << 4)) ? 8 : 16);
|
||||
/* fallthrough */
|
||||
case HSW_DATAPORT_DC_PORT1_UNTYPED_ATOMIC_OP_SIMD4X2:
|
||||
case HSW_DATAPORT_DC_PORT1_TYPED_ATOMIC_OP_SIMD4X2:
|
||||
case HSW_DATAPORT_DC_PORT1_ATOMIC_COUNTER_OP_SIMD4X2:
|
||||
control(file, "atomic op", aop,
|
||||
brw_inst_imm_ud(brw, inst) >> 8 & 0xf, &space);
|
||||
control(file, "atomic op", aop, msg_ctrl & 0xf, &space);
|
||||
break;
|
||||
case HSW_DATAPORT_DC_PORT1_UNTYPED_SURFACE_READ:
|
||||
case HSW_DATAPORT_DC_PORT1_UNTYPED_SURFACE_WRITE:
|
||||
case HSW_DATAPORT_DC_PORT1_TYPED_SURFACE_READ:
|
||||
case HSW_DATAPORT_DC_PORT1_TYPED_SURFACE_WRITE: {
|
||||
static const char *simd_modes[] = { "4x2", "16", "8" };
|
||||
format(file, "SIMD%s, Mask = 0x%x",
|
||||
simd_modes[msg_ctrl >> 4], msg_ctrl & 0xf);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
format(file, "%d", brw_inst_dp_msg_control(brw, inst));
|
||||
format(file, "0x%x", msg_ctrl);
|
||||
}
|
||||
format(file, ")");
|
||||
break;
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
}
|
||||
|
||||
default:
|
||||
format(file, "unsupported target %d", target);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue