diff options
author | Gert Wollny <gert.wollny@collabora.com> | 2023-08-06 20:42:07 +0200 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2023-08-06 19:05:47 +0000 |
commit | 807c0d6bb75ecf150f39480f2f492b4dd195d14d (patch) | |
tree | 4facfe5899d3a40ccd2fb6d60ab13d22550697e1 | |
parent | bcfa71a6d09297ed8adc24f8910d0726bbd45d8e (diff) |
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 <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24519>
-rw-r--r-- | src/gallium/drivers/r600/sfn/sfn_optimizer.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
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; |