summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gallium/drivers/r600/sfn/sfn_optimizer.cpp6
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;