nir/opt_sink: do not sink inverse_ballot out of loops

Inverse_ballot result is undefined if the input is not dynamically uniform.
And sinking out of loops might make the input divergent.

Fixes: 18a0ff137f ("nir: sink/move inverse_ballot like moves")

Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30906>
This commit is contained in:
Georg Lehmann
2024-08-28 19:03:53 +02:00
committed by Marge Bot
parent 1ec3cc2aed
commit 91f8e32a85
+1
View File
@@ -227,6 +227,7 @@ can_sink_out_of_loop(nir_intrinsic_instr *intrin)
*/
return intrin->intrinsic != nir_intrinsic_load_ubo &&
intrin->intrinsic != nir_intrinsic_load_ubo_vec4 &&
intrin->intrinsic != nir_intrinsic_inverse_ballot &&
intrin->intrinsic != nir_intrinsic_load_ssbo;
}