pan/bi: Structify fadd/min/max16
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Sat, 28 Mar 2020 02:26:09 +0000 (22:26 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 31 Mar 2020 01:12:26 +0000 (01:12 +0000)
There is some quirky encoding here.

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

src/panfrost/bifrost/bifrost.h

index 045295b..1a01628 100644 (file)
@@ -209,6 +209,25 @@ struct bifrost_fma_add {
         unsigned op : 6;
 } __attribute__((packed));
 
+#define BIFROST_FMA_OP_FMAX16 (0xC0 >> 2)
+#define BIFROST_FMA_OP_FMIN16 (0xCC >> 2)
+#define BIFROST_FMA_OP_FADD16 (0xD8 >> 2)
+
+struct bifrost_fma_add_minmax16 {
+        unsigned src0 : 3;
+        unsigned src1 : 3;
+        /* abs2 inferred as (src1 < src0) */
+        unsigned abs1 : 1;
+        unsigned src0_neg : 1;
+        unsigned src1_neg : 1;
+        unsigned src0_swizzle : 2;
+        unsigned src1_swizzle : 2;
+        enum bifrost_outmod outmod : 2;
+        /* roundmode for add, min/max mode for min/max */
+        unsigned mode : 2;
+        unsigned op : 6;
+} __attribute__((packed));
+
 #define BIFROST_FMA_OP_FMA (0x00)
 
 struct bifrost_fma_fma {