summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/R600/SIInsertWaits.cpp
diff options
context:
space:
mode:
authorChristian Konig <christian.koenig@amd.com>2013-03-18 11:33:45 +0000
committerChristian Konig <christian.koenig@amd.com>2013-03-18 11:33:45 +0000
commitf1fd5fad932e6efdc25a0ee0fb6d58b11d2b23d1 (patch)
tree48b222e2ac3d76760edc12d3bf9f7035be5f8d52 /llvm/lib/Target/R600/SIInsertWaits.cpp
parent9138f75d0a3f553f49cfd527ea73986531149447 (diff)
downloadbcm5719-llvm-f1fd5fad932e6efdc25a0ee0fb6d58b11d2b23d1.tar.gz
bcm5719-llvm-f1fd5fad932e6efdc25a0ee0fb6d58b11d2b23d1.zip
R600/SI: fix inserting waits for all defines
Unfortunately the previous fix for inserting waits for unordered defines wasn't sufficient, cause it's possible that even ordered defines are only partially used (or not used at all). Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Tom Stellard <thomas.stellard@amd.com> llvm-svn: 177271
Diffstat (limited to 'llvm/lib/Target/R600/SIInsertWaits.cpp')
-rw-r--r--llvm/lib/Target/R600/SIInsertWaits.cpp16
1 files changed, 1 insertions, 15 deletions
diff --git a/llvm/lib/Target/R600/SIInsertWaits.cpp b/llvm/lib/Target/R600/SIInsertWaits.cpp
index 67fbdf7be16..98bd3dbb664 100644
--- a/llvm/lib/Target/R600/SIInsertWaits.cpp
+++ b/llvm/lib/Target/R600/SIInsertWaits.cpp
@@ -302,21 +302,8 @@ static void increaseCounters(Counters &Dst, const Counters &Src) {
Dst.Array[i] = std::max(Dst.Array[i], Src.Array[i]);
}
-bool SIInsertWaits::unorderedDefines(MachineInstr &MI) {
-
- uint64_t TSFlags = TII->get(MI.getOpcode()).TSFlags;
- if (TSFlags & SIInstrFlags::LGKM_CNT)
- return true;
-
- if (TSFlags & SIInstrFlags::EXP_CNT)
- return ExpInstrTypesSeen == 3;
-
- return false;
-}
-
Counters SIInsertWaits::handleOperands(MachineInstr &MI) {
- bool UnorderedDefines = unorderedDefines(MI);
Counters Result = ZeroCounts;
// For each register affected by this
@@ -329,8 +316,7 @@ Counters SIInsertWaits::handleOperands(MachineInstr &MI) {
if (Op.isDef()) {
increaseCounters(Result, UsedRegs[j]);
- if (UnorderedDefines)
- increaseCounters(Result, DefinedRegs[j]);
+ increaseCounters(Result, DefinedRegs[j]);
}
if (Op.isUse())
OpenPOWER on IntegriCloud