i965/vec4/dce: improve track of partial flag register writes
authorSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Fri, 17 Mar 2017 10:57:25 +0000 (11:57 +0100)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 14 Apr 2017 21:56:09 +0000 (14:56 -0700)
commitd8441e2276912d353d4fc6c0cf6b781ab5153ee7
tree9cc4f80dccc91cae3261b4d6ca918e18f3455e58
parentc1fc8fad47f60bda857fc45c4052c5f4effe0d84
i965/vec4/dce: improve track of partial flag register writes

This is required for correctness in presence of multiple 4-wide flag
writes (e.g. 4-wide instructions with a conditional mod set) which
update a different portion of the same 8-bit flag subregister.

Right now we keep track of flag dataflow with 8-bit granularity and
consider flag writes to have killed any previous definition of the
same subregister even if the write was less than 8 channels wide,
which can cause live flag register updates to be dead
code-eliminated incorrectly.

Signed-off-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/intel/compiler/brw_vec4_dead_code_eliminate.cpp