From b96c42c916ee9c479f24bd0ed729c3ffa0e7b342 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Fri, 13 Mar 2026 14:39:46 +0100 Subject: [PATCH] nir/opt_algebraic: optimize more near useless bcsel Foz-DB Navi48: Totals from 327 (0.29% of 114655) affected shaders: Instrs: 732971 -> 731642 (-0.18%); split: -0.19%, +0.01% CodeSize: 3696020 -> 3689824 (-0.17%); split: -0.17%, +0.00% Latency: 4405319 -> 4403413 (-0.04%); split: -0.06%, +0.01% InvThroughput: 650209 -> 649659 (-0.08%); split: -0.10%, +0.01% Copies: 53872 -> 53736 (-0.25%); split: -0.27%, +0.02% Branches: 15598 -> 15571 (-0.17%) VALU: 262391 -> 261969 (-0.16%) SALU: 268112 -> 267699 (-0.15%) Reviewed-by: Alyssa Rosenzweig Part-of: --- src/compiler/nir/nir_opt_algebraic.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index c56e57dabc2..95900083949 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -783,8 +783,12 @@ optimizations.extend([ # 0 < fsat(NaN) -> 0 < 0 -> false, and 0 < NaN -> false. (('flt', 0.0, ('fsat(is_used_once)', a)), ('flt', 0.0, a)), - (('bcsel(is_only_used_as_float)', ('feq', a, 'b(is_not_zero)'), b, a), a), - (('bcsel(is_only_used_as_float)', ('fneu', a, 'b(is_not_zero)'), a, b), a), + (('bcsel', ('feq', a, 'b(is_a_number_not_zero)'), b, a), a), + (('bcsel', ('fneu', a, 'b(is_a_number_not_zero)'), a, b), a), + (('bcsel(is_only_used_as_float_nsz)', ('feq', a, 0.0), 0.0, a), a), + (('bcsel(is_only_used_as_float_nsz)', ('fneu', a, 0.0), a, 0.0), a), + (('bcsel(is_only_used_as_float_nsz)', ('feq', a, 0.0), -0.0, a), a), + (('bcsel(is_only_used_as_float_nsz)', ('fneu', a, 0.0), a, -0.0), a), (('bcsel', ('feq', a, 0), 0, ('fsat', ('fmul', a, 'b(is_a_number)'))), ('fsat(preserve_sz)', ('fmul', a, b))), (('bcsel', ('fneu', a, 0), ('fsat', ('fmul', a, 'b(is_a_number)')), 0), ('fsat(preserve_sz)', ('fmul', a, b))), (('bcsel', ('feq', a, 0), b, ('fadd', a, 'b(is_not_zero)')), ('fadd', a, b)),