From e699a4181c146371d90b771dd8ca563553326b1e Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Thu, 9 Mar 2023 14:53:34 +0100 Subject: [PATCH] aco: keep label_mul/usedef/minmax in apply_extract 16bit int mad/fma/minmax combining can work with opsel set. All other optimizations should already check if the instruction uses sdwa, because we don't check this when applying the label initially. Reviewed-by: Rhys Perry Part-of: --- src/amd/compiler/aco_optimizer.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index 3c84c510616..f7d45c4dd2a 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -1190,11 +1190,13 @@ apply_extract(opt_ctx& ctx, aco_ptr& instr, unsigned idx, ssa_info& return; } - /* Output modifier, label_vopc and label_f2f32 seem to be the only one worth keeping at the - * moment - */ - for (Definition& def : instr->definitions) - ctx.info[def.tempId()].label &= (label_vopc | label_f2f32 | instr_mod_labels); + /* These are the only labels worth keeping at the moment. */ + for (Definition& def : instr->definitions) { + ctx.info[def.tempId()].label &= + (label_mul | label_minmax | label_usedef | label_vopc | label_f2f32 | instr_mod_labels); + if (ctx.info[def.tempId()].label & instr_usedef_labels) + ctx.info[def.tempId()].instr = instr.get(); + } } void