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.peleshko@globallogic.com>
Reviewed-by: Sagar Ghuge <sagar.ghuge@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25657>
This commit is contained in:
Sviatoslav Peleshko
2023-10-11 11:32:28 +03:00
committed by Marge Bot
parent b5c0b90402
commit 173a991405
+12 -2
View File
@@ -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 {