agx: track block divergence
conservative for now. we'll need this for correctness. Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36399>
This commit is contained in:
@@ -2560,6 +2560,9 @@ agx_create_block(agx_context *ctx)
|
||||
{
|
||||
agx_block *blk = rzalloc(ctx, agx_block);
|
||||
|
||||
/* This is conservative, TODO: divergence analysis */
|
||||
blk->divergent = ctx->total_nesting > 0;
|
||||
|
||||
util_dynarray_init(&blk->predecessors, blk);
|
||||
|
||||
return blk;
|
||||
|
||||
@@ -452,6 +452,9 @@ typedef struct agx_block {
|
||||
struct util_dynarray predecessors;
|
||||
bool unconditional_jumps;
|
||||
|
||||
/* Could there be masked execution? */
|
||||
bool divergent;
|
||||
|
||||
/* Liveness analysis results */
|
||||
BITSET_WORD *live_in;
|
||||
BITSET_WORD *live_out;
|
||||
|
||||
Reference in New Issue
Block a user