aco/isel: assert that terminate intrinsics don't appear in loops

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33479>
This commit is contained in:
Daniel Schürmann 2025-02-14 09:41:23 +01:00 committed by Marge Bot
parent 46f6c73d36
commit 7adad4fc0e
2 changed files with 3 additions and 2 deletions

View file

@ -8804,6 +8804,7 @@ visit_intrinsic(isel_context* ctx, nir_intrinsic_instr* instr)
}
case nir_intrinsic_terminate:
case nir_intrinsic_terminate_if: {
assert(ctx->cf_info.parent_loop.exit == NULL && "Terminate must not appear in loops.");
Operand cond = Operand::c32(-1u);
if (instr->intrinsic == nir_intrinsic_terminate_if) {
Temp src = get_ssa_temp(ctx, instr->src[0].ssa);

View file

@ -61,8 +61,8 @@ struct exec_info {
struct cf_context {
struct {
unsigned header_idx;
Block* exit;
unsigned header_idx = 0;
Block* exit = NULL;
bool has_divergent_continue = false;
bool has_divergent_break = false;
} parent_loop;