summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2013-04-29 22:23:58 +0000
committerTom Stellard <thomas.stellard@amd.com>2013-04-29 22:23:58 +0000
commit119ad03c67ad93acb5830eb364ddd25abaa046e2 (patch)
tree94b9deb0d85bab10301a5c64fa41787b9d1dbb8f
parent8367067e02a84f326aa06cb22cc66805421cfe3f (diff)
downloadbcm5719-llvm-119ad03c67ad93acb5830eb364ddd25abaa046e2.tar.gz
bcm5719-llvm-119ad03c67ad93acb5830eb364ddd25abaa046e2.zip
R600: Use correct CF_END instruction on Northern Island GPUs
llvm-svn: 180735
-rw-r--r--llvm/lib/Target/R600/R600ControlFlowFinalizer.cpp2
-rw-r--r--llvm/test/CodeGen/R600/cf_end.ll7
2 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Target/R600/R600ControlFlowFinalizer.cpp b/llvm/lib/Target/R600/R600ControlFlowFinalizer.cpp
index 9271b3976b5..94736adbabc 100644
--- a/llvm/lib/Target/R600/R600ControlFlowFinalizer.cpp
+++ b/llvm/lib/Target/R600/R600ControlFlowFinalizer.cpp
@@ -123,7 +123,7 @@ private:
Opcode = isEg ? AMDGPU::POP_EG : AMDGPU::POP_R600;
break;
case CF_END:
- if (ST.device()->getGeneration() == AMDGPUDeviceInfo::HD6XXX) {
+ if (ST.device()->getDeviceFlag() == OCL_DEVICE_CAYMAN) {
Opcode = AMDGPU::CF_END_CM;
break;
}
diff --git a/llvm/test/CodeGen/R600/cf_end.ll b/llvm/test/CodeGen/R600/cf_end.ll
index 67d5e3e781c..56cd7de3821 100644
--- a/llvm/test/CodeGen/R600/cf_end.ll
+++ b/llvm/test/CodeGen/R600/cf_end.ll
@@ -1,6 +1,9 @@
-; RUN: llc < %s -march=r600 -mcpu=redwood --show-mc-encoding | FileCheck %s
+; RUN: llc < %s -march=r600 -mcpu=redwood --show-mc-encoding | FileCheck --check-prefix=EG-CHECK %s
+; RUN: llc < %s -march=r600 -mcpu=caicos --show-mc-encoding | FileCheck --check-prefix=EG-CHECK %s
+; RUN: llc < %s -march=r600 -mcpu=cayman --show-mc-encoding | FileCheck --check-prefix=CM-CHECK %s
-; CHECK: CF_END ; encoding: [0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80]
+; EG-CHECK: CF_END ; encoding: [0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x80]
+; CM-CHECK: CF_END ; encoding: [0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88]
define void @eop() {
ret void
}
OpenPOWER on IntegriCloud