pan/bi: Finish FMA structures
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fri, 27 Mar 2020 19:51:20 +0000 (15:51 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 31 Mar 2020 01:12:26 +0000 (01:12 +0000)
There were some missing fields for the 32-bit case, and the 16-bit case
has separate packing.

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 a6508440cbb0a3c22f5b0babf4cf97546cdb5c46..77a641d71357cb0e6fde34aa6b6099f54ddac663 100644 (file)
@@ -211,12 +211,29 @@ struct bifrost_fma_fma {
         unsigned src2 : 3;
         unsigned src_expand : 3;
         unsigned src0_abs : 1;
-        unsigned unk : 4;
-        unsigned src0_neg : 1;
+        enum bifrost_roundmode roundmode : 2;
+        enum bifrost_outmod outmod : 2;
+        unsigned src0_neg : 1; /* 14 */
         unsigned src2_neg : 1;
         unsigned src1_abs : 1;
-        unsigned src2_abs : 1;
-        unsigned op : 5;
+        unsigned src2_abs : 1; /* 17 */
+        unsigned op : 2;
+} __attribute__((packed));
+
+#define BIFROST_FMA_OP_FMA16 (0x2)
+
+struct bifrost_fma_fma16 {
+        unsigned src0 : 3;
+        unsigned src1 : 3;
+        unsigned src2 : 3;
+        unsigned swizzle_0 : 2;
+        unsigned swizzle_1 : 2;
+        enum bifrost_roundmode roundmode : 2;
+        enum bifrost_outmod outmod : 2;
+        unsigned src0_neg : 1;
+        unsigned src2_neg : 1;
+        unsigned swizzle_2 : 2;
+        unsigned op : 2;
 } __attribute__((packed));
 
 enum bifrost_csel_cond {