From 0cceab788eb68f46e05c674d8fa33a7a65bc63bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Thu, 6 Oct 2022 10:21:55 -0500 Subject: [PATCH] aco: Move is_dead to aco_ir.h to allow it to get inlined. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Timur Kristóf Reviewed-by: Daniel Schürmann Part-of: --- src/amd/compiler/aco_dead_code_analysis.cpp | 12 ------------ src/amd/compiler/aco_ir.h | 15 ++++++++++++++- 2 files changed, 14 insertions(+), 13 deletions(-) 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);