About Social Code
aboutsummaryrefslogtreecommitdiff
path: root/src/asahi/compiler/agx_spill.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/asahi/compiler/agx_spill.c')
-rw-r--r--src/asahi/compiler/agx_spill.c17
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
}