Ilia Mirkin <imir...@alum.mit.edu> writes: > On Mon, Mar 31, 2014 at 4:48 PM, Eric Anholt <e...@anholt.net> wrote: >> This gets us disasm of atomic ops. >> --- >> src/mesa/drivers/dri/i965/brw_disasm.c | 113 >> +++++++++++++++++++++++++++++++-- >> 1 file changed, 106 insertions(+), 7 deletions(-) >> >> diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c >> b/src/mesa/drivers/dri/i965/brw_disasm.c >> index 8cd8a40..5222d53 100644 >> --- a/src/mesa/drivers/dri/i965/brw_disasm.c >> +++ b/src/mesa/drivers/dri/i965/brw_disasm.c >> @@ -309,7 +309,8 @@ static const char * const target_function[16] = { >> [BRW_SFID_DATAPORT_READ] = "read", >> [BRW_SFID_DATAPORT_WRITE] = "write", >> [BRW_SFID_URB] = "urb", >> - [BRW_SFID_THREAD_SPAWNER] = "thread_spawner" >> + [BRW_SFID_THREAD_SPAWNER] = "thread_spawner", >> + [BRW_SFID_VME] = "vme", >> }; >> >> static const char * const target_function_gen6[16] = { >> @@ -322,7 +323,10 @@ static const char * const target_function_gen6[16] = { >> [GEN6_SFID_DATAPORT_SAMPLER_CACHE] = "sampler", >> [GEN6_SFID_DATAPORT_RENDER_CACHE] = "render", >> [GEN6_SFID_DATAPORT_CONSTANT_CACHE] = "const", >> - [GEN7_SFID_DATAPORT_DATA_CACHE] = "data" >> + [GEN7_SFID_DATAPORT_DATA_CACHE] = "data", >> + [GEN7_SFID_PIXEL_INTERPOLATOR] = "pixel interp", >> + [HSW_SFID_DATAPORT_DATA_CACHE_1] = "dp data 1", >> + [HSW_SFID_CRE] = "cre", >> }; >> >> static const char * const dp_rc_msg_type_gen6[16] = { >> @@ -342,6 +346,54 @@ static const char * const dp_rc_msg_type_gen6[16] = { >> [GEN6_DATAPORT_WRITE_MESSAGE_RENDER_TARGET_UNORM_WRITE] = "RT UNORMc >> write", >> }; >> >> +static const char *const dp_dc0_msg_type_gen7[16] = { >> + [GEN7_DATAPORT_DC_OWORD_BLOCK_READ] = "DC OWORD block read", >> + [GEN7_DATAPORT_DC_UNALIGNED_OWORD_BLOCK_READ] = "DC unaligned OWORD >> block read", >> + [GEN7_DATAPORT_DC_OWORD_DUAL_BLOCK_READ] = "DC OWORD dual block read", >> + [GEN7_DATAPORT_DC_DWORD_SCATTERED_READ] = "DC DWORD scattered read", >> + [GEN7_DATAPORT_DC_BYTE_SCATTERED_READ] = "DC byte scattered read", >> + [GEN7_DATAPORT_DC_UNTYPED_ATOMIC_OP] = "DC untyped atomic", >> + [GEN7_DATAPORT_DC_MEMORY_FENCE] = "DC mfence", >> + [GEN7_DATAPORT_DC_OWORD_BLOCK_WRITE] = "DC OWORD block write", >> + [GEN7_DATAPORT_DC_OWORD_DUAL_BLOCK_WRITE] = "DC OWORD dual block write", >> + [GEN7_DATAPORT_DC_DWORD_SCATTERED_WRITE] = "DC DWORD scatterd write", >> + [GEN7_DATAPORT_DC_BYTE_SCATTERED_WRITE] = "DC byte scattered write", >> + [GEN7_DATAPORT_DC_UNTYPED_SURFACE_WRITE] = "DC untyped surface write", >> +}; >> + >> +static const char *const dp_dc1_msg_type_hsw[16] = { >> + [HSW_DATAPORT_DC_PORT1_UNTYPED_SURFACE_READ] = "untyped surface read", >> + [HSW_DATAPORT_DC_PORT1_UNTYPED_ATOMIC_OP] = "DC untyped atomic op", >> + [HSW_DATAPORT_DC_PORT1_UNTYPED_ATOMIC_OP_SIMD4X2] = "DC untyped 4x2 >> atomic op", >> + [HSW_DATAPORT_DC_PORT1_MEDIA_BLOCK_READ] = "DC media block read", >> + [HSW_DATAPORT_DC_PORT1_TYPED_SURFACE_READ] = "DC typed surface read", >> + [HSW_DATAPORT_DC_PORT1_TYPED_ATOMIC_OP] = "DC typed atomic", >> + [HSW_DATAPORT_DC_PORT1_TYPED_ATOMIC_OP_SIMD4X2] = "DC typed 4x2 atomic >> op", >> + [HSW_DATAPORT_DC_PORT1_UNTYPED_SURFACE_WRITE] = "DC untyped surface >> write", >> + [HSW_DATAPORT_DC_PORT1_MEDIA_BLOCK_WRITE] = "DC media block write", >> + [HSW_DATAPORT_DC_PORT1_ATOMIC_COUNTER_OP] = "DC atomic counter op", >> + [HSW_DATAPORT_DC_PORT1_ATOMIC_COUNTER_OP_SIMD4X2] = "DC 4x2 atomic >> counter op", >> + [HSW_DATAPORT_DC_PORT1_TYPED_SURFACE_WRITE] = "DC typed surface write", >> +}; >> + >> +static const char * const aop[16] = { >> + [BRW_AOP_AND] = "and", >> + [BRW_AOP_OR] = "or", >> + [BRW_AOP_XOR] = "xoo", >> + [BRW_AOP_MOV] = "mov", >> + [BRW_AOP_INC] = "inc", >> + [BRW_AOP_DEC] = "dec", >> + [BRW_AOP_ADD] = "add", >> + [BRW_AOP_SUB] = "sub", >> + [BRW_AOP_REVSUB] = "revsub", >> + [BRW_AOP_IMAX] = "imax", >> + [BRW_AOP_IMIN] = "imin", >> + [BRW_AOP_UMAX] = "umax", >> + [BRW_AOP_UMIN] = "umin", >> + [BRW_AOP_CMPWR] = "cmpwr", >> + [BRW_AOP_PREDEC] = "predec", >> +}; >> + >> static const char * const math_function[16] = { >> [BRW_MATH_FUNCTION_INV] = "inv", >> [BRW_MATH_FUNCTION_LOG] = "log", >> @@ -1312,12 +1364,59 @@ int brw_disasm (FILE *file, struct brw_instruction >> *inst, int gen) >> case BRW_SFID_THREAD_SPAWNER: >> break; >> case GEN7_SFID_DATAPORT_DATA_CACHE: >> - format (file, " (%d, %d, %d)", >> - inst->bits3.gen7_dp.binding_table_index, >> - inst->bits3.gen7_dp.msg_control, >> - inst->bits3.gen7_dp.msg_type); >> - break; >> + if (gen >= 7) { >> + format (file, " ("); >> + >> + err |= control (file, "DP DC0 message type", >> + dp_dc0_msg_type_gen7, >> + inst->bits3.gen7_dp.msg_type, &space); >> + >> + format (file, ", %d, ", >> inst->bits3.gen7_dp.binding_table_index); >> + >> + switch (inst->bits3.gen7_dp.msg_type) { >> + case GEN7_DATAPORT_DC_UNTYPED_ATOMIC_OP: >> + control (file, "atomic op", aop, inst->bits3.ud >> 8 & 0xf, >> + &space); >> + break; >> + default: >> + format (file, "%d", inst->bits3.gen7_dp.msg_control); >> + } >> + format (file, ")"); >> + } else { >> + /* FALLTHROUGH */ >> + } >> + break; >> + >> + case HSW_SFID_DATAPORT_DATA_CACHE_1: >> + if (gen >= 7) { >> + format (file, " ("); >> + >> + err |= control (file, "DP DC1 message type", >> + dp_dc1_msg_type_hsw, >> + inst->bits3.gen7_dp.msg_type, &space); >> >> + format (file, ", %d, ", >> + inst->bits3.gen7_dp.binding_table_index); >> + >> + switch (inst->bits3.gen7_dp.msg_type) { >> + 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: >> + case HSW_DATAPORT_DC_PORT1_ATOMIC_COUNTER_OP_SIMD4X2: >> + control (file, "atomic op", aop, >> + inst->bits3.ud >> 8 & 0xf, &space); >> + break; >> + default: >> + format (file, "%d", inst->bits3.gen7_dp.msg_control); >> + } >> + format (file, ")"); >> + break; >> + } else { >> + /* FALLTHROUGH */ > > This doesn't actually fall through though... did you mean not to have > the break below? (similarly in the other instance of this pattern, > except that one's missing the first break too).
Thanks, the break below was supposed to be dropped.
pgp9Da4kTpBJH.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev