<p dir="ltr">Reviewed-by: Chris Forbes <<a href="mailto:chrisf@ijw.co.nz">chrisf@ijw.co.nz</a>></p>
<div class="gmail_quote">On Aug 17, 2014 10:14 AM, "Kenneth Graunke" <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
The optimization relies on CMP setting the destination to 0, which is<br>
equivalent to 0.0f.  However, early platforms only set the least<br>
significant byte, leaving the other bits undefined.  So, we must disable<br>
the optimization on those platforms.<br>
<br>
Oddly, Sandybridge wasn't reported as broken, even though it's<br>
documented to only set the LSB.  It's unclear whether it follows ILK on<br>
IVB behavior.<br>
<br>
+32 piglits on Ironlake.<br>
<br>
Bugzilla: <a href="https://bugs.freedesktop.org/show_bug.cgi?=79963" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?=79963</a><br>
Signed-off-by: Kenneth Graunke <<a href="mailto:kenneth@whitecape.org">kenneth@whitecape.org</a>><br>
---<br>
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp | 7 +++++++<br>
 1 file changed, 7 insertions(+)<br>
<br>
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp<br>
index f22d38d..33cb9a9 100644<br>
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp<br>
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp<br>
@@ -1135,6 +1135,13 @@ vec4_visitor::try_emit_mad(ir_expression *ir)<br>
 bool<br>
 vec4_visitor::try_emit_b2f_of_compare(ir_expression *ir)<br>
 {<br>
+   /* This optimization relies on CMP setting the destination to 0 when<br>
+    * false.  Early hardware only sets the least significant bit, and<br>
+    * leaves the other bits undefined.  So we can't use it.<br>
+    */<br>
+   if (brw->gen < 7)<br>
+      return false;<br>
+<br>
    ir_expression *const cmp = ir->operands[0]->as_expression();<br>
<br>
    if (cmp == NULL)<br>
--<br>
1.9.2<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev" target="_blank">http://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>