i965/vec4: Fix copy propagation for non-register-aligned regions.
authorFrancisco Jerez <currojerez@riseup.net>
Fri, 2 Sep 2016 05:31:43 +0000 (22:31 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Wed, 14 Sep 2016 21:50:59 +0000 (14:50 -0700)
commit8531f943d9aac13489a02e5a5b4bfa381c465a44
tree078fdbcf4bb80eaa6922a69e02066d4f43e8f0e6
parent0e657b7b55bc7c83c8eb5258cd9522b0e5e581b7
i965/vec4: Fix copy propagation for non-register-aligned regions.

This prevents it from trying to propagate a copy through a
register-misaligned region.  MOV instructions with a misaligned
destination shouldn't be treated as a direct GRF copy, because they
only define the destination GRFs partially.  Also fix the interference
check implemented with is_channel_updated() to consider overlapping
regions with different register offset to interfere, since the
writemask check implemented in the function is only valid under the
assumption that the source and destination regions are aligned
component by component.

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