From f2cc77dca88075a1a90b90e036178041f233bf8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=C3=A1n=20de=20B=C3=BArca?= Date: Thu, 3 Apr 2025 18:28:07 -0700 Subject: [PATCH] nak: collapse extraneous conditional branches v2: Revert collapsing of branches per review Reviewed-by: Faith Ekstrand Part-of: --- src/nouveau/compiler/nak/from_nir.rs | 15 ++++++++------- src/nouveau/compiler/nak/liveness.rs | 8 +++----- src/nouveau/compiler/nak/opt_uniform_instrs.rs | 6 +----- src/nouveau/compiler/nak/repair_ssa.rs | 14 ++++++-------- 4 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/nouveau/compiler/nak/from_nir.rs b/src/nouveau/compiler/nak/from_nir.rs index 9b67c34850d..9025f18e028 100644 --- a/src/nouveau/compiler/nak/from_nir.rs +++ b/src/nouveau/compiler/nak/from_nir.rs @@ -3650,13 +3650,14 @@ impl<'a> ShaderFromNir<'a> { b.push_op(phi); } - if self.sm.sm() < 70 && nb.cf_node.prev().is_none() { - if let Some(_) = nb.parent().as_loop() { - b.push_op(OpPCnt { - target: self.get_block_label(nb), - }); - self.push_crs(nb, SyncType::Cont); - } + if self.sm.sm() < 70 + && nb.cf_node.prev().is_none() + && nb.parent().as_loop().is_some() + { + b.push_op(OpPCnt { + target: self.get_block_label(nb), + }); + self.push_crs(nb, SyncType::Cont); } let mut goto = None; diff --git a/src/nouveau/compiler/nak/liveness.rs b/src/nouveau/compiler/nak/liveness.rs index 349f2f84d2c..226504407c2 100644 --- a/src/nouveau/compiler/nak/liveness.rs +++ b/src/nouveau/compiler/nak/liveness.rs @@ -260,12 +260,10 @@ impl BlockLiveness for SimpleBlockLiveness { fn is_live_after_ip(&self, val: &SSAValue, ip: usize) -> bool { if self.live_out.get(val.idx().try_into().unwrap()) { true + } else if let Some(last_use_ip) = self.last_use.get(&val.idx()) { + *last_use_ip > ip } else { - if let Some(last_use_ip) = self.last_use.get(&val.idx()) { - *last_use_ip > ip - } else { - false - } + false } } diff --git a/src/nouveau/compiler/nak/opt_uniform_instrs.rs b/src/nouveau/compiler/nak/opt_uniform_instrs.rs index 2ef0b8dc9b4..72809f7dba7 100644 --- a/src/nouveau/compiler/nak/opt_uniform_instrs.rs +++ b/src/nouveau/compiler/nak/opt_uniform_instrs.rs @@ -20,11 +20,7 @@ fn should_lower_to_warp( } }); - if num_non_uniform_srcs >= 2 { - return true; - } - - return false; + num_non_uniform_srcs >= 2 } fn propagate_r2ur( diff --git a/src/nouveau/compiler/nak/repair_ssa.rs b/src/nouveau/compiler/nak/repair_ssa.rs index 07fc1adc197..a95c80798bf 100644 --- a/src/nouveau/compiler/nak/repair_ssa.rs +++ b/src/nouveau/compiler/nak/repair_ssa.rs @@ -61,15 +61,13 @@ fn get_ssa_or_phi( // This is a loop back-edge, add a phi just in case. We'll // remove it later if it's not needed all_same = false; - } else { - if let Some(&p_ssa) = blocks[p_idx].defs.borrow().get(&ssa) { - if *pred_ssa.get_or_insert(p_ssa) != p_ssa { - all_same = false; - } - } else { - worklist.push(Reverse(p_idx)); - pushed_pred = true; + } else if let Some(&p_ssa) = blocks[p_idx].defs.borrow().get(&ssa) { + if *pred_ssa.get_or_insert(p_ssa) != p_ssa { + all_same = false; } + } else { + worklist.push(Reverse(p_idx)); + pushed_pred = true; } }