pan/bi: Recoalesce tied operands after spilling

Otherwise we can fail to allocate tied operands if we spill the tied operand.
Seen in shaders/android/com.miHoYo.GenshinImpact/16.shader_test with a
particularly bad scheduling causing excessive spilling.

No shader-db changes.

Fixes: bc17288697 ("pan/bi: Lower split/collect before RA")
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16378>
This commit is contained in:
Alyssa Rosenzweig
2022-05-24 13:27:59 -04:00
committed by Marge Bot
parent e20718e8fa
commit 2fb5ceab7a

View File

@@ -818,6 +818,11 @@ bi_register_allocate(bi_context *ctx)
spill_count += bi_spill_register(ctx,
bi_node_to_index(spill_node, bi_max_temp(ctx)),
spill_count);
/* In case the spill affected an instruction with tied
* operands, we need to fix up.
*/
bi_coalesce_tied(ctx);
}
}