[Mesa-dev] [PATCH 1/3] nir: Simplify fne(fneg(a), a) -> fne(a, 0.0)

Aaron Watry awatry at gmail.com
Thu Aug 6 08:25:31 PDT 2015


On Thu, Aug 6, 2015 at 6:36 AM, Thomas Helland <thomashelland90 at gmail.com>
wrote:

> -NaN != NaN, and -Inf != Inf, so this should be safe.
>

What about -0.0 ?  Does feq/fne treat both negative and positive zero as
equivalent?

--Aaron


> Found while working on my VRP pass.
>
> Shader-db results on my IVB:
> total instructions in shared programs: 1698267 -> 1698067 (-0.01%)
> instructions in affected programs:     15785 -> 15585 (-1.27%)
> helped:                                36
> HURT:                                  0
> GAINED:                                0
> LOST:                                  0
>
> Some shaders was found to have the following pattern in NIR:
> vec1 ssa_26 = fneg ssa_21
> vec1 ssa_27 = fne ssa_21, ssa_26
>
> Make that:
> vec1 ssa_27 = fne ssa_21, 0.0f
>
> This is found in Dota2 and Brutal Legend.
> One shader is cut by 8%, from 323 -> 296 instructons in SIMD8
>
> Signed-off-by: Thomas Helland <thomashelland90 at gmail.com>
> ---
>  src/glsl/nir/nir_opt_algebraic.py | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/src/glsl/nir/nir_opt_algebraic.py
> b/src/glsl/nir/nir_opt_algebraic.py
> index 3068445..471191b 100644
> --- a/src/glsl/nir/nir_opt_algebraic.py
> +++ b/src/glsl/nir/nir_opt_algebraic.py
> @@ -113,6 +113,7 @@ optimizations = [
>     (('sge', a, b), ('b2f', ('fge', a, b)), 'options->lower_scmp'),
>     (('seq', a, b), ('b2f', ('feq', a, b)), 'options->lower_scmp'),
>     (('sne', a, b), ('b2f', ('fne', a, b)), 'options->lower_scmp'),
> +   (('fne', ('fneg', a), a), ('fne', a, 0.0)),
>     # Emulating booleans
>     (('imul', ('b2i', a), ('b2i', b)), ('b2i', ('iand', a, b))),
>     (('fmul', ('b2f', a), ('b2f', b)), ('b2f', ('iand', a, b))),
> --
> 2.5.0
>
> _______________________________________________
> 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/20150806/e6ef60b0/attachment.html>


More information about the mesa-dev mailing list