agx: Lower f2f16_rtz
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Thu, 10 Aug 2023 20:35:43 +0000 (16:35 -0400)
committerMarge Bot <emma+marge@anholt.net>
Fri, 11 Aug 2023 20:31:28 +0000 (20:31 +0000)
Based on what VIR does.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24635>

src/asahi/compiler/agx_nir_algebraic.py

index 9fd4a40..6d05d4e 100644 (file)
@@ -43,6 +43,11 @@ lower_pack = [
     (('f2u8', a), ('u2u8', ('f2u16', a))),
     (('f2i8', a), ('i2i8', ('f2i16', a))),
 
+    # Based on the VIR lowering
+    (('f2f16_rtz', 'a@32'),
+     ('bcsel', ('flt', ('fabs', a), ('fabs', ('f2f32', ('f2f16_rtne', a)))),
+      ('isub', ('f2f16_rtne', a), 1), ('f2f16_rtne', a))),
+
     # These are based on the lowerings from nir_opt_algebraic, but conditioned
     # on the number of bits not being constant. If the bit count is constant
     # (the happy path) we can use our native instruction instead.