summaryrefslogtreecommitdiff
path: root/libclc/r600
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2016-08-20 00:01:21 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2016-08-20 00:01:21 +0000
commit220268d1772796501f73ff91a73939bfd1220526 (patch)
tree8530428dc41694678069b7a731b4924988de29a2 /libclc/r600
parent458f80546857bfb908ebe64e754de7d7df1956db (diff)
downloadllvm-220268d1772796501f73ff91a73939bfd1220526.tar.gz
amdgcn: Fix get_local_size IR return type
llvm-svn: 279350
Diffstat (limited to 'libclc/r600')
-rw-r--r--libclc/r600/lib/SOURCES1
-rw-r--r--libclc/r600/lib/workitem/get_local_size.ll18
2 files changed, 19 insertions, 0 deletions
diff --git a/libclc/r600/lib/SOURCES b/libclc/r600/lib/SOURCES
index 33038f2800fc..23da5028b30a 100644
--- a/libclc/r600/lib/SOURCES
+++ b/libclc/r600/lib/SOURCES
@@ -2,4 +2,5 @@ synchronization/barrier_impl.ll
workitem/get_global_offset.cl
workitem/get_group_id.cl
workitem/get_local_id.cl
+workitem/get_local_size.ll
workitem/get_work_dim.cl
diff --git a/libclc/r600/lib/workitem/get_local_size.ll b/libclc/r600/lib/workitem/get_local_size.ll
new file mode 100644
index 000000000000..136c9c613062
--- /dev/null
+++ b/libclc/r600/lib/workitem/get_local_size.ll
@@ -0,0 +1,18 @@
+declare i32 @llvm.r600.read.local.size.x() nounwind readnone
+declare i32 @llvm.r600.read.local.size.y() nounwind readnone
+declare i32 @llvm.r600.read.local.size.z() nounwind readnone
+
+define i32 @get_local_size(i32 %dim) nounwind readnone alwaysinline {
+ switch i32 %dim, label %default [i32 0, label %x_dim i32 1, label %y_dim i32 2, label %z_dim]
+x_dim:
+ %x = call i32 @llvm.r600.read.local.size.x()
+ ret i32 %x
+y_dim:
+ %y = call i32 @llvm.r600.read.local.size.y()
+ ret i32 %y
+z_dim:
+ %z = call i32 @llvm.r600.read.local.size.z()
+ ret i32 %z
+default:
+ unreachable
+}