mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-15 22:08:17 +02:00
nir/divergence: Fix nir_block::divergent in presence of divergent breaks
If no second pass is necessary, we might miss setting nir_block::divergent to true, if a loop has a divergent break. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39934>
This commit is contained in:
parent
a57b900a59
commit
eabd7cc22c
1 changed files with 6 additions and 0 deletions
|
|
@ -1523,6 +1523,12 @@ visit_loop(nir_loop *loop, struct divergence_state *state)
|
|||
loop_state.first_visit = false;
|
||||
} while (repeat);
|
||||
|
||||
/* Ensure that nir_block::divergent is set correctly. */
|
||||
if (loop_state.divergent_loop_break || state->divergent_cf) {
|
||||
nir_foreach_block_in_cf_node(block, &loop->cf_node)
|
||||
block->divergent = true;
|
||||
}
|
||||
|
||||
loop->divergent_continue = loop_state.divergent_loop_continue;
|
||||
loop->divergent_break = loop_state.divergent_loop_break;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue