From 0e47ecb29acf8bdd213236d7306c47f8ec0e937f Mon Sep 17 00:00:00 2001 From: Jose Maria Casanova Crespo Date: Mon, 26 Mar 2018 14:59:46 +0200 Subject: [PATCH] intel/compiler: grf127 can not be dest when src and dest overlap in send Implement at brw_eu_validate the restriction from Intel Broadwell PRM, vol 07, section "Instruction Set Reference", subsection "EUISA Instructions", Send Message (page 990): "r127 must not be used for return address when there is a src and dest overlap in send instruction." v2: Style fixes (Matt Turner) Reviewed-by: Matt Turner Cc: 18.1 --- src/intel/compiler/brw_eu_validate.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/intel/compiler/brw_eu_validate.c b/src/intel/compiler/brw_eu_validate.c index d3189d1..29d1fe4 100644 --- a/src/intel/compiler/brw_eu_validate.c +++ b/src/intel/compiler/brw_eu_validate.c @@ -261,6 +261,17 @@ send_restrictions(const struct gen_device_info *devinfo, brw_inst_src0_da_reg_nr(devinfo, inst) < 112, "send with EOT must use g112-g127"); } + + if (devinfo->gen >= 8) { + ERROR_IF(!dst_is_null(devinfo, inst) && + (brw_inst_dst_da_reg_nr(devinfo, inst) + + brw_inst_rlen(devinfo, inst) > 127) && + (brw_inst_src0_da_reg_nr(devinfo, inst) + + brw_inst_mlen(devinfo, inst) > + brw_inst_dst_da_reg_nr(devinfo, inst)), + "r127 must not be used for return address when there is " + "a src and dest overlap"); + } } return error_msg; -- 2.7.4