i965/disasm: Actually disassemble Gen7+ URB opcodes.
I never bothered implementing the disassembler for Gen7+ URB opcodes, so we were just disassembling them as Ironlake/Sandybridge ones. This looked pretty bad when running Paul's GS EndPrimitive tests, as the "write OWord" message was decoded at ff_sync, which doesn't exist. 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
aa9e23dbe8
commit
eb3185f686
|
@ -478,11 +478,24 @@ static const char *const math_precision[2] = {
|
|||
[1] = "partial_precision"
|
||||
};
|
||||
|
||||
static const char *const urb_opcode[2] = {
|
||||
static const char *const gen5_urb_opcode[] = {
|
||||
[0] = "urb_write",
|
||||
[1] = "ff_sync",
|
||||
};
|
||||
|
||||
static const char *const gen7_urb_opcode[] = {
|
||||
[0] = "write HWord",
|
||||
[1] = "write OWord",
|
||||
[2] = "read HWord",
|
||||
[3] = "read OWord",
|
||||
[4] = "atomic mov", /* Gen7+ */
|
||||
[5] = "atomic inc", /* Gen7+ */
|
||||
[6] = "atomic add", /* Gen8+ */
|
||||
[7] = "SIMD8 write", /* Gen8+ */
|
||||
[8] = "SIMD8 read", /* Gen8+ */
|
||||
/* [9-15] - reserved */
|
||||
};
|
||||
|
||||
static const char *const urb_swizzle[4] = {
|
||||
[BRW_URB_SWIZZLE_NONE] = "",
|
||||
[BRW_URB_SWIZZLE_INTERLEAVE] = "interleave",
|
||||
|
@ -1361,8 +1374,11 @@ brw_disassemble_inst(FILE *file, struct brw_context *brw, brw_inst *inst,
|
|||
format(file, " %d", brw_inst_urb_global_offset(brw, inst));
|
||||
|
||||
space = 1;
|
||||
if (brw->gen >= 5) {
|
||||
err |= control(file, "urb opcode", urb_opcode,
|
||||
if (brw->gen >= 7) {
|
||||
err |= control(file, "urb opcode", gen7_urb_opcode,
|
||||
brw_inst_urb_opcode(brw, inst), &space);
|
||||
} else if (brw->gen >= 5) {
|
||||
err |= control(file, "urb opcode", gen5_urb_opcode,
|
||||
brw_inst_urb_opcode(brw, inst), &space);
|
||||
}
|
||||
err |= control(file, "urb swizzle", urb_swizzle,
|
||||
|
|
Loading…
Reference in New Issue