[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 20:35:51 PDT 2015


On Mar 18, 2015 8:32 PM, "Matt Turner" <mattst88 at gmail.com> wrote:
>
> On Wed, Mar 18, 2015 at 7:39 PM, Jason Ekstrand <jason at jlekstrand.net>
wrote:
> > 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.
>
> Well... they're the source of a b2f. Are you saying that's not sufficient?

No, that's not.  Fortunately, @bool should solve it for you in all of the
cases you care about.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150318/994ec8d4/attachment-0001.html>


More information about the mesa-dev mailing list