i965/fs: Correct mistake in determining whether a MUL is negated.
authorMatt Turner <mattst88@gmail.com>
Mon, 13 Apr 2015 18:29:14 +0000 (11:29 -0700)
committerMatt Turner <mattst88@gmail.com>
Tue, 14 Apr 2015 19:16:03 +0000 (12:16 -0700)
a * b is equivalent to -a * -b, and the previous code was failing at
that.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89961
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/i965/brw_fs_cse.cpp

index f2c40986683ea37a9a503756c34a6cd3ddfcef1c..c1d06161cbf1311a0a006f76e8e2b5fb43d93dd7 100644 (file)
@@ -145,7 +145,7 @@ operands_match(const fs_inst *a, const fs_inst *b, bool *negate)
       xs[1].fixed_hw_reg.dw1.f = xs1_imm;
       ys[1].fixed_hw_reg.dw1.f = ys1_imm;
 
-      *negate = (xs0_negate + xs1_negate) != (ys0_negate + ys1_negate);
+      *negate = (xs0_negate != xs1_negate) != (ys0_negate != ys1_negate);
       return ret;
    } else if (!a->is_commutative()) {
       bool match = true;