To a limited degree, scoreboarding must be global, so add the data
structures for tracking this to the IR.
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14298>
bool td;
} bi_clause;
+#define BI_NUM_SLOTS 8
+
+/* A model for the state of the scoreboard */
+struct bi_scoreboard_state {
+ /** Bitmap of registers read/written by a slot */
+ uint64_t read[BI_NUM_SLOTS];
+ uint64_t write[BI_NUM_SLOTS];
+};
+
typedef struct bi_block {
/* Link to next block. Must be first for mir_get_block */
struct list_head link;
/* Post-RA liveness */
uint64_t reg_live_in, reg_live_out;
+ /* Scoreboard state at the start/end of block */
+ struct bi_scoreboard_state scoreboard_in, scoreboard_out;
+
/* Flags available for pass-internal use */
uint8_t pass_flags;
} bi_block;