i965/vec4: Compare full register offsets in cmod propagation.
authorFrancisco Jerez <currojerez@riseup.net>
Fri, 2 Sep 2016 05:26:59 +0000 (22:26 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 14 Sep 2016 21:50:58 +0000 (14:50 -0700)
Cmod propagation would misoptimize the program if the destination
offset of the generating instruction wasn't exactly the same as the
source region offset of the copy instruction.  In preparation for
adding support for sub-GRF offsets to the VEC4 IR.

Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
src/mesa/drivers/dri/i965/brw_vec4_cmod_propagation.cpp

index 99773177cdb9c6dc96b553740df9bc7c033b5064..c531fba03123d15981e9ac24559db5d77fa26668 100644 (file)
@@ -71,7 +71,7 @@ opt_cmod_propagation_local(bblock_t *block)
          if (regions_overlap(inst->src[0], inst->size_read(0),
                              scan_inst->dst, scan_inst->size_written)) {
             if ((scan_inst->predicate && scan_inst->opcode != BRW_OPCODE_SEL) ||
-                scan_inst->dst.offset / REG_SIZE != inst->src[0].offset / REG_SIZE ||
+                scan_inst->dst.offset != inst->src[0].offset ||
                 (scan_inst->dst.writemask != WRITEMASK_X &&
                  scan_inst->dst.writemask != WRITEMASK_XYZW) ||
                 (scan_inst->dst.writemask == WRITEMASK_XYZW &&