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

Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11991>
This commit is contained in:
Jason Ekstrand 2021-07-20 18:44:15 -05:00 committed by Marge Bot
parent 1087cf680a
commit 929558776e
2 changed files with 10 additions and 1 deletions

View File

@ -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) |

View File

@ -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;