pan/bi: Add BI_GENERIC property
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 3 Mar 2020 01:46:37 +0000 (20:46 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 5 Mar 2020 14:35:38 +0000 (14:35 +0000)
I don't want to have 20 class-specific structures floating around. So
let's derive them all from a common generic ALU type.

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 914acd1e218711575ab21dfd23fd7b9c38200e1e..0681fbad00d16d3711af6c5acd56b4af4a5bb43f 100644 (file)
 #include "compiler.h"
 
 unsigned bi_class_props[BI_NUM_CLASSES] = {
-        [BI_ADD]               = BI_MODS,
+        [BI_ADD]               = BI_GENERIC | BI_MODS,
         [BI_ATEST]             = 0,
         [BI_BRANCH]            = 0,
-        [BI_CMP]               = BI_MODS,
+        [BI_CMP]               = BI_GENERIC | BI_MODS,
         [BI_BLEND]             = 0,
-        [BI_BITWISE]           = 0,
+        [BI_BITWISE]           = BI_GENERIC,
         [BI_CONVERT]           = 0,
         [BI_CSEL]              = 0,
         [BI_DISCARD]           = 0,
@@ -42,12 +42,12 @@ unsigned bi_class_props[BI_NUM_CLASSES] = {
         [BI_LOAD_ATTR]                 = 0,
         [BI_LOAD_VAR]          = 0,
         [BI_LOAD_VAR_ADDRESS]  = 0,
-        [BI_MINMAX]            = 0,
+        [BI_MINMAX]            = BI_GENERIC,
         [BI_MOV]               = BI_MODS,
         [BI_SHIFT]             = 0,
         [BI_STORE]             = 0,
         [BI_STORE_VAR]                 = 0,
         [BI_SPECIAL]           = 0,
         [BI_TEX]               = 0,
-        [BI_ROUND]             = 0,
+        [BI_ROUND]             = BI_GENERIC,
 };
index 6956a99665c8c64735402ecfaf469c485f81a6b6..823d2e7bc244ec32dd301c3dc14129ddfe88aa73 100644 (file)
@@ -78,6 +78,11 @@ extern unsigned bi_class_props[BI_NUM_CLASSES];
 /* abs/neg/outmod valid for a float op */
 #define BI_MODS (1 << 0)
 
+/* Generic enough that little class-specific information is required. In other
+ * words, it acts as a "normal" ALU op, even if the encoding ends up being
+ * irregular enough to warrant a separate class */
+#define BI_GENERIC (1 << 1)
+
 /* It can't get any worse than csel4... can it? */
 #define BIR_SRC_COUNT 4