pan/bi: Add bi_{before,after}_clause cursors
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 29 Dec 2020 22:21:37 +0000 (17:21 -0500)
committerMarge Bot <eric+marge@anholt.net>
Fri, 29 Jan 2021 16:55:43 +0000 (16:55 +0000)
Will be needed to insert spill code after scheduling once we have
multiple instructions in a clause.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8723>

src/panfrost/bifrost/compiler.h

index db8da72..744cddf 100644 (file)
@@ -785,6 +785,32 @@ bi_after_instr(bi_instr *instr)
     };
 }
 
+static inline bi_instr *
+bi_first_instr_in_clause(bi_clause *clause)
+{
+        bi_bundle bundle = clause->bundles[0];
+        return bundle.fma ?: bundle.add;
+}
+
+static inline bi_instr *
+bi_last_instr_in_clause(bi_clause *clause)
+{
+        bi_bundle bundle = clause->bundles[clause->bundle_count - 1];
+        return bundle.add ?: bundle.fma;
+}
+
+static inline bi_cursor
+bi_before_clause(bi_clause *clause)
+{
+    return bi_before_instr(bi_first_instr_in_clause(clause));
+}
+
+static inline bi_cursor
+bi_after_clause(bi_clause *clause)
+{
+    return bi_after_instr(bi_last_instr_in_clause(clause));
+}
+
 /* IR builder in terms of cursor infrastructure */
 
 typedef struct {