i965: Fix disassembly of jump targets on Gen7.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 12 Dec 2012 10:37:58 +0000 (02:37 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 13 Dec 2012 06:19:08 +0000 (22:19 -0800)
Gen7 stores the JIP/UIP bits in different places.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_disasm.c

index ef88edd..6dd1736 100644 (file)
@@ -1112,14 +1112,19 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen)
        if (opcode[inst->header.opcode].ndst > 0) {
          pad (file, 16);
          err |= dest (file, inst);
-       } else if (gen >= 6 && (inst->header.opcode == BRW_OPCODE_IF ||
+       } else if (gen == 7 && (inst->header.opcode == BRW_OPCODE_ELSE ||
+                              inst->header.opcode == BRW_OPCODE_ENDIF ||
+                              inst->header.opcode == BRW_OPCODE_WHILE)) {
+         format (file, " %d", inst->bits3.break_cont.jip);
+       } else if (gen == 6 && (inst->header.opcode == BRW_OPCODE_IF ||
                               inst->header.opcode == BRW_OPCODE_ELSE ||
                               inst->header.opcode == BRW_OPCODE_ENDIF ||
                               inst->header.opcode == BRW_OPCODE_WHILE)) {
          format (file, " %d", inst->bits1.branch_gen6.jump_count);
-       } else if (gen >= 6 && (inst->header.opcode == BRW_OPCODE_BREAK ||
-                              inst->header.opcode == BRW_OPCODE_CONTINUE ||
-                              inst->header.opcode == BRW_OPCODE_HALT)) {
+       } else if ((gen >= 6 && (inst->header.opcode == BRW_OPCODE_BREAK ||
+                                inst->header.opcode == BRW_OPCODE_CONTINUE ||
+                                inst->header.opcode == BRW_OPCODE_HALT)) ||
+                  (gen == 7 && inst->header.opcode == BRW_OPCODE_IF)) {
          format (file, " %d %d", inst->bits3.break_cont.uip, inst->bits3.break_cont.jip);
        } else if (inst->header.opcode == BRW_OPCODE_JMPI) {
          format (file, " %d", inst->bits3.d);