diff options
Diffstat (limited to 'src/compiler/nir/nir_opt_algebraic.py')
-rw-r--r-- | src/compiler/nir/nir_opt_algebraic.py | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index ba788f221a3..f153570105b 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -292,6 +292,8 @@ optimizations = [ (('~fge', ('fmax', a, b), a), True), (('~flt', a, ('fmin', b, a)), False), (('~flt', ('fmax', a, b), a), False), + (('~fge', a, ('fmax', b, a)), ('fge', a, b)), + (('~fge', ('fmin', a, b), a), ('fge', b, a)), (('ilt', a, ('imax', b, a)), ('ilt', a, b)), (('ilt', ('imin', a, b), a), ('ilt', b, a)), @@ -301,7 +303,23 @@ optimizations = [ (('ult', ('umin', a, b), a), ('ult', b, a)), (('uge', a, ('umin', b, a)), True), (('uge', ('umax', a, b), a), True), - + (('ilt', a, ('imin', b, a)), False), + (('ilt', ('imax', a, b), a), False), + (('ige', a, ('imax', b, a)), ('ige', a, b)), + (('ige', ('imin', a, b), a), ('ige', b, a)), + (('ult', a, ('umin', b, a)), False), + (('ult', ('umax', a, b), a), False), + (('uge', a, ('umax', b, a)), ('uge', a, b)), + (('uge', ('umin', a, b), a), ('uge', b, a)), + + (('ilt', '#a', ('imax', '#b', c)), ('ior', ('ilt', a, b), ('ilt', a, c))), + (('ilt', ('imin', '#a', b), '#c'), ('ior', ('ilt', a, c), ('ilt', b, c))), + (('ige', '#a', ('imin', '#b', c)), ('ior', ('ige', a, b), ('ige', a, c))), + (('ige', ('imax', '#a', b), '#c'), ('ior', ('ige', a, c), ('ige', b, c))), + (('ult', '#a', ('umax', '#b', c)), ('ior', ('ult', a, b), ('ult', a, c))), + (('ult', ('umin', '#a', b), '#c'), ('ior', ('ult', a, c), ('ult', b, c))), + (('uge', '#a', ('umin', '#b', c)), ('ior', ('uge', a, b), ('uge', a, c))), + (('uge', ('umax', '#a', b), '#c'), ('ior', ('uge', a, c), ('uge', b, c))), (('ilt', '#a', ('imin', '#b', c)), ('iand', ('ilt', a, b), ('ilt', a, c))), (('ilt', ('imax', '#a', b), '#c'), ('iand', ('ilt', a, c), ('ilt', b, c))), (('ige', '#a', ('imax', '#b', c)), ('iand', ('ige', a, b), ('ige', a, c))), |