summaryrefslogtreecommitdiff
path: root/lib/Target/R600/R600MachineScheduler.cpp
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2013-09-12 02:55:06 +0000
committerTom Stellard <thomas.stellard@amd.com>2013-09-12 02:55:06 +0000
commitac779b8494ad3d2f2ea40cb566552c0fb1b17363 (patch)
tree457837e32c2be033d5ef5719cdf5bcb2b5467989 /lib/Target/R600/R600MachineScheduler.cpp
parent8f2f86f8899fcd98405005dbd6195ffa606f5d15 (diff)
downloadllvm-ac779b8494ad3d2f2ea40cb566552c0fb1b17363.tar.gz
llvm-ac779b8494ad3d2f2ea40cb566552c0fb1b17363.tar.bz2
llvm-ac779b8494ad3d2f2ea40cb566552c0fb1b17363.tar.xz
R600: Don't use trans slot for instructions that read LDS source registers
This fixes some regressions in the piglit local memory store tests introduced by recent commits which made the scheduler aware of the trans slot. It's not possible to test this using lit, because there is no way to determine from the assembly dumps whether or not an instruction is in the trans slot. Even if this were possible, the test would be highly sensitive to changes in the scheduler and might generate confusing false negatives. Reviewed-by: Vincent Lejeune<vljn at ovi.com> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190574 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/R600/R600MachineScheduler.cpp')
-rw-r--r--lib/Target/R600/R600MachineScheduler.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/Target/R600/R600MachineScheduler.cpp b/lib/Target/R600/R600MachineScheduler.cpp
index 0499dd52d9..6c26d9ece4 100644
--- a/lib/Target/R600/R600MachineScheduler.cpp
+++ b/lib/Target/R600/R600MachineScheduler.cpp
@@ -314,6 +314,10 @@ R600SchedStrategy::AluKind R600SchedStrategy::getAluKind(SUnit *SU) const {
if (regBelongsToClass(DestReg, &AMDGPU::R600_Reg128RegClass))
return AluT_XYZW;
+ // LDS src registers cannot be used in the Trans slot.
+ if (TII->readsLDSSrcReg(MI))
+ return AluT_XYZW;
+
return AluAny;
}