[libclc] 07/21: amdgcn-amdhsa: Add get_global_size() implementation

Andreas Boll aboll-guest at moszumanska.debian.org
Mon Feb 13 13:58:30 UTC 2017


This is an automated email from the git hooks/post-receive script.

aboll-guest pushed a commit to branch master
in repository libclc.

commit e5d8ead2822f8ef8dc600cc555e1259835eb96c5
Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Fri Sep 16 22:43:29 2016 +0000

    amdgcn-amdhsa: Add get_global_size() implementation
    
    git-svn-id: https://llvm.org/svn/llvm-project/libclc/trunk@281791 91177308-0d34-0410-b5e6-96231b3b80d8
---
 amdgcn-amdhsa/lib/SOURCES                     |  1 +
 amdgcn-amdhsa/lib/workitem/get_global_size.ll | 39 +++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/amdgcn-amdhsa/lib/SOURCES b/amdgcn-amdhsa/lib/SOURCES
index b33368d..257942c 100644
--- a/amdgcn-amdhsa/lib/SOURCES
+++ b/amdgcn-amdhsa/lib/SOURCES
@@ -1 +1,2 @@
+workitem/get_global_size.ll
 workitem/get_local_size.ll
diff --git a/amdgcn-amdhsa/lib/workitem/get_global_size.ll b/amdgcn-amdhsa/lib/workitem/get_global_size.ll
new file mode 100644
index 0000000..af0f2ea
--- /dev/null
+++ b/amdgcn-amdhsa/lib/workitem/get_global_size.ll
@@ -0,0 +1,39 @@
+declare i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr() #0
+
+define i64 @get_global_size(i32 %dim) #1 {
+  %dispatch_ptr = call noalias nonnull dereferenceable(64) i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr()
+  switch i32 %dim, label %default [
+    i32 0, label %x
+    i32 1, label %y
+    i32 2, label %z
+  ]
+
+x:
+  %ptr_x = getelementptr inbounds i8, i8 addrspace(2)* %dispatch_ptr, i64 12
+  %ptr_x32 = bitcast i8 addrspace(2)* %ptr_x to i32 addrspace(2)*
+  %x32 = load i32, i32 addrspace(2)* %ptr_x32, align 4, !invariant.load !0
+  %size_x = zext i32 %x32 to i64
+  ret i64 %size_x
+
+y:
+  %ptr_y = getelementptr inbounds i8, i8 addrspace(2)* %dispatch_ptr, i64 16
+  %ptr_y32 = bitcast i8 addrspace(2)* %ptr_y to i32 addrspace(2)*
+  %y32 = load i32, i32 addrspace(2)* %ptr_y32, align 4, !invariant.load !0
+  %size_y = zext i32 %y32 to i64
+  ret i64 %size_y
+
+z:
+  %ptr_z = getelementptr inbounds i8, i8 addrspace(2)* %dispatch_ptr, i64 20
+  %ptr_z32 = bitcast i8 addrspace(2)* %ptr_z to i32 addrspace(2)*
+  %z32 = load i32, i32 addrspace(2)* %ptr_z32, align 4, !invariant.load !0
+  %size_z = zext i32 %z32 to i64
+  ret i64 %size_z
+
+default:
+  ret i64 1
+}
+
+attributes #0 = { nounwind readnone }
+attributes #1 = { alwaysinline norecurse nounwind readonly }
+
+!0 = !{}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opencl/libclc.git



More information about the Pkg-opencl-commits mailing list