Ian, This patch demonstrates the need for patch 2. Without patch 2, it fails a number of tests as one would expect. I'm not really sure why you didn't see fails without this but I didn't either.
--Jason On Thu, Oct 11, 2018 at 10:38 AM Jason Ekstrand <[email protected]> wrote: > The b2f and b2i conversions always produce zero or one which are both > representable in every type and size. Since b2i and b2f support all bit > sizes, we can just get rid of the conversion opcode. > > total instructions in shared programs: 15089335 -> 15084368 (-0.03%) > instructions in affected programs: 212564 -> 207597 (-2.34%) > helped: 896 > HURT: 0 > > total cycles in shared programs: 369831123 -> 369826267 (<.01%) > cycles in affected programs: 2008647 -> 2003791 (-0.24%) > helped: 693 > HURT: 216 > --- > src/compiler/nir/nir_opt_algebraic.py | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/src/compiler/nir/nir_opt_algebraic.py > b/src/compiler/nir/nir_opt_algebraic.py > index 422a8794d38..cc747250ba5 100644 > --- a/src/compiler/nir/nir_opt_algebraic.py > +++ b/src/compiler/nir/nir_opt_algebraic.py > @@ -751,6 +751,23 @@ for left, right in > itertools.combinations_with_replacement(invert.keys(), 2): > optimizations.append((('inot', ('iand(is_used_once)', (left, a, b), > (right, c, d))), > ('ior', (invert[left], a, b), (invert[right], c, > d)))) > > +# Optimize x2yN(b2x(x)) -> b2y > +optimizations.append((('f2b', ('b2f', a)), a)) > +optimizations.append((('i2b', ('b2i', a)), a)) > +for x, y in itertools.product(['f', 'u', 'i'], ['f', 'u', 'i']): > + if x != 'f' and y != 'f' and x != y: > + continue > + > + b2x = 'b2f' if x == 'f' else 'b2i' > + b2y = 'b2f' if y == 'f' else 'b2i' > + > + for N in [8, 16, 32, 64]: > + if y == 'f' and N == 8: > + continue > + > + x2yN = '{}2{}{}'.format(x, y, N) > + optimizations.append(((x2yN, (b2x, a)), (b2y, a))) > + > def fexp2i(exp, bits): > # We assume that exp is already in the right range. > if bits == 32: > -- > 2.19.1 > >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
