Mesa (main): intel/eu: Don't validate LSC transpose on ops that don't have it

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Jul 22 21:16:53 UTC 2021


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Tue Jul 20 18:44:15 2021 -0500

intel/eu: Don't validate LSC transpose on ops that don't have it

Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11991>

---

 src/intel/compiler/brw_eu.h          | 8 ++++++++
 src/intel/compiler/brw_eu_validate.c | 3 ++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/intel/compiler/brw_eu.h b/src/intel/compiler/brw_eu.h
index 1057486945b..fd1602f7321 100644
--- a/src/intel/compiler/brw_eu.h
+++ b/src/intel/compiler/brw_eu.h
@@ -1168,6 +1168,12 @@ lsc_opcode_has_cmask(enum lsc_opcode opcode)
    return opcode == LSC_OP_LOAD_CMASK || opcode == LSC_OP_STORE_CMASK;
 }
 
+static inline bool
+lsc_opcode_has_transpose(enum lsc_opcode opcode)
+{
+   return opcode == LSC_OP_LOAD || opcode == LSC_OP_STORE;
+}
+
 static inline uint32_t
 lsc_data_size_bytes(enum lsc_data_size data_size)
 {
@@ -1252,6 +1258,8 @@ lsc_msg_desc(UNUSED const struct intel_device_info *devinfo,
       DIV_ROUND_UP(lsc_addr_size_bytes(addr_sz) * num_coordinates * simd_size,
                    REG_SIZE);
 
+   assert(!transpose || lsc_opcode_has_transpose(opcode));
+
    unsigned msg_desc =
       SET_BITS(opcode, 5, 0) |
       SET_BITS(addr_sz, 8, 7) |
diff --git a/src/intel/compiler/brw_eu_validate.c b/src/intel/compiler/brw_eu_validate.c
index fe4c9b29443..ab2db720fa4 100644
--- a/src/intel/compiler/brw_eu_validate.c
+++ b/src/intel/compiler/brw_eu_validate.c
@@ -2054,7 +2054,8 @@ send_descriptor_restrictions(const struct intel_device_info *devinfo,
    case GFX12_SFID_UGM:
       ERROR_IF(!devinfo->has_lsc, "Platform does not support LSC");
 
-      ERROR_IF(lsc_msg_desc_transpose(devinfo, desc) &&
+      ERROR_IF(lsc_opcode_has_transpose(lsc_msg_desc_opcode(devinfo, desc)) &&
+               lsc_msg_desc_transpose(devinfo, desc) &&
                brw_inst_exec_size(devinfo, inst) != BRW_EXECUTE_1,
                "Transposed vectors are restricted to Exec_Mask = 1.");
       break;



More information about the mesa-commit mailing list