pan/bi: Add interference between destinations

Trying to write to overlapping register ranges from a single
instruction is undefined behaviour, so add interference between the
nodes to avoid this.

Hit in a dual-texture instruction in LIMBO.

Fixes: 9146bafbb4 ("pan/bi: Add dual texture fusing pass")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15250>
This commit is contained in:
Icecream95 2022-02-14 16:20:47 +13:00 committed by Alyssa Rosenzweig
parent 198cb4a77a
commit 9e714f7455
1 changed files with 6 additions and 0 deletions

View File

@ -246,6 +246,12 @@ bi_mark_interference(bi_block *block, struct lcra_state *l, uint8_t *live, uint6
bi_writemask(ins, d), i, live[i]);
}
}
unsigned node_first = bi_get_node(ins->dest[0]);
if (d == 1 && node_first < node_count) {
lcra_add_node_interference(l, node, bi_writemask(ins, 1),
node_first, bi_writemask(ins, 0));
}
}
/* Valhall needs >= 64-bit staging reads to be pair-aligned */