i965: Disable try_emit_b2f_of_compare on Gen4-6.
authorKenneth Graunke <kenneth@whitecape.org>
Sat, 16 Aug 2014 22:18:21 +0000 (15:18 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 22 Aug 2014 18:40:32 +0000 (11:40 -0700)
commit97d03b9366bfa55b27feb92aa5afacd9c5f6f421
tree9c2d4c79967f37c20803094cf8bff27c5c72c30b
parentb8aa1005c82ff732f714cd0dcca39775aa368dd7
i965: Disable try_emit_b2f_of_compare on Gen4-6.

The optimization relies on CMP setting the destination to 0, which is
equivalent to 0.0f.  However, early platforms only set the least
significant byte, leaving the other bits undefined.  So, we must disable
the optimization on those platforms.

Oddly, Sandybridge wasn't reported as broken.  The PRM states that it
only sets the LSB, but the internal documentation says that it follows
the IVB behavior.  Since it wasn't reported as broken, we believe it
really does follow the IVB behavior.

v2: Allow the optimization on Sandybridge (requested by Matt).

+32 piglits on Ironlake.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?=79963
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp