[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