Module: Mesa
Branch: master
Commit: 6a0db5f08ffac7d43a5b937982262f357a21f95b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6a0db5f08ffac7d43a5b937982262f357a21f95b

Author: Eric Anholt <e...@anholt.net>
Date:   Fri May  4 14:02:55 2018 -0700

nir: Add lowering for find_lsb.

There is a fairly simple relation to turn this into ufind_msb.

Reviewed-by: Matt Turner <matts...@gmail.com>
Reviewed-by: Ian Romanick <ian.d.roman...@intel.com>

---

 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 9fca61f007..b9426f8eb4 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -1915,6 +1915,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 f6685977f3..db907df854 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -559,6 +559,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'),
+
    (('extract_i8', a, 'b@32'),
     ('ishr', ('ishl', a, ('imul', ('isub', 3, b), 8)), 24),
     'options->lower_extract_byte'),

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to