diff options
-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; |