From: Daniel Schürmann Date: Wed, 29 Apr 2020 17:50:27 +0000 (+0100) Subject: nir/algebraic: add some more unop + bcsel optimizations X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=56ec814b567dbedf3338554e7577f748dd4cf003;p=mesa.git nir/algebraic: add some more unop + bcsel optimizations Totals from affected shaders: (VEGA) SGPRS: 284392 -> 284400 (0.00 %) VGPRS: 261080 -> 261076 (-0.00 %) Spilled SGPRs: 105 -> 105 (0.00 %) Spilled VGPRs: 0 -> 0 (0.00 %) Private memory VGPRs: 0 -> 0 (0.00 %) Scratch size: 0 -> 0 (0.00 %) dwords per thread Code Size: 24698596 -> 24277788 (-1.70 %) bytes LDS: 196 -> 196 (0.00 %) blocks Max Waves: 10101 -> 10105 (0.04 %) Reviewed-by: Alyssa Rosenzweig Reviewed-by: Rhys Perry Reviewed-by: Marek Olšák Part-of: --- diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index 92c3a9901ca..6a94d404309 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -1779,10 +1779,14 @@ for op in ['fpow']: (('bcsel', a, (op, b, c), (op + '(is_used_once)', d, c)), (op, ('bcsel', a, b, d), c)), ] -for op in ['frcp', 'frsq', 'fsqrt', 'fexp2', 'flog2', 'fsign', 'fsin', 'fcos']: +for op in ['frcp', 'frsq', 'fsqrt', 'fexp2', 'flog2', 'fsign', 'fsin', 'fcos', 'fneg', 'fabs', 'fsign']: optimizations += [ - (('bcsel', a, (op + '(is_used_once)', b), (op, c)), (op, ('bcsel', a, b, c))), - (('bcsel', a, (op, b), (op + '(is_used_once)', c)), (op, ('bcsel', a, b, c))), + (('bcsel', c, (op + '(is_used_once)', a), (op + '(is_used_once)', b)), (op, ('bcsel', c, a, b))), + ] + +for op in ['ineg', 'iabs', 'inot', 'isign']: + optimizations += [ + ((op, ('bcsel', c, '#a', '#b')), ('bcsel', c, (op, a), (op, b))), ] # This section contains optimizations to propagate downsizing conversions of