pan/bi: Add class-specific ops
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 3 Mar 2020 12:58:05 +0000 (07:58 -0500)
committerMarge Bot <eric+marge@anholt.net>
Thu, 5 Mar 2020 14:35:38 +0000 (14:35 +0000)
For disambiguating things like min and max within the MINMAX class.

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

src/panfrost/bifrost/compiler.h

index 299cff5b01797a894cafbab78aab1c56495119b4..d4ac239347a52da8f95d08bce7825e11bb5225c1 100644 (file)
@@ -118,6 +118,23 @@ struct bi_load_vary {
         bool flat;
 };
 
+/* Opcodes within a class */
+enum bi_minmax_op {
+        BI_MINMAX_MIN,
+        BI_MINMAX_MAX
+};
+
+enum bi_bitwise_op {
+        BI_BITWISE_AND,
+        BI_BITWISE_OR,
+        BI_BITWISE_XOR
+};
+
+enum bi_round_op {
+        BI_ROUND_MODE, /* use round mode */
+        BI_ROUND_ROUND /* i.e.: fround() */
+};
+
 typedef struct {
         struct list_head link; /* Must be first */
         enum bi_class type;
@@ -150,6 +167,15 @@ typedef struct {
          * int). Zero if there is no destination. Bitsize included */
         nir_alu_type dest_type;
 
+        /* A class-specific op from which the actual opcode can be derived
+         * (along with the above information) */
+
+        union {
+                enum bi_minmax_op minmax;
+                enum bi_bitwise_op bitwise;
+                enum bi_round_op round;
+        } op;
+
         /* Union for class-specific information */
         union {
                 enum bifrost_minmax_mode minmax;