[Mesa-dev] [PATCH 02/10] i965/disasm: Instruction options field placement in shader disassembly

Toni Lönnberg toni.lonnberg at intel.com
Mon Feb 20 13:27:42 UTC 2017


From: "Lonnberg, Toni" <toni.lonnberg at intel.com>

The instruction options are now output in front of the decoded descriptor
information of SEND/SENDC instructions.
---
 src/mesa/drivers/dri/i965/brw_disasm.c | 99 +++++++++++++++++-----------------
 1 file changed, 50 insertions(+), 49 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c b/src/mesa/drivers/dri/i965/brw_disasm.c
index 89d743e..bcbdf49 100644
--- a/src/mesa/drivers/dri/i965/brw_disasm.c
+++ b/src/mesa/drivers/dri/i965/brw_disasm.c
@@ -1393,6 +1393,56 @@ brw_disassemble_inst(FILE *file, const struct gen_device_info *devinfo,
       }
    }
 
+   pad(file, 64);
+   if (opcode != BRW_OPCODE_NOP && opcode != BRW_OPCODE_NENOP) {
+      string(file, "{");
+      space = 1;
+      err |= control(file, "access mode", access_mode,
+                     brw_inst_access_mode(devinfo, inst), &space);
+      if (devinfo->gen >= 6) {
+         err |= control(file, "write enable control", wectrl,
+                        brw_inst_mask_control(devinfo, inst), &space);
+      } else {
+         err |= control(file, "mask control", mask_ctrl,
+                        brw_inst_mask_control(devinfo, inst), &space);
+      }
+      err |= control(file, "dependency control", dep_ctrl,
+                     ((brw_inst_no_dd_check(devinfo, inst) << 1) |
+                      brw_inst_no_dd_clear(devinfo, inst)), &space);
+
+      if (devinfo->gen >= 6)
+         err |= qtr_ctrl(file, devinfo, inst);
+      else {
+         if (brw_inst_qtr_control(devinfo, inst) == BRW_COMPRESSION_COMPRESSED &&
+             desc && desc->ndst > 0 &&
+             brw_inst_dst_reg_file(devinfo, inst) == BRW_MESSAGE_REGISTER_FILE &&
+             brw_inst_dst_da_reg_nr(devinfo, inst) & BRW_MRF_COMPR4) {
+            format(file, " compr4");
+         } else {
+            err |= control(file, "compression control", compr_ctrl,
+                           brw_inst_qtr_control(devinfo, inst), &space);
+         }
+      }
+
+      err |= control(file, "compaction", cmpt_ctrl, is_compacted, &space);
+      err |= control(file, "thread control", thread_ctrl,
+                     brw_inst_thread_control(devinfo, inst), &space);
+      if (has_branch_ctrl(devinfo, opcode)) {
+         err |= control(file, "branch ctrl", branch_ctrl,
+                        brw_inst_branch_control(devinfo, inst), &space);
+      } else if (devinfo->gen >= 6) {
+         err |= control(file, "acc write control", accwr,
+                        brw_inst_acc_wr_control(devinfo, inst), &space);
+      }
+      if (opcode == BRW_OPCODE_SEND || opcode == BRW_OPCODE_SENDC)
+         err |= control(file, "end of thread", end_of_thread,
+                        brw_inst_eot(devinfo, inst), &space);
+      if (space)
+         string(file, " ");
+      string(file, "}");
+   }
+   string(file, ";");
+
    if (opcode == BRW_OPCODE_SEND || opcode == BRW_OPCODE_SENDC) {
       enum brw_message_target sfid = brw_inst_sfid(devinfo, inst);
 
@@ -1629,55 +1679,6 @@ brw_disassemble_inst(FILE *file, const struct gen_device_info *devinfo,
          format(file, " rlen %"PRIu64, brw_inst_rlen(devinfo, inst));
       }
    }
-   pad(file, 64);
-   if (opcode != BRW_OPCODE_NOP && opcode != BRW_OPCODE_NENOP) {
-      string(file, "{");
-      space = 1;
-      err |= control(file, "access mode", access_mode,
-                     brw_inst_access_mode(devinfo, inst), &space);
-      if (devinfo->gen >= 6) {
-         err |= control(file, "write enable control", wectrl,
-                        brw_inst_mask_control(devinfo, inst), &space);
-      } else {
-         err |= control(file, "mask control", mask_ctrl,
-                        brw_inst_mask_control(devinfo, inst), &space);
-      }
-      err |= control(file, "dependency control", dep_ctrl,
-                     ((brw_inst_no_dd_check(devinfo, inst) << 1) |
-                      brw_inst_no_dd_clear(devinfo, inst)), &space);
-
-      if (devinfo->gen >= 6)
-         err |= qtr_ctrl(file, devinfo, inst);
-      else {
-         if (brw_inst_qtr_control(devinfo, inst) == BRW_COMPRESSION_COMPRESSED &&
-             desc && desc->ndst > 0 &&
-             brw_inst_dst_reg_file(devinfo, inst) == BRW_MESSAGE_REGISTER_FILE &&
-             brw_inst_dst_da_reg_nr(devinfo, inst) & BRW_MRF_COMPR4) {
-            format(file, " compr4");
-         } else {
-            err |= control(file, "compression control", compr_ctrl,
-                           brw_inst_qtr_control(devinfo, inst), &space);
-         }
-      }
-
-      err |= control(file, "compaction", cmpt_ctrl, is_compacted, &space);
-      err |= control(file, "thread control", thread_ctrl,
-                     brw_inst_thread_control(devinfo, inst), &space);
-      if (has_branch_ctrl(devinfo, opcode)) {
-         err |= control(file, "branch ctrl", branch_ctrl,
-                        brw_inst_branch_control(devinfo, inst), &space);
-      } else if (devinfo->gen >= 6) {
-         err |= control(file, "acc write control", accwr,
-                        brw_inst_acc_wr_control(devinfo, inst), &space);
-      }
-      if (opcode == BRW_OPCODE_SEND || opcode == BRW_OPCODE_SENDC)
-         err |= control(file, "end of thread", end_of_thread,
-                        brw_inst_eot(devinfo, inst), &space);
-      if (space)
-         string(file, " ");
-      string(file, "}");
-   }
-   string(file, ";");
    newline(file);
    return err;
 }
-- 
2.7.4



More information about the mesa-dev mailing list