diff --git a/src/amd/compiler/aco_dead_code_analysis.cpp b/src/amd/compiler/aco_dead_code_analysis.cpp index d558b688030..4555be58947 100644 --- a/src/amd/compiler/aco_dead_code_analysis.cpp +++ b/src/amd/compiler/aco_dead_code_analysis.cpp @@ -80,18 +80,6 @@ process_block(dce_ctx& ctx, Block& block) } /* end namespace */ -bool -is_dead(const std::vector& uses, Instruction* instr) -{ - if (instr->definitions.empty() || instr->isBranch() || - instr->opcode == aco_opcode::p_init_scratch) - return false; - if (std::any_of(instr->definitions.begin(), instr->definitions.end(), - [&uses](const Definition& def) { return !def.isTemp() || uses[def.tempId()]; })) - return false; - return !(get_sync_info(instr).semantics & (semantic_volatile | semantic_acqrel)); -} - std::vector dead_code_analysis(Program* program) { diff --git a/src/amd/compiler/aco_ir.h b/src/amd/compiler/aco_ir.h index 2b0b4321a31..64a515e1690 100644 --- a/src/amd/compiler/aco_ir.h +++ b/src/amd/compiler/aco_ir.h @@ -33,6 +33,7 @@ #include "nir.h" +#include #include #include #include @@ -1851,7 +1852,19 @@ is_phi(aco_ptr& instr) memory_sync_info get_sync_info(const Instruction* instr); -bool is_dead(const std::vector& uses, Instruction* instr); +inline bool +is_dead(const std::vector& uses, const Instruction* instr) +{ + if (instr->definitions.empty() || instr->isBranch() || + instr->opcode == aco_opcode::p_init_scratch) + return false; + + if (std::any_of(instr->definitions.begin(), instr->definitions.end(), + [&uses](const Definition& def) { return !def.isTemp() || uses[def.tempId()]; })) + return false; + + return !(get_sync_info(instr).semantics & (semantic_volatile | semantic_acqrel)); +} bool can_use_opsel(amd_gfx_level gfx_level, aco_opcode op, int idx); bool instr_is_16bit(amd_gfx_level gfx_level, aco_opcode op);