pan/bi: Lower f2i8, f2u8

These need a simple two-instruction lowering regardless of the size of float
involved. Fixes integer_ops.integer_divideAssign

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18656>
This commit is contained in:
Alyssa Rosenzweig
2022-06-24 09:34:17 -04:00
committed by Marge Bot
parent 82b912f844
commit 5689a932e8
@@ -62,6 +62,13 @@ algebraic_late = [
(('imax', 'a@8', 'b@8'), ('b8csel', ('ilt8', a, b), b, a)),
(('umin', 'a@8', 'b@8'), ('b8csel', ('ult8', a, b), a, b)),
(('umax', 'a@8', 'b@8'), ('b8csel', ('ult8', a, b), b, a)),
# Floats are at minimum 16-bit, which means when converting to an 8-bit
# integer, the vectorization changes. So there's no one-shot hardware
# instruction for f2i8. Instead, lower to two NIR instructions that map
# directly to the hardware.
(('f2i8', a), ('i2i8', ('f2i16', a))),
(('f2u8', a), ('u2u8', ('f2u16', a))),
]
# Handling all combinations of boolean and float sizes for b2f is nontrivial.