From: Daniel Schürmann Date: Wed, 29 Apr 2020 14:38:54 +0000 (+0100) Subject: nir/algebraic: optimize fmul(x, bcsel(c, -1.0, 1.0)) -> bcsel(c, -x, x) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9d22c5ed718abcf98444f9654b912ccb42b2ccdd;p=mesa.git nir/algebraic: optimize fmul(x, bcsel(c, -1.0, 1.0)) -> bcsel(c, -x, x) Totals from affected shaders: (VEGA) SGPRS: 545712 -> 545712 (0.00 %) VGPRS: 413092 -> 413116 (0.01 %) Spilled SGPRs: 10616 -> 10616 (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: 37031684 -> 36984248 (-0.13 %) bytes LDS: 427 -> 427 (0.00 %) blocks Max Waves: 54350 -> 54340 (-0.02 %) 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 6a94d404309..bd84966821a 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -1134,6 +1134,9 @@ optimizations.extend([ (('bcsel', ('ine', a, -1), ('ifind_msb', a), -1), ('ifind_msb', a)), + (('~fmul', ('bcsel(is_used_once)', c, -1.0, 1.0), b), ('bcsel', c, ('fneg', b), b)), + (('~fmul', ('bcsel(is_used_once)', c, 1.0, -1.0), b), ('bcsel', c, b, ('fneg', b))), + (('fmin3@64', a, b, c), ('fmin@64', a, ('fmin@64', b, c))), (('fmax3@64', a, b, c), ('fmax@64', a, ('fmax@64', b, c))), (('fmed3@64', a, b, c), ('fmax@64', ('fmin@64', ('fmax@64', a, b), c), ('fmin@64', a, b))),