From 830d6de9ffca4791f28d8af88cf034e286990824 Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sat, 13 Dec 2025 15:03:32 +0100 Subject: [PATCH] aco/isel: optimize pack_32_2x16_split(undef, const) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák Acked-by: Daniel Schürmann Part-of: --- .../compiler/instruction_selection/aco_select_nir_alu.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/amd/compiler/instruction_selection/aco_select_nir_alu.cpp b/src/amd/compiler/instruction_selection/aco_select_nir_alu.cpp index b400a49073a..ffbaab95a57 100644 --- a/src/amd/compiler/instruction_selection/aco_select_nir_alu.cpp +++ b/src/amd/compiler/instruction_selection/aco_select_nir_alu.cpp @@ -3139,8 +3139,12 @@ visit_alu_instr(isel_context* ctx, nir_alu_instr* instr) } else if (nir_src_is_undef(instr->src[1].src)) { bld.copy(Definition(dst), src0); } else if (nir_src_is_undef(instr->src[0].src)) { - bld.pseudo(aco_opcode::p_insert, Definition(dst), bld.def(s1, scc), src1, Operand::c32(1), - Operand::c32(16)); + if (nir_src_is_const(instr->src[1].src)) { + bld.copy(Definition(dst), Operand::c32(nir_src_as_uint(instr->src[1].src) << 16)); + } else { + bld.pseudo(aco_opcode::p_insert, Definition(dst), bld.def(s1, scc), src1, + Operand::c32(1), Operand::c32(16)); + } } else if (ctx->program->gfx_level >= GFX9) { bld.sop2(aco_opcode::s_pack_ll_b32_b16, Definition(dst), src0, src1); } else {