[Mesa-dev] [PATCH 1/2] nir: Optimize (a*b)+(a*c) -> a*(b+c)

Matt Turner mattst88 at gmail.com
Sat Feb 28 11:43:25 PST 2015


On Sat, Feb 28, 2015 at 11:32 AM, Thomas Helland
<thomashelland90 at gmail.com> wrote:
> Shader-db i965 instructions:
> total instructions in shared programs: 1715894 -> 1710802 (-0.30%)
> instructions in affected programs:     443080 -> 437988 (-1.15%)
> helped:                                1502
> HURT:                                  13
> GAINED:                                4
> LOST:                                  4
>
> Shader-db NIR instructions:
> total instructions in shared programs: 607710 -> 606187 (-0.25%)
> instructions in affected programs:     208285 -> 206762 (-0.73%)
> helped:                                769
> HURT:                                  8
> GAINED:                                0
> LOST:                                  0
>
> Signed-off-by: Thomas Helland <thomashelland90 at gmail.com>
> ---
>  src/glsl/nir/nir_opt_algebraic.py | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/src/glsl/nir/nir_opt_algebraic.py b/src/glsl/nir/nir_opt_algebraic.py
> index 7bf6431..688ceff 100644
> --- a/src/glsl/nir/nir_opt_algebraic.py
> +++ b/src/glsl/nir/nir_opt_algebraic.py
> @@ -56,6 +56,8 @@ optimizations = [
>     (('iabs', ('ineg', a)), ('iabs', a)),
>     (('fadd', a, 0.0), a),
>     (('iadd', a, 0), a),
> +   (('fadd', ('fmul', a, b), ('fmul', a, c)), ('fmul', a, ('fadd', b, c))),

Neither of the optimizations added in these two patches are safe for
floating-point values, strictly speaking.

I think we're probably okay with that though, at least for now.

Both are

Reviewed-by: Matt Turner <mattst88 at gmail.com>


More information about the mesa-dev mailing list