mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 13:48:06 +02:00
ir3/shared_ra: fix live-out reload after src reload
When reloading live-out values along loop back-edges, we make sure to
reuse the original register. However, we failed to detect cases where
the spilled value got reloaded earlier for a src in a different
register. Fix this by reloading the value again in the original
register.
Fixes a RA validation failure in Windrose.
Signed-off-by: Job Noorman <jnoorman@igalia.com>
Fixes: fa22b0901a ("ir3/ra: Add specialized shared register RA/spilling")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41262>
This commit is contained in:
parent
3a8d5aeaa1
commit
aaf4d77f43
1 changed files with 3 additions and 1 deletions
|
|
@ -1246,7 +1246,9 @@ reload_live_outs(struct ra_ctx *ctx, struct ir3_block *block)
|
|||
struct ir3_register *reg = ctx->live->definitions[name];
|
||||
|
||||
struct ra_interval *interval = &ctx->intervals[name];
|
||||
if (!interval->interval.inserted) {
|
||||
if (!interval->interval.inserted ||
|
||||
(interval->spill_def &&
|
||||
interval->physreg_start != interval->physreg_start_orig)) {
|
||||
d("reloading %d at end of backedge", reg->name);
|
||||
|
||||
/* When this interval was spilled inside the loop, we probably chose a
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue