nir/opt_algebraic: optimize cmp(fneg(a), #b) and feq with fabs
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 <timur.kristof@gmail.com> Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29467>
This commit is contained in:
@@ -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)),
|
||||
|
Reference in New Issue
Block a user