nir: Turn bcsel of +/- 1.0 and 0.0 into b2f sequences.
On BDW: total instructions in shared programs: 13074882 -> 13068703 (-0.05%) instructions in affected programs: 1823116 -> 1816937 (-0.34%) helped: 4187 HURT: 537 total cycles in shared programs: 256622718 -> 256425382 (-0.08%) cycles in affected programs: 123790120 -> 123592784 (-0.16%) helped: 3823 HURT: 2037 total spills in shared programs: 15276 -> 14929 (-2.27%) spills in affected programs: 9446 -> 9099 (-3.67%) helped: 352 HURT: 1 total fills in shared programs: 20496 -> 20144 (-1.72%) fills in affected programs: 13040 -> 12688 (-2.70%) helped: 352 HURT: 1 LOST: 2 GAINED: 21 v2: Rely on 'a' being a well-formed boolean (Connor, Eric). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:

committed by
Timothy Arceri

parent
1c50d31c26
commit
3371de38f2
@@ -269,6 +269,10 @@ optimizations = [
|
||||
(('ieq', 'a@bool', False), ('inot', 'a')),
|
||||
(('bcsel', a, True, False), a),
|
||||
(('bcsel', a, False, True), ('inot', a)),
|
||||
(('bcsel@32', a, 1.0, 0.0), ('b2f', a)),
|
||||
(('bcsel@32', a, 0.0, 1.0), ('b2f', ('inot', a))),
|
||||
(('bcsel@32', a, -1.0, -0.0), ('fneg', ('b2f', a))),
|
||||
(('bcsel@32', a, -0.0, -1.0), ('fneg', ('b2f', ('inot', a)))),
|
||||
(('bcsel', True, b, c), b),
|
||||
(('bcsel', False, b, c), c),
|
||||
# The result of this should be hit by constant propagation and, in the
|
||||
|
Reference in New Issue
Block a user