aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler/nir/nir_opt_algebraic.py
diff options
context:
space:
mode:
authorDaniel Schürmann <[email protected]>2019-01-25 12:48:44 +0100
committerDaniel Schürmann <[email protected]>2019-06-24 18:42:20 +0200
commita74f256c58a2c1fca3ce75e5199a04a22768450e (patch)
tree872b355b982704f23b2d1024a6489aae87da97d0 /src/compiler/nir/nir_opt_algebraic.py
parentfa6ea16a8daf82886b7fc67c18f9ea87d2388cfd (diff)
nir/algebraic: add optimization pattern for ('ult', a, ('and', b, a)) and friends.
These optimizations are based on the fact that 'and(a,b) <= umin(a,b)'. For AMD, this series moves the optimization from LLVM to NIR, so currently no vkpipeline-db changes here. Reviewed-by: Ian Romanick <[email protected]>
Diffstat (limited to 'src/compiler/nir/nir_opt_algebraic.py')
-rw-r--r--src/compiler/nir/nir_opt_algebraic.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
index f1b5893be88..36e576b7eff 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -497,6 +497,10 @@ optimizations = [
(('ult', ('umax', a, b), a), False),
(('uge', a, ('umax', b, a)), ('uge', a, b)),
(('uge', ('umin', a, b), a), ('uge', b, a)),
+ (('ult', a, ('iand', b, a)), False),
+ (('ult', ('ior', a, b), a), False),
+ (('uge', a, ('iand', b, a)), True),
+ (('uge', ('ior', a, b), a), True),
(('ilt', '#a', ('imax', '#b', c)), ('ior', ('ilt', a, b), ('ilt', a, c))),
(('ilt', ('imin', '#a', b), '#c'), ('ior', ('ilt', a, c), ('ilt', b, c))),