[Mesa-dev] [PATCH 4/8] nir: Add lowering for find_lsb.
Matt Turner
mattst88 at gmail.com
Thu May 31 17:04:21 UTC 2018
On Tue, May 8, 2018 at 1:13 PM, Eric Anholt <eric at 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.
More information about the mesa-dev
mailing list