From fba921bf49bbcd5737aef04adb918b9ea1536c55 Mon Sep 17 00:00:00 2001 From: Job Noorman Date: Fri, 16 Aug 2024 15:54:24 +0200 Subject: [PATCH] ir3: preserve block divergence info in ir3_lower_subgroups We will need this to recalculate reconvergence after opt_jump. Signed-off-by: Job Noorman Part-of: --- src/freedreno/ir3/ir3_lower_subgroups.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/freedreno/ir3/ir3_lower_subgroups.c b/src/freedreno/ir3/ir3_lower_subgroups.c index 6ebf00b4c67..6b65410407f 100644 --- a/src/freedreno/ir3/ir3_lower_subgroups.c +++ b/src/freedreno/ir3/ir3_lower_subgroups.c @@ -203,6 +203,8 @@ split_block(struct ir3 *ir, struct ir3_block *before_block, rem_instr->block = after_block; } + after_block->divergent_condition = before_block->divergent_condition; + before_block->divergent_condition = false; return after_block; } @@ -239,6 +241,10 @@ link_blocks_branch(struct ir3_block *pred, struct ir3_block *target, link_blocks(pred, target, 0); link_blocks(pred, fallthrough, 1); + + if (opc != OPC_BALL && opc != OPC_BANY) { + pred->divergent_condition = true; + } } static struct ir3_block *