From 91f8e32a85fa31afc37bb1308927f5b890410854 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Wed, 28 Aug 2024 19:03:53 +0200 Subject: [PATCH] nir/opt_sink: do not sink inverse_ballot out of loops MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inverse_ballot result is undefined if the input is not dynamically uniform. And sinking out of loops might make the input divergent. Fixes: 18a0ff137ff ("nir: sink/move inverse_ballot like moves") Reviewed-by: Daniel Schürmann Reviewed-by: Alyssa Rosenzweig Part-of: --- src/compiler/nir/nir_opt_sink.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/compiler/nir/nir_opt_sink.c b/src/compiler/nir/nir_opt_sink.c index 8573b21e7a8..1ef33db5007 100644 --- a/src/compiler/nir/nir_opt_sink.c +++ b/src/compiler/nir/nir_opt_sink.c @@ -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; }