mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 15:58:05 +02:00
agx: Make DCE dumber
The current DCE pass hits issue around phi nodes. These need to be solved properly eventually, but for now workaround them by doing something obviously correct (but suboptimal compile time). Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16268>
This commit is contained in:
parent
606d9340f3
commit
4791dc9125
1 changed files with 18 additions and 11 deletions
|
|
@ -28,10 +28,22 @@
|
|||
void
|
||||
agx_dce(agx_context *ctx)
|
||||
{
|
||||
BITSET_WORD *seen = calloc(BITSET_WORDS(ctx->alloc), sizeof(BITSET_WORD));
|
||||
bool progress;
|
||||
do {
|
||||
progress = false;
|
||||
|
||||
BITSET_WORD *seen = calloc(BITSET_WORDS(ctx->alloc), sizeof(BITSET_WORD));
|
||||
|
||||
agx_foreach_instr_global(ctx, I) {
|
||||
agx_foreach_src(I, s) {
|
||||
if (I->src[s].type == AGX_INDEX_NORMAL)
|
||||
BITSET_SET(seen, I->src[s].value);
|
||||
}
|
||||
}
|
||||
|
||||
agx_foreach_instr_global_safe_rev(ctx, I) {
|
||||
if (!agx_opcodes_info[I->op].can_eliminate) continue;
|
||||
|
||||
agx_foreach_instr_global_safe_rev(ctx, I) {
|
||||
if (agx_opcodes_info[I->op].can_eliminate) {
|
||||
bool needed = false;
|
||||
|
||||
agx_foreach_dest(I, d) {
|
||||
|
|
@ -43,15 +55,10 @@ agx_dce(agx_context *ctx)
|
|||
|
||||
if (!needed) {
|
||||
agx_remove_instruction(I);
|
||||
continue;
|
||||
progress = true;
|
||||
}
|
||||
}
|
||||
|
||||
agx_foreach_src(I, s) {
|
||||
if (I->src[s].type == AGX_INDEX_NORMAL)
|
||||
BITSET_SET(seen, I->src[s].value);
|
||||
}
|
||||
}
|
||||
|
||||
free(seen);
|
||||
free(seen);
|
||||
} while (progress);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue