i965: Don't print source registers for Broadwell flow control.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 5 Feb 2014 09:32:39 +0000 (01:32 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 8 Feb 2014 03:37:34 +0000 (19:37 -0800)
The bits which normally contain the source register descriptions
actually contain the JIP/UIP jump targets, which we already printed.

Interpreting JIP/UIP as source registers results in some really creepy
looking output, like IF statements with acc14.4<0,1,0>UD sources.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/gen8_disasm.c

index 387bb712f07f037e658776f0827b0f9a147df065..b2ab4486e7da822768677a3eee2a6e282499a185 100644 (file)
@@ -828,10 +828,7 @@ gen8_disassemble(FILE *file, struct gen8_instruction *inst, int gen)
       pad(file, 64);
       err |= src2_3src(file, inst);
    } else {
-      if (m_opcode[opcode].ndst > 0) {
-         pad(file, 16);
-         err |= dest(file, inst);
-      } else if (opcode == BRW_OPCODE_ENDIF) {
+      if (opcode == BRW_OPCODE_ENDIF) {
          format(file, " %d", gen8_jip(inst));
       } else if (opcode == BRW_OPCODE_IF ||
                  opcode == BRW_OPCODE_ELSE ||
@@ -840,15 +837,19 @@ gen8_disassemble(FILE *file, struct gen8_instruction *inst, int gen)
                  opcode == BRW_OPCODE_CONTINUE ||
                  opcode == BRW_OPCODE_HALT) {
          format(file, " %d %d", gen8_jip(inst), gen8_uip(inst));
-      }
-
-      if (m_opcode[opcode].nsrc > 0) {
-         pad(file, 32);
-         err |= src0(file, inst);
-      }
-      if (m_opcode[opcode].nsrc > 1) {
-         pad(file, 48);
-         err |= src1(file, inst);
+      } else {
+         if (m_opcode[opcode].ndst > 0) {
+            pad(file, 16);
+            err |= dest(file, inst);
+         }
+         if (m_opcode[opcode].nsrc > 0) {
+            pad(file, 32);
+            err |= src0(file, inst);
+         }
+         if (m_opcode[opcode].nsrc > 1) {
+            pad(file, 48);
+            err |= src1(file, inst);
+         }
       }
    }