Module: Mesa
Branch: main
Commit: 173a991405bd1cf258a0f569c56b6c3070d033db
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=173a991405bd1cf258a0f569c56b6c3070d033db

Author: Sviatoslav Peleshko <sviatoslav.peles...@globallogic.com>
Date:   Wed Oct 11 11:32:28 2023 +0300

intel/disasm: Print src1_len correctly depending on ExDesc type

There are two "Src1.Length" with different formats in "send" description
in the PRMs. One is part of ExMsgDesc, is relevant for LSC SFIDs, and
exists if [ExDesc.IsReg]==false. The other is just a 5-bit immediate,
is relevant for other SFIDs too, and exists if ([ExDesc.IsReg]==true)
AND ([ExBSO]==true).

Signed-off-by: Sviatoslav Peleshko <sviatoslav.peles...@globallogic.com>
Reviewed-by: Sagar Ghuge <sagar.gh...@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25657>

---

 src/intel/compiler/brw_disasm.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/intel/compiler/brw_disasm.c b/src/intel/compiler/brw_disasm.c
index 02a43817aa9..d8c0e97c967 100644
--- a/src/intel/compiler/brw_disasm.c
+++ b/src/intel/compiler/brw_disasm.c
@@ -2537,7 +2537,11 @@ brw_disassemble_inst(FILE *file, const struct 
brw_isa_info *isa,
             }
             format(file, " dst_len = %u,", lsc_msg_desc_dest_len(devinfo, 
imm_desc));
             format(file, " src0_len = %u,", lsc_msg_desc_src0_len(devinfo, 
imm_desc));
-            format(file, " src1_len = %d", 
brw_message_ex_desc_ex_mlen(devinfo, imm_ex_desc));
+
+            if (!brw_inst_send_sel_reg32_ex_desc(devinfo, inst))
+               format(file, " src1_len = %d",
+                      brw_message_ex_desc_ex_mlen(devinfo, imm_ex_desc));
+
             err |= control(file, "address_type", lsc_addr_surface_type,
                            lsc_msg_desc_addr_type(devinfo, imm_desc), &space);
             format(file, " )");
@@ -2672,8 +2676,14 @@ brw_disassemble_inst(FILE *file, const struct 
brw_isa_info *isa,
          if (space)
             string(file, " ");
       }
-      if (devinfo->verx10 >= 125 && brw_inst_send_ex_bso(devinfo, inst))
+      if (devinfo->verx10 >= 125 &&
+          brw_inst_send_sel_reg32_ex_desc(devinfo, inst) &&
+          brw_inst_send_ex_bso(devinfo, inst)) {
+         format(file, " src1_len = %u",
+                (unsigned) brw_inst_send_src1_len(devinfo, inst));
+
          format(file, " ex_bso");
+      }
       if (brw_sfid_is_lsc(sfid)) {
             lsc_disassemble_ex_desc(devinfo, imm_desc, imm_ex_desc, file);
       } else {

Reply via email to