nir/algebraic: Add some boolean optimizations

Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13167>
This commit is contained in:
Jason Ekstrand
2020-10-28 22:32:16 -05:00
committed by Marge Bot
parent c8b2be0b95
commit 7abf3955ca
+13
View File
@@ -1241,9 +1241,22 @@ optimizations.extend([
(('ieq', ('ineg', ('b2i', 'a@1')), -1), a),
(('ine', ('ineg', ('b2i', 'a@1')), 0), a),
(('ine', ('ineg', ('b2i', 'a@1')), -1), ('inot', a)),
(('ige', ('ineg', ('b2i', 'a@1')), 0), ('inot', a)),
(('ilt', ('ineg', ('b2i', 'a@1')), 0), a),
(('ult', 0, ('ineg', ('b2i', 'a@1'))), a),
(('iand', ('ineg', ('b2i', a)), 1.0), ('b2f', a)),
(('iand', ('ineg', ('b2i', a)), 1), ('b2i', a)),
# With D3D booleans, imax is AND and umax is OR
(('imax', ('ineg', ('b2i', 'a@1')), ('ineg', ('b2i', 'b@1'))),
('ineg', ('b2i', ('iand', a, b)))),
(('imin', ('ineg', ('b2i', 'a@1')), ('ineg', ('b2i', 'b@1'))),
('ineg', ('b2i', ('ior', a, b)))),
(('umax', ('ineg', ('b2i', 'a@1')), ('ineg', ('b2i', 'b@1'))),
('ineg', ('b2i', ('ior', a, b)))),
(('umin', ('ineg', ('b2i', 'a@1')), ('ineg', ('b2i', 'b@1'))),
('ineg', ('b2i', ('iand', a, b)))),
# Conversions
(('i2b16', ('b2i', 'a@16')), a),
(('i2b32', ('b2i', 'a@32')), a),