From 434dfb51ca4193dd9cff477da67749e08dba8e48 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Wed, 29 May 2024 17:01:33 +0200 Subject: [PATCH] nir/opt_algebraic: optimize cmp(fneg(a), #b) and feq with fabs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Foz-DB Navi21: Totals from 2483 (3.13% of 79395) affected shaders: Instrs: 4067533 -> 4067756 (+0.01%); split: -0.00%, +0.01% CodeSize: 22525156 -> 22499904 (-0.11%); split: -0.12%, +0.01% Latency: 51967223 -> 51963654 (-0.01%); split: -0.01%, +0.00% InvThroughput: 16685020 -> 16683045 (-0.01%); split: -0.01%, +0.00% SClause: 131890 -> 131907 (+0.01%) Copies: 402557 -> 402510 (-0.01%); split: -0.01%, +0.00% Branches: 146962 -> 146958 (-0.00%) PreSGPRs: 118404 -> 118401 (-0.00%) PreVGPRs: 123791 -> 123787 (-0.00%) VALU: 2709846 -> 2710174 (+0.01%); split: -0.00%, +0.01% SALU: 565883 -> 565786 (-0.02%) Reviewed-by: Timur Kristóf Reviewed-by: Faith Ekstrand Reviewed-by: Ian Romanick Part-of: --- src/compiler/nir/nir_opt_algebraic.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index d6919950dd5..d2683a499c8 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -602,12 +602,12 @@ optimizations.extend([ (('fge', ('fneg', a), ('fneg', b)), ('fge', b, a)), (('feq', ('fneg', a), ('fneg', b)), ('feq', b, a)), (('fneu', ('fneg', a), ('fneg', b)), ('fneu', b, a)), - (('flt', ('fneg', a), -1.0), ('flt', 1.0, a)), - (('flt', -1.0, ('fneg', a)), ('flt', a, 1.0)), - (('fge', ('fneg', a), -1.0), ('fge', 1.0, a)), - (('fge', -1.0, ('fneg', a)), ('fge', a, 1.0)), - (('fneu', ('fneg', a), -1.0), ('fneu', 1.0, a)), - (('feq', -1.0, ('fneg', a)), ('feq', a, 1.0)), + (('flt', ('fneg', 'a(is_not_const)'), '#b'), ('flt', ('fneg', b), a)), + (('flt', '#b', ('fneg', 'a(is_not_const)')), ('flt', a, ('fneg', b))), + (('fge', ('fneg', 'a(is_not_const)'), '#b'), ('fge', ('fneg', b), a)), + (('fge', '#b', ('fneg', 'a(is_not_const)')), ('fge', a, ('fneg', b))), + (('fneu', ('fneg', 'a(is_not_const)'), '#b'), ('fneu', ('fneg', b), a)), + (('feq', '#b', ('fneg', 'a(is_not_const)')), ('feq', a, ('fneg', b))), (('flt', a, '#b(is_negative_zero)'), ('flt', a, 0.0)), (('flt', '#b(is_negative_zero)', a), ('flt', 0.0, a)), (('fge', a, '#b(is_negative_zero)'), ('fge', a, 0.0)), @@ -619,6 +619,10 @@ optimizations.extend([ (('ine', ('ineg', a), 0), ('ine', a, 0)), (('ieq', ('iabs', a), 0), ('ieq', a, 0)), (('ine', ('iabs', a), 0), ('ine', a, 0)), + (('fneu', ('fabs', a), 0.0), ('fneu', a, 0.0)), + (('feq', ('fabs', a), 0.0), ('feq', a, 0.0)), + (('fneu', ('fabs', a), ('fabs', a)), ('fneu', a, a)), + (('feq', ('fabs', a), ('fabs', a)), ('feq', a, a)), # b < fsat(NaN) -> b < 0 -> false, and b < Nan -> false. (('flt', '#b(is_gt_0_and_lt_1)', ('fsat(is_used_once)', a)), ('flt', b, a)),