pan/bi/ra: Allow offsets on tied sources

The only real requirement here is that the destination offset is zero
and that the destination is big enough to hold the source.  The source
offset doesn't matter.

Fixes: bc17288697 ("pan/bi: Lower split/collect before RA")
Reviewed-by: Lorenzo Rossi <lorenzo.rossi@collabora.com>
(cherry picked from commit 05c5e52054)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40979>
This commit is contained in:
Faith Ekstrand 2026-03-30 18:09:42 -04:00 committed by Eric Engestrom
parent ddf6c31b8e
commit cb93fe85b9
2 changed files with 5 additions and 6 deletions

View file

@ -3954,7 +3954,7 @@
"description": "pan/bi/ra: Allow offsets on tied sources",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "bc17288697f87830f533c2a55ba3503e7423d53a",
"notes": null

View file

@ -918,13 +918,12 @@ bi_coalesce_tied(bi_context *ctx)
bi_builder b = bi_init_builder(ctx, bi_before_instr(I));
unsigned n = bi_count_read_registers(I, 0);
bi_index dst = I->dest[0], src = I->src[0];
assert(dst.offset == 0);
for (unsigned i = 0; i < n; ++i) {
bi_index dst = I->dest[0], src = I->src[0];
assert(dst.offset == 0 && src.offset == 0);
dst.offset = src.offset = i;
bi_mov_i32_to(&b, dst, src);
dst.offset++;
src.offset++;
}
bi_replace_src(I, 0, I->dest[0]);