ir3: fix crash in try_evict_regs with src reg

try_evict_regs might end up calling check_dst_overlap which only works
for dst regs. Make sure this doesn't happen for src regs.

Fixes: 34803d15ab ("ir3/ra: Add proper support for multiple destinations")
Signed-off-by: Job Noorman <jnoorman@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29497>
This commit is contained in:
Job Noorman 2024-06-17 11:34:25 +02:00 committed by Marge Bot
parent c24aad5867
commit 023c7351f2

View file

@ -870,8 +870,9 @@ try_evict_regs(struct ra_ctx *ctx, struct ra_file *file,
unsigned conflicting_size =
conflicting->physreg_end - conflicting->physreg_start;
if (size >= conflicting_size &&
!check_dst_overlap(ctx, file, reg, avail_start, avail_start +
conflicting_size)) {
(is_source ||
!check_dst_overlap(ctx, file, reg, avail_start,
avail_start + conflicting_size))) {
for (unsigned i = 0;
i < conflicting->physreg_end - conflicting->physreg_start; i++)
BITSET_CLEAR(available_to_evict, avail_start + i);