mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-02 22:54:05 +08:00
nir/algebraic: Optimize some ifind_msb to ufind_msb
On Intel platforms, the uclz lowering if ufind_msb is either one instruction better (Gfx7 and newer) or two instructions better (all older platforms) than the ifind_msb implementations. On platforms that use lower_find_msb_to_reverse, there should be no difference. All Haswell and newer Intel platforms had similar results. (Ice Lake shown) total instructions in shared programs: 19938662 -> 19938634 (<.01%) instructions in affected programs: 850 -> 822 (-3.29%) helped: 2 / HURT: 0 total cycles in shared programs: 858467067 -> 858465538 (<.01%) cycles in affected programs: 10080 -> 8551 (-15.17%) helped: 2 / HURT: 0 Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19042>
This commit is contained in:
parent
db6d1edc1b
commit
831f9d3f61
@ -1814,6 +1814,8 @@ optimizations.extend([
|
||||
(('find_lsb', ('bitfield_reverse', a)), ('ufind_msb_rev', a), 'options->has_find_msb_rev'),
|
||||
(('ufind_msb_rev', ('bitfield_reverse', a)), ('find_lsb', a), '!options->lower_find_lsb'),
|
||||
|
||||
(('ifind_msb', ('f2i32(is_used_once)', a)), ('ufind_msb', ('f2i32', ('fabs', 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))),
|
||||
(('~fmulz', ('bcsel(is_used_once)', c, -1.0, 1.0), b), ('bcsel', c, ('fneg', b), b)),
|
||||
|
Loading…
Reference in New Issue
Block a user