From 86795a6337706492dd16ffdd62e1776a07f63ce3 Mon Sep 17 00:00:00 2001 From: Job Noorman Date: Tue, 19 Nov 2024 08:53:07 +0100 Subject: [PATCH] ir3: fold shared movs into other movs Handle cases like this in ir3_shared_fold: cov.f32f16 sssa_1, c0.x mov.u16u16 ssa_2, sssa_1 => cov.f32f16 ssa_1, c0.x Signed-off-by: Job Noorman Part-of: --- src/freedreno/ir3/ir3_shared_folding.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/freedreno/ir3/ir3_shared_folding.c b/src/freedreno/ir3/ir3_shared_folding.c index 5443880d12e..ee62a4c59e0 100644 --- a/src/freedreno/ir3/ir3_shared_folding.c +++ b/src/freedreno/ir3/ir3_shared_folding.c @@ -72,6 +72,12 @@ try_shared_folding(struct ir3_instruction *mov, void *mem_ctx) return false; } else if (src->opc == OPC_LDC) { src->flags &= ~IR3_INSTR_U; + } else if (src->opc == OPC_MOV) { + /* This catches cases like: + * cov.f32f16 sssa_1, c0.x + * mov.u16u16 ssa_2, sssa_1 + * The cov can directly write to a non-shared reg. + */ } else { return false; }