Mesa (main): intel/eu: Start validating LSC message descriptors
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jul 16 17:37:47 UTC 2021
Module: Mesa
Branch: main
Commit: a62973580b7846f2213cbd2589e9473c26596683
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a62973580b7846f2213cbd2589e9473c26596683
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Wed Jun 30 10:27:27 2021 -0500
intel/eu: Start validating LSC message descriptors
This is certainly not a full validation but it at least gets the
framework in place and validates one hard-to-find restriction.
Reviewed-by: Sagar Ghuge <sagar.ghuge at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11657>
---
src/intel/compiler/brw_eu_validate.c | 39 ++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/src/intel/compiler/brw_eu_validate.c b/src/intel/compiler/brw_eu_validate.c
index 2cbeaf3ec52..fe4c9b29443 100644
--- a/src/intel/compiler/brw_eu_validate.c
+++ b/src/intel/compiler/brw_eu_validate.c
@@ -2028,6 +2028,44 @@ instruction_restrictions(const struct intel_device_info *devinfo,
return error_msg;
}
+static struct string
+send_descriptor_restrictions(const struct intel_device_info *devinfo,
+ const brw_inst *inst)
+{
+ struct string error_msg = { .str = NULL, .len = 0 };
+
+ if (inst_is_split_send(devinfo, inst)) {
+ /* We can only validate immediate descriptors */
+ if (brw_inst_send_sel_reg32_desc(devinfo, inst))
+ return error_msg;
+ } else if (inst_is_send(devinfo, inst)) {
+ /* We can only validate immediate descriptors */
+ if (brw_inst_src1_reg_file(devinfo, inst) != BRW_IMMEDIATE_VALUE)
+ return error_msg;
+ } else {
+ return error_msg;
+ }
+
+ const uint32_t desc = brw_inst_send_desc(devinfo, inst);
+
+ switch (brw_inst_sfid(devinfo, inst)) {
+ case GFX12_SFID_TGM:
+ case GFX12_SFID_SLM:
+ case GFX12_SFID_UGM:
+ ERROR_IF(!devinfo->has_lsc, "Platform does not support LSC");
+
+ ERROR_IF(lsc_msg_desc_transpose(devinfo, desc) &&
+ brw_inst_exec_size(devinfo, inst) != BRW_EXECUTE_1,
+ "Transposed vectors are restricted to Exec_Mask = 1.");
+ break;
+
+ default:
+ break;
+ }
+
+ return error_msg;
+}
+
bool
brw_validate_instruction(const struct intel_device_info *devinfo,
const brw_inst *inst, int offset,
@@ -2051,6 +2089,7 @@ brw_validate_instruction(const struct intel_device_info *devinfo,
CHECK(vector_immediate_restrictions);
CHECK(special_requirements_for_handling_double_precision_data_types);
CHECK(instruction_restrictions);
+ CHECK(send_descriptor_restrictions);
}
}
More information about the mesa-commit
mailing list