From 52f8167b254efbc48abe343da4f22365ee5f47f2 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sun, 17 Apr 2022 14:32:34 +0200 Subject: [PATCH] aco/optimizer: Convert s_add_u32 with literals to s_add_i32 if carry is not used. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit To allow further optimizations to s_addk_i32. Signed-off-by: Georg Lehmann Reviewed-by: Daniel Schürmann Part-of: --- src/amd/compiler/aco_optimizer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index b4bf499..8af27ce 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -4604,6 +4604,11 @@ apply_literals(opt_ctx& ctx, aco_ptr& instr) } } + /* allow more s_addk_i32 optimizations if carry isn't used */ + if (instr->opcode == aco_opcode::s_add_u32 && ctx.uses[instr->definitions[1].tempId()] == 0 && + (instr->operands[0].isLiteral() || instr->operands[1].isLiteral())) + instr->opcode = aco_opcode::s_add_i32; + ctx.instructions.emplace_back(std::move(instr)); } -- 2.7.4