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:
parent
1087cf680a
commit
929558776e
|
@ -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) |
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue