[Mesa-dev] [PATCH 09/10] nir: Add algebraic optimizations for exponential/logarithmic functions.

Jason Ekstrand jason at jlekstrand.net
Fri Jan 23 14:00:05 PST 2015


Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>

On Thu, Jan 22, 2015 at 3:41 AM, Kenneth Graunke <kenneth at whitecape.org>
wrote:

> Most of these exist in the GLSL IR algebraic pass already.  However,
> SSA allows us to find more instances of the patterns.
>
> total NIR instructions in shared programs: 2015593 -> 2011430 (-0.21%)
> NIR instructions in affected programs:     124189 -> 120026 (-3.35%)
> helped:                                    604
>
> total i965 instructions in shared programs: 6025508 -> 6018718 (-0.11%)
> i965 instructions in affected programs:     261070 -> 254280 (-2.60%)
> helped:                                     1295
> HURT:                                       2 (by 1 instruction each)
> GAINED:                                     6
>
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/glsl/nir/nir_opt_algebraic.py | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/src/glsl/nir/nir_opt_algebraic.py
> b/src/glsl/nir/nir_opt_algebraic.py
> index dec250b..a5b5715 100644
> --- a/src/glsl/nir/nir_opt_algebraic.py
> +++ b/src/glsl/nir/nir_opt_algebraic.py
> @@ -99,6 +99,16 @@ optimizations = [
>     (('ishr', a, 0), 0),
>     (('ushr', 0, a), 0),
>     (('ushr', a, 0), 0),
> +   # Exponential/logarithmic identities
> +   (('fexp2', ('flog2', a)), a), # 2^lg2(a) = a
> +   (('fexp',  ('flog',  a)), a), # e^ln(a)  = a
> +   (('flog2', ('fexp2', a)), a), # lg2(2^a) = a
> +   (('flog',  ('fexp',  a)), a), # ln(e^a)  = a
> +   (('fexp2', ('fmul', ('flog2', a), b)), ('fpow', a, b)), # 2^(lg2(a)*b)
> = a^b
> +   (('fexp',  ('fmul', ('flog', a), b)),  ('fpow', a, b)), # e^(ln(a)*b)
> = a^b
> +   (('fpow', a, 1.0), a),
> +   (('fpow', a, 2.0), ('fmul', a, a)),
> +   (('fpow', 2.0, a), ('fexp2', a)),
>
>  # This one may not be exact
>     (('feq', ('fadd', a, b), 0.0), ('feq', a, ('fneg', b))),
> --
> 2.2.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150123/98c66a76/attachment.html>


More information about the mesa-dev mailing list