diff options
Diffstat (limited to 'src/asahi/compiler/agx_spill.c')
| -rw-r--r-- | src/asahi/compiler/agx_spill.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/src/asahi/compiler/agx_spill.c b/src/asahi/compiler/agx_spill.c index 98c318aa8a3..2ea287ddc7e 100644 --- a/src/asahi/compiler/agx_spill.c +++ b/src/asahi/compiler/agx_spill.c @@ -8,6 +8,7 @@ #include "util/bitset.h" #include "util/hash_table.h" #include "util/ralloc.h" +#include "util/sparse_bitset.h" #include "util/u_dynarray.h" #include "util/u_qsort.h" #include "agx_builder.h" @@ -849,7 +850,7 @@ compute_w_entry_loop_header(struct spill_ctx *ctx) agx_block *block = ctx->block; struct spill_block *sb = spill_block(ctx, block); - unsigned nP = __bitset_count(block->live_in, BITSET_WORDS(ctx->n)); + unsigned nP = u_sparse_bitset_count(&block->live_in); struct candidate *candidates = calloc(nP, sizeof(struct candidate)); unsigned j = 0; @@ -996,12 +997,12 @@ compute_s_entry(struct spill_ctx *ctx) for (unsigned i = 0; i < sp->nS_exit; ++i) { v = sp->S_exit[i]; - if (BITSET_TEST(ctx->block->live_in, v)) + if (u_sparse_bitset_test(&ctx->block->live_in, v)) BITSET_SET(ctx->S, v); } } - BITSET_FOREACH_SET(v, ctx->block->live_in, ctx->n) { + U_SPARSE_BITSET_FOREACH_SET(&ctx->block->live_in, v) { if (!BITSET_TEST(ctx->W, v)) BITSET_SET(ctx->S, v); } @@ -1142,23 +1143,21 @@ validate_next_use_info(UNUSED agx_context *ctx, UNUSED struct spill_block *blocks) { #ifndef NDEBUG - int i; - agx_foreach_block(ctx, blk) { struct spill_block *sb = &blocks[blk->index]; /* Invariant: next-use distance is finite iff the node is live */ - BITSET_FOREACH_SET(i, blk->live_in, ctx->alloc) + U_SPARSE_BITSET_FOREACH_SET(&blk->live_in, i) assert(search_next_uses(&sb->next_use_in, i) < DIST_INFINITY); - BITSET_FOREACH_SET(i, blk->live_out, ctx->alloc) + U_SPARSE_BITSET_FOREACH_SET(&blk->live_out, i) assert(search_next_uses(&sb->next_use_out, i) < DIST_INFINITY); foreach_next_use(&sb->next_use_in, i, _) - assert(BITSET_TEST(blk->live_in, i)); + assert(u_sparse_bitset_test(&blk->live_in, i)); foreach_next_use(&sb->next_use_out, i, _) - assert(BITSET_TEST(blk->live_out, i)); + assert(u_sparse_bitset_test(&blk->live_out, i)); } #endif } |