pan/mdg: Ingest fsat_signed/fclamp_pos
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 4 May 2020 20:12:41 +0000 (16:12 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 19 May 2020 20:21:27 +0000 (20:21 +0000)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5102>

src/panfrost/midgard/midgard_compile.c
src/panfrost/midgard/midgard_nir_algebraic.py

index 907634b1e13860e9b8be647de6dceb478457b9b4..0f57ba67626e4583f92bb13910a016f04e6a4ea2 100644 (file)
@@ -770,6 +770,8 @@ emit_alu(compiler_context *ctx, nir_alu_instr *instr)
                 ALU_CASE(fabs, fmov);
                 ALU_CASE(fneg, fmov);
                 ALU_CASE(fsat, fmov);
+                ALU_CASE(fsat_signed, fmov);
+                ALU_CASE(fclamp_pos, fmov);
 
         /* For size conversion, we use a move. Ideally though we would squash
          * these ops together; maybe that has to happen after in NIR as part of
index ae399c36d5b2e34e172c0dca9b0920310309396e..d7eceeba869794e05a022f332b8ab9c82161a5bb 100644 (file)
@@ -45,6 +45,13 @@ algebraic_late = [
 
     (('b32csel', a, 'b@32', 0), ('iand', a, b)),
     (('b32csel', a, 0, 'b@32'), ('iand', ('inot', a), b)),
+
+    # Fuse sat_signed. This should probably be shared with Bifrost
+    (('~fmin', ('fmax', a, -1.0), 1.0), ('fsat_signed', a)),
+    (('~fmax', ('fmin', a, 1.0), -1.0), ('fsat_signed', a)),
+
+    # Fuse clamp_positive. This should probably be shared with Utgard/bifrost
+    (('fmax', a, 0.0), ('fclamp_pos', a)),
 ]