[Mesa-dev] [PATCH 4/5] nir: Recognize mul(b2f(a), b2f(b)) as a logical AND.

Jason Ekstrand jason at jlekstrand.net
Wed Mar 18 19:39:05 PDT 2015


On Wed, Mar 18, 2015 at 11:37 AM, Matt Turner <mattst88 at gmail.com> wrote:
> Transform this into b2f(and(a, b)).
>
> total instructions in shared programs: 6205448 -> 6204391 (-0.02%)
> instructions in affected programs:     284030 -> 282973 (-0.37%)
> helped:                                903
> HURT:                                  6
> ---
>  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 ef855aa..f956edf 100644
> --- a/src/glsl/nir/nir_opt_algebraic.py
> +++ b/src/glsl/nir/nir_opt_algebraic.py
> @@ -95,6 +95,8 @@ optimizations = [
>     (('fsat', a), ('fmin', ('fmax', a, 0.0), 1.0), 'options->lower_fsat'),
>     (('fsat', ('fsat', a)), ('fsat', a)),
>     (('fmin', ('fmax', ('fmin', ('fmax', a, 0.0), 1.0), 0.0), 1.0), ('fmin', ('fmax', a, 0.0), 1.0)),
> +   # Emulating booleans
> +   (('fmul', ('b2f', a), ('b2f', b)), ('b2f', ('iand', a, b))),

Those are only equivalent if the sources are known booleans.
Otherwise, no dice.
--Jason

>     # Comparison with the same args.  Note that these are not done for
>     # the float versions because NaN always returns false on float
>     # inequalities.
> --
> 2.0.5
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list