[Mesa-dev] [PATCH 22/57] i965/fs: Fix can_propagate_from() source/destination overlap check.

Francisco Jerez currojerez at riseup.net
Thu Sep 8 01:48:49 UTC 2016


The previous overlap condition only made sure that the VGRF numbers or
GRF-aligned offsets were different without taking the amount of data
written and read by the instruction into consideration.  Use the
regions_overlap() helper instead.
---
 src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
index f8238aa..4a56aff 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
@@ -739,8 +739,8 @@ can_propagate_from(fs_inst *inst)
    return (inst->opcode == BRW_OPCODE_MOV &&
            inst->dst.file == VGRF &&
            ((inst->src[0].file == VGRF &&
-             (inst->src[0].nr != inst->dst.nr ||
-              inst->src[0].offset / REG_SIZE != inst->dst.offset / REG_SIZE)) ||
+             !regions_overlap(inst->dst, inst->size_written,
+                              inst->src[0], inst->size_read(0))) ||
             inst->src[0].file == ATTR ||
             inst->src[0].file == UNIFORM ||
             inst->src[0].file == IMM) &&
-- 
2.9.0



More information about the mesa-dev mailing list