[Mesa-dev] [PATCH] nir: add min/max optimisation

Jason Ekstrand jason at jlekstrand.net
Fri Jan 20 20:37:36 UTC 2017


On Wed, Jan 18, 2017 at 8:27 AM, Jason Ekstrand <jason at jlekstrand.net>
wrote:

> Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
>
>
pushed.


> On Jan 18, 2017 3:23 AM, "Elie Tournier" <tournier.elie at gmail.com> wrote:
>
> Add the following optimisations:
>
> min(x, -x) = -abs(x)
> min(x, -abs(x)) = -abs(x)
> min(x, abs(x)) = x
> max(x, -abs(x)) = x
> max(x, abs(x)) = abs(x)
> max(x, -x) = abs(x)
>
> shader-db:
>
> total instructions in shared programs: 13067779 -> 13067775 (-0.00%)
> instructions in affected programs: 249 -> 245 (-1.61%)
> helped: 4
> HURT: 0
>
> total cycles in shared programs: 252054838 -> 252054806 (-0.00%)
> cycles in affected programs: 504 -> 472 (-6.35%)
> helped: 2
> HURT: 0
>
> Signed-off-by: Elie Tournier <tournier.elie at gmail.com>
> ---
>  src/compiler/nir/nir_opt_algebraic.py | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/src/compiler/nir/nir_opt_algebraic.py
> b/src/compiler/nir/nir_opt_algebraic.py
> index a557f7bf37..0dfa53fbf4 100644
> --- a/src/compiler/nir/nir_opt_algebraic.py
> +++ b/src/compiler/nir/nir_opt_algebraic.py
> @@ -171,6 +171,18 @@ optimizations = [
>     (('imax', a, a), a),
>     (('umin', a, a), a),
>     (('umax', a, a), a),
> +   (('fmin', a, ('fneg', a)), ('fneg', ('fabs', a))),
> +   (('imin', a, ('ineg', a)), ('ineg', ('iabs', a))),
> +   (('fmin', a, ('fneg', ('fabs', a))), ('fneg', ('fabs', a))),
> +   (('imin', a, ('ineg', ('iabs', a))), ('ineg', ('iabs', a))),
> +   (('fmin', a, ('fabs', a)), a),
> +   (('imin', a, ('iabs', a)), a),
> +   (('fmax', a, ('fneg', ('fabs', a))), a),
> +   (('imax', a, ('ineg', ('iabs', a))), a),
> +   (('fmax', a, ('fabs', a)), ('fabs', a)),
> +   (('imax', a, ('iabs', a)), ('iabs', a)),
> +   (('fmax', a, ('fneg', a)), ('fabs', a)),
> +   (('imax', a, ('ineg', a)), ('iabs', a)),
>     (('~fmin', ('fmax', a, 0.0), 1.0), ('fsat', a),
> '!options->lower_fsat'),
>     (('~fmax', ('fmin', a, 1.0), 0.0), ('fsat', a),
> '!options->lower_fsat'),
>     (('fsat', a), ('fmin', ('fmax', a, 0.0), 1.0), 'options->lower_fsat'),
> --
> 2.11.0
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170120/f6d7a148/attachment.html>


More information about the mesa-dev mailing list