On Sat, Jun 28, 2014 at 09:33:52PM -0700, Kenneth Graunke wrote: > 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 <kenn...@whitecape.org> > --- > src/mesa/drivers/dri/i965/brw_disasm.c | 28 +++++++++++++++++++++------- > 1 file changed, 21 insertions(+), 7 deletions(-) > > diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c > b/src/mesa/drivers/dri/i965/brw_disasm.c > index 4e75cc7..99c9bd0 100644 > --- a/src/mesa/drivers/dri/i965/brw_disasm.c > +++ b/src/mesa/drivers/dri/i965/brw_disasm.c > @@ -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:
I was wondering if we could print out SIMD4x2 in these three cases as we do above for SIMD8 and SIMD16, but it's part of the atomic operand name, of course. Reviewed-by: Kristian Høgsberg <k...@bitplanet.net> > - 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); > -- > 2.0.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev