nir: Convert ineg(b2i(a)) to a if it's a boolean.
On BDW: total instructions in shared programs: 13071119 -> 13070371 (-0.01%) instructions in affected programs: 83424 -> 82676 (-0.90%) helped: 505 HURT: 45 (all TCS, all hurt by a single instruction) total cycles in shared programs: 256601322 -> 256588932 (-0.00%) cycles in affected programs: 819410 -> 807020 (-1.51%) helped: 450 HURT: 57 total loops in shared programs: 2950 -> 2942 (-0.27%) loops in affected programs: 8 -> 0 helped: 7 HURT: 0 v2: Drop unnecessary 'a@bool' annotation (Connor, Eric). Add a comment explaining the rule (Ian). Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> [v1] Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:

committed by
Timothy Arceri

parent
86b9be777f
commit
1c50d31c26
@@ -197,6 +197,8 @@ optimizations = [
|
|||||||
(('fmul', ('b2f', a), ('b2f', b)), ('b2f', ('iand', a, b))),
|
(('fmul', ('b2f', a), ('b2f', b)), ('b2f', ('iand', a, b))),
|
||||||
(('fsat', ('fadd', ('b2f', a), ('b2f', b))), ('b2f', ('ior', a, b))),
|
(('fsat', ('fadd', ('b2f', a), ('b2f', b))), ('b2f', ('ior', a, b))),
|
||||||
(('iand', 'a@bool', 1.0), ('b2f', a)),
|
(('iand', 'a@bool', 1.0), ('b2f', a)),
|
||||||
|
# True/False are ~0 and 0 in NIR. b2i of True is 1, and -1 is ~0 (True).
|
||||||
|
(('ineg', ('b2i', a)), a),
|
||||||
(('flt', ('fneg', ('b2f', a)), 0), a), # Generated by TGSI KILL_IF.
|
(('flt', ('fneg', ('b2f', a)), 0), a), # Generated by TGSI KILL_IF.
|
||||||
(('flt', ('fsub', 0.0, ('b2f', a)), 0), a), # Generated by TGSI KILL_IF.
|
(('flt', ('fsub', 0.0, ('b2f', a)), 0), a), # Generated by TGSI KILL_IF.
|
||||||
# Comparison with the same args. Note that these are not done for
|
# Comparison with the same args. Note that these are not done for
|
||||||
|
Reference in New Issue
Block a user