From 807c0d6bb75ecf150f39480f2f492b4dd195d14d Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Sun, 6 Aug 2023 20:42:07 +0200 Subject: [PATCH] r600/sfn: Take source uses into account when switching channels When we switch the channels by re-creating vec4 values we have to take into account that the source values may be used in an ALU op, and with that we have to take read-port limitations into account. Fixes: 18a8d148d862d4a0f5b83f4385f00cf8a4a71b6d r600/sfn: Cleanup copy-prop into vec4 source values Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/sfn/sfn_optimizer.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp b/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp index 4cd969c6658..5ab1e880cad 100644 --- a/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp @@ -592,6 +592,12 @@ CopyPropFwdVisitor::propagate_to(RegisterVec4& value, Instr *instr) allowed_mask &= alu->allowed_dest_chan_mask(); } + for (auto u : src->uses()) { + auto alu = u->as_alu(); + if (alu) + allowed_mask &= alu->allowed_src_chan_mask(); + } + if (!allowed_mask) return;