i965/fs: Restrict inequality that can only hold equal in saturate propagation.
authorFrancisco Jerez <currojerez@riseup.net>
Mon, 7 Mar 2016 03:03:56 +0000 (19:03 -0800)
committerFrancisco Jerez <currojerez@riseup.net>
Mon, 14 Mar 2016 21:58:19 +0000 (14:58 -0700)
Should have no functional change.  The IP value of an instruction that
reads src_var cannot possibly be after the end of the live interval of
the variable it's reading from, by the definition of live interval.
Might save future readers a momentary WTF while trying to understand
this code.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp

index dc2b0c8..f59fdbd 100644 (file)
@@ -73,7 +73,7 @@ opt_saturate_propagation_local(fs_visitor *v, bblock_t *block)
             if (scan_inst->saturate) {
                inst->saturate = false;
                progress = true;
-            } else if (src_end_ip <= ip || inst->dst.equals(inst->src[0])) {
+            } else if (src_end_ip == ip || inst->dst.equals(inst->src[0])) {
                if (scan_inst->can_do_saturate()) {
                   if (scan_inst->dst.type != inst->dst.type) {
                      scan_inst->dst.type = inst->dst.type;