On Tue, May 8, 2018 at 1:13 PM, Eric Anholt <e...@anholt.net> wrote: > There is a fairly simple relation to turn this into ufind_msb. > --- > src/compiler/nir/nir.h | 2 ++ > src/compiler/nir/nir_opt_algebraic.py | 4 ++++ > 2 files changed, 6 insertions(+) > > diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h > index ee45b0709636..53ac1598dfc9 100644 > --- a/src/compiler/nir/nir.h > +++ b/src/compiler/nir/nir.h > @@ -1891,6 +1891,8 @@ typedef struct nir_shader_compiler_options { > bool lower_bfm; > /** Lowers ifind_msb to compare and ufind_msb */ > bool lower_ifind_msb; > + /** Lowers find_lsb to ufind_msb and logic ops */ > + bool lower_find_lsb; > bool lower_uadd_carry; > bool lower_usub_borrow; > /** lowers fneg and ineg to fsub and isub. */ > diff --git a/src/compiler/nir/nir_opt_algebraic.py > b/src/compiler/nir/nir_opt_algebraic.py > index 616f734ac9b2..46de62eea0b5 100644 > --- a/src/compiler/nir/nir_opt_algebraic.py > +++ b/src/compiler/nir/nir_opt_algebraic.py > @@ -536,6 +536,10 @@ optimizations = [ > ('ufind_msb', ('bcsel', ('ilt', 'value', 0), ('inot', 'value'), > 'value')), > 'options->lower_ifind_msb'), > > + (('find_lsb', 'value'), > + ('ufind_msb', ('iand', 'value', ('ineg', 'value'))), > + 'options->lower_find_lsb'), > +
That's pretty cool. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev