From 3b832fe2abb8933e2a0fa4aaab41ce050b53fb36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sch=C3=BCrmann?= Date: Sat, 6 Apr 2024 10:59:09 +0200 Subject: [PATCH] aco/lower_phis: simplify check for uniform predecessors Part-of: --- src/amd/compiler/aco_lower_phis.cpp | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/src/amd/compiler/aco_lower_phis.cpp b/src/amd/compiler/aco_lower_phis.cpp index d8813ce3d83..c140aef5c4d 100644 --- a/src/amd/compiler/aco_lower_phis.cpp +++ b/src/amd/compiler/aco_lower_phis.cpp @@ -25,8 +25,6 @@ enum class pred_defined : uint8_t { MESA_DEFINE_CPP_ENUM_BITFIELD_OPERATORS(pred_defined); struct ssa_state { - bool checked_preds_for_uniform; - bool all_preds_uniform; unsigned loop_nest_depth; std::vector any_pred_defined; @@ -302,16 +300,7 @@ void lower_divergent_bool_phi(Program* program, ssa_state* state, Block* block, aco_ptr& phi) { - if (!state->checked_preds_for_uniform) { - state->all_preds_uniform = !(block->kind & block_kind_merge) && - block->linear_preds.size() == block->logical_preds.size(); - for (unsigned pred : block->logical_preds) - state->all_preds_uniform = - state->all_preds_uniform && (program->blocks[pred].kind & block_kind_uniform); - state->checked_preds_for_uniform = true; - } - - if (state->all_preds_uniform) { + if (block->linear_preds == block->logical_preds) { phi->opcode = aco_opcode::p_linear_phi; return; } @@ -377,7 +366,6 @@ lower_phis(Program* program) ssa_state state; for (Block& block : program->blocks) { - state.checked_preds_for_uniform = false; for (aco_ptr& phi : block.instructions) { if (phi->opcode == aco_opcode::p_phi) { assert(program->wave_size == 64 ? phi->definitions[0].regClass() != s1