[Mesa-dev] [PATCH] i965/fs: Correct mistake in determining whether a MUL is negated.

Ian Romanick idr at freedesktop.org
Mon Apr 13 14:36:04 PDT 2015


On 04/13/2015 01:11 PM, Matt Turner wrote:
> 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
> ---
>  src/mesa/drivers/dri/i965/brw_fs_cse.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> index f2c4098..c1d0616 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> @@ -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);

Any idea whether adding support for the double negation to the regular
operands_match path helps anything?  When I tried it at the GLSL IR
level it didn't make any difference.

If you didn't already push this patch,

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

>        return ret;
>     } else if (!a->is_commutative()) {
>        bool match = true;
> 



More information about the mesa-dev mailing list