mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
nir/opt_algebraic: optimize d3d a ? b : 0
Foz-DB Navi21: Totals from 3466 (4.34% of 79789) affected shaders: MaxWaves: 73163 -> 73161 (-0.00%); split: +0.02%, -0.02% Instrs: 3993862 -> 3987633 (-0.16%); split: -0.19%, +0.04% CodeSize: 21747420 -> 21725620 (-0.10%); split: -0.15%, +0.05% VGPRs: 190736 -> 190728 (-0.00%); split: -0.04%, +0.03% SpillSGPRs: 489 -> 478 (-2.25%); split: -2.86%, +0.61% Latency: 48169718 -> 48159068 (-0.02%); split: -0.05%, +0.02% InvThroughput: 12132999 -> 12128721 (-0.04%); split: -0.05%, +0.01% VClause: 78063 -> 78052 (-0.01%); split: -0.09%, +0.08% SClause: 109095 -> 108996 (-0.09%); split: -0.13%, +0.04% Copies: 265784 -> 264530 (-0.47%); split: -0.72%, +0.25% Branches: 84533 -> 84553 (+0.02%) PreSGPRs: 172577 -> 172531 (-0.03%); split: -0.19%, +0.16% PreVGPRs: 165776 -> 165825 (+0.03%); split: -0.06%, +0.09% VALU: 2851544 -> 2850426 (-0.04%); split: -0.08%, +0.04% SALU: 413543 -> 408408 (-1.24%); split: -1.45%, +0.21% VMEM: 139890 -> 139887 (-0.00%) Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33761>
This commit is contained in:
parent
2e7f34af6b
commit
d272a6e261
1 changed files with 5 additions and 9 deletions
|
|
@ -487,7 +487,7 @@ optimizations.extend([
|
|||
(('~ffma@64', a, b, c), ('fadd', ('fmul', a, b), c), 'options->fuse_ffma64'),
|
||||
(('~ffmaz', a, b, c), ('fadd', ('fmulz', a, b), c), 'options->fuse_ffma32'),
|
||||
|
||||
(('~fmul', ('fadd', ('iand', ('ineg', ('b2i', 'a@bool')), ('fmul', b, c)), '#d'), '#e'),
|
||||
(('~fmul', ('fadd', ('bcsel', a, ('fmul', b, c), 0), '#d'), '#e'),
|
||||
('bcsel', a, ('fmul', ('fadd', ('fmul', b, c), d), e), ('fmul', d, e))),
|
||||
|
||||
(('fdph', a, b), ('fdot4', ('vec4', 'a.x', 'a.y', 'a.z', 1.0), b), 'options->lower_fdph'),
|
||||
|
|
@ -1473,10 +1473,12 @@ for s in [8, 16, 32, 64]:
|
|||
])
|
||||
|
||||
optimizations.extend([
|
||||
(('iand', ('ineg', ('b2i', 'a@1')), b),
|
||||
('bcsel', a, b, 0)),
|
||||
(('ior', ('ineg', ('b2i','a@1')), ('ineg', ('b2i', 'b@1'))),
|
||||
('ineg', ('b2i', ('ior', a, b)))),
|
||||
(('ige', ('ineg', ('b2i', 'a@1')), 0), ('inot', a)),
|
||||
(('ilt', ('ineg', ('b2i', 'a@1')), 0), a),
|
||||
(('iand', ('ineg', ('b2i', a)), 1.0), ('b2f', a)),
|
||||
(('iand', ('ineg', ('b2i', a)), 1), ('b2i', a)),
|
||||
(('bcsel', a, ('b2i', 'b@1'), ('b2i', 'c@1')), ('b2i', ('bcsel', a, b, c))),
|
||||
(('bcsel', a, ('b2i', 'b@1'), 0), ('b2i', ('bcsel', a, b, False))),
|
||||
(('bcsel', a, ('b2i', 'b@1'), 1), ('b2i', ('bcsel', a, b, True))),
|
||||
|
|
@ -1510,12 +1512,6 @@ for op in ('ior', 'iand', 'ixor'):
|
|||
(('iand', (op, ('b2i', 'a@1'), ('ineg', ('b2i', 'b@1'))), 1), ('b2i', (op, a, b)) ),
|
||||
])
|
||||
|
||||
# One extra rule for iand. Since one of the sources is missing ineg, the
|
||||
# final result can only be 0 or 1. Omit the final ineg.
|
||||
optimizations.extend([
|
||||
(('iand', ('ineg', ('b2i', 'a@1')), ('b2i', 'b@1')), ('b2i', ('iand', a, b)))
|
||||
])
|
||||
|
||||
optimizations.extend([
|
||||
(('feq', ('seq', a, b), 1.0), ('feq', a, b)),
|
||||
(('feq', ('sne', a, b), 1.0), ('fneu', a, b)),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue