From ec0d0426d6d381df685f7cdd72b9f6103e7ad680 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 29 Dec 2020 17:21:37 -0500 Subject: [PATCH] pan/bi: Add bi_{before,after}_clause cursors Will be needed to insert spill code after scheduling once we have multiple instructions in a clause. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/bifrost/compiler.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/panfrost/bifrost/compiler.h b/src/panfrost/bifrost/compiler.h index db8da72..744cddf 100644 --- a/src/panfrost/bifrost/compiler.h +++ b/src/panfrost/bifrost/compiler.h @@ -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 { -- 2.7.4