pan/bi: Account for MEMMOV in bi_record_sizes

Reviewed-by: Eric R. Smith <eric.smith@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39305>
This commit is contained in:
Christoph Pillmayer 2025-12-15 15:55:37 +01:00 committed by Marge Bot
parent 0654c98b5e
commit 2fd5b8a391

View file

@ -1391,6 +1391,7 @@ bi_record_sizes(bi_context *ctx, uint32_t *sizes)
assert(sizes[idx] == 0 && "SSA broken");
switch (I->op) {
case BI_OPCODE_PHI:
case BI_OPCODE_MEMMOV:
break;
default:
sizes[idx] = bi_count_write_registers(I, d);
@ -1411,6 +1412,28 @@ bi_record_sizes(bi_context *ctx, uint32_t *sizes)
}
}
}
/* After we know PHI sizes, determine MEMMOV sizes. */
bi_foreach_instr_global(ctx, I) {
if (I->op != BI_OPCODE_MEMMOV || I->dest[0].type != BI_INDEX_NORMAL)
continue;
if (I->dest[0].memory) {
assert(!I->src[0].memory);
sizes[I->dest[0].value] = sizes[I->src[0].value];
}
}
bi_foreach_instr_global(ctx, I) {
if (I->op != BI_OPCODE_MEMMOV || I->dest[0].type != BI_INDEX_NORMAL)
continue;
if (!I->dest[0].memory) {
assert(I->src[0].memory);
sizes[I->dest[0].value] = sizes[I->src[0].value];
}
}
}
static void