pan/bi: Clarify special op scheduling
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 3 Mar 2020 13:16:50 +0000 (08:16 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 5 Mar 2020 14:35:38 +0000 (14:35 +0000)
They're encoded on ADD but eat the full cycle.

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

src/panfrost/bifrost/bi_tables.c
src/panfrost/bifrost/compiler.h

index cf3e774efd860c4023b9eb62f43c558a51fd5ff2..97244817301ffb4c7ccd640047e2d8de953b36bf 100644 (file)
@@ -47,7 +47,7 @@ unsigned bi_class_props[BI_NUM_CLASSES] = {
         [BI_SHIFT]             = BI_SCHED_ALL,
         [BI_STORE]             = BI_SCHED_ADD,
         [BI_STORE_VAR]                 = BI_SCHED_ADD,
-        [BI_SPECIAL]           = BI_SCHED_ALL,
+        [BI_SPECIAL]           = BI_SCHED_ADD | BI_SCHED_SLOW,
         [BI_TEX]               = BI_SCHED_ADD,
         [BI_ROUND]             = BI_GENERIC | BI_ROUNDMODE | BI_SCHED_ALL,
 };
index ed9dd751910f6e2f297af5ded1957662d6027dd0..6eddf448ad793aaed3a4a0ea28d5affa269e7dad 100644 (file)
@@ -95,6 +95,10 @@ extern unsigned bi_class_props[BI_NUM_CLASSES];
 /* Most ALU ops can do either, actually */
 #define BI_SCHED_ALL (BI_SCHED_FMA | BI_SCHED_ADD)
 
+/* Along with setting BI_SCHED_ADD, eats up the entire cycle, so FMA must be
+ * nopped out. Used for _FAST operations. */
+#define BI_SCHED_SLOW (1 << 5)
+
 /* It can't get any worse than csel4... can it? */
 #define BIR_SRC_COUNT 4