[Mesa-dev] [PATCH 14/31] nir/algebraic: Disable b2f lowering and two optimizations
Jason Ekstrand
jason at jlekstrand.net
Mon Oct 22 23:37:20 UTC 2018
On Mon, Oct 22, 2018 at 6:26 PM Ian Romanick <idr at freedesktop.org> wrote:
> On 10/22/2018 03:13 PM, Jason Ekstrand wrote:
> > These all assume the 0/~0 representation of booleans. We'll turn them
> > back on before too long.
> > ---
> > src/compiler/nir/nir_opt_algebraic.py | 5 -----
> > 1 file changed, 5 deletions(-)
> >
> > diff --git a/src/compiler/nir/nir_opt_algebraic.py
> b/src/compiler/nir/nir_opt_algebraic.py
> > index 8b24daddfdc..5a4e78e8e0e 100644
> > --- a/src/compiler/nir/nir_opt_algebraic.py
> > +++ b/src/compiler/nir/nir_opt_algebraic.py
> > @@ -436,9 +436,7 @@ optimizations = [
> > (('imul', ('b2i', a), ('b2i', b)), ('b2i', ('iand', a, b))),
> > (('fmul', ('b2f', a), ('b2f', b)), ('b2f', ('iand', a, b))),
> > (('fsat', ('fadd', ('b2f', a), ('b2f', b))), ('b2f', ('ior', a, b))),
> > - (('iand', 'a at bool', 1.0), ('b2f', a), '!options->lower_b2f'),
> > # True/False are ~0 and 0 in NIR. b2i of True is 1, and -1 is ~0
> (True).
>
> Is this comment still true at the end of the series? Should it also
> change?
>
It is still true but it doesn't apply to any of the optimizations that
follow. I'll kill it off.
> > - (('ineg', ('b2i at 32', a)), a),
> > (('flt', ('fneg', ('b2f', a)), 0), a), # Generated by TGSI KILL_IF.
> > (('flt', ('fsub', 0.0, ('b2f', a)), 0), a), # Generated by TGSI
> KILL_IF.
> > # Comparison with the same args. Note that these are not done for
> > @@ -917,9 +915,6 @@ late_optimizations = [
> > # we do these late so that we don't get in the way of creating ffmas
> > (('fmin', ('fadd(is_used_once)', '#c', a), ('fadd(is_used_once)',
> '#c', b)), ('fadd', c, ('fmin', a, b))),
> > (('fmax', ('fadd(is_used_once)', '#c', a), ('fadd(is_used_once)',
> '#c', b)), ('fadd', c, ('fmax', a, b))),
> > -
> > - # Lowered for backends without a dedicated b2f instruction
> > - (('b2f at 32', a), ('iand', a, 1.0), 'options->lower_b2f'),
>
> I've never understood the point of this. The backend should just
> generate the iand instruction as it's implementation of b2f. This is
> what i965 does. Converting the b2f at the late hour doesn't give any
> opportunities to enable other optimizations, so it seems pretty useless.
>
I don't really get it either but Alyssa wanted it. Maybe we can can it
eventually once their back-end gets more mature? In any case, it's not
hurting anything sitting here.
--Jason
> > ]
> >
> > print(nir_algebraic.AlgebraicPass("nir_opt_algebraic",
> optimizations).render())
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20181022/9ad62da9/attachment.html>
More information about the mesa-dev
mailing list