i965/fs: Consider predicated SEL instructions as whole variable writes.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 5 Aug 2013 23:24:43 +0000 (16:24 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 12 Aug 2013 20:12:59 +0000 (13:12 -0700)
commit2c32c3985ca6232a81d21feb9ac6443145b42d0e
tree4fd79bb99d5d9f667fa711592889e07bd64e4a97
parentd21f542aa1f8305ae9d149d97f987c81d2a81bca
i965/fs: Consider predicated SEL instructions as whole variable writes.

The instruction

   (+f0.0) SEL dst, src0, src1

will write either src0 or src1 to dst, depending on the predicate.
Unlike most predicated instructions, it always writes to dst.

fs_inst::is_partial_write() is supposed to return true if the whole
register is guaranteed to be written.  The !inst->predicated check makes
sense for most instructions, which might not write the whole register,
but SEL is a special case.

This caused live interval analysis to ignore the destination of
predicated SEL instructions when computing "def" information.

Requires the previous commit to avoid regressions.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_fs.cpp