diff options
author | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2020-01-10 12:28:37 -0800 |
---|---|---|
committer | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2020-01-10 14:56:53 -0800 |
commit | 987bf8b6c14613da907fa78330415e266b97a036 (patch) | |
tree | bd4ccc9df7afe2f37422eee2a558cf0c3ad41e69 /llvm/lib/CodeGen/ScheduleDAGInstrs.cpp | |
parent | 4c00dbf22d7f0ad005444b412b450ee4b4779b6a (diff) | |
download | bcm5719-llvm-987bf8b6c14613da907fa78330415e266b97a036.tar.gz bcm5719-llvm-987bf8b6c14613da907fa78330415e266b97a036.zip |
Let targets adjust operand latency of bundles
This reverts the AMDGPU DAG mutation implemented in D72487 and gives
a more general way of adjusting BUNDLE operand latency.
It also replaces FixBundleLatencyMutation with adjustSchedDependency
callback in the AMDGPU, fixing not only successor latencies but
predecessors' as well.
Differential Revision: https://reviews.llvm.org/D72535
Diffstat (limited to 'llvm/lib/CodeGen/ScheduleDAGInstrs.cpp')
-rw-r--r-- | llvm/lib/CodeGen/ScheduleDAGInstrs.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp b/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp index 96a1f86c3e0..d11406cc330 100644 --- a/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp +++ b/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp @@ -270,8 +270,13 @@ void ScheduleDAGInstrs::addPhysRegDataDeps(SUnit *SU, unsigned OperIdx) { Dep.setLatency(SchedModel.computeOperandLatency(SU->getInstr(), OperIdx, RegUse, UseOp)); ST.adjustSchedDependency(SU, UseSU, Dep); - } else + } else { Dep.setLatency(0); + // FIXME: We could always let target to adjustSchedDependency(), and + // remove this condition, but that currently asserts in Hexagon BE. + if (SU->getInstr()->isBundle() || (RegUse && RegUse->isBundle())) + ST.adjustSchedDependency(SU, UseSU, Dep); + } UseSU->addPred(Dep); } |