From: Daniel Schürmann Date: Fri, 25 Jan 2019 11:48:44 +0000 (+0100) Subject: nir/algebraic: add optimization pattern for ('ult', a, ('and', b, a)) and friends. X-Git-Tag: upstream/19.3.0~5184 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a74f256c58a2c1fca3ce75e5199a04a22768450e;p=platform%2Fupstream%2Fmesa.git 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 --- diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index f1b5893..36e576b 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))),