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