[libclc] r265713 - [AMDGPU] Implement get_local_size for amdgcn--amdhsa triple

Konstantin Zhuravlyov via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 7 12:54:20 PDT 2016


Author: kzhuravl
Date: Thu Apr  7 14:54:19 2016
New Revision: 265713

URL: http://llvm.org/viewvc/llvm-project?rev=265713&view=rev
Log:
[AMDGPU] Implement get_local_size for amdgcn--amdhsa triple

Differential Revision: http://reviews.llvm.org/D18284

Added:
    libclc/trunk/amdgcn-amdhsa/
    libclc/trunk/amdgcn-amdhsa/lib/
    libclc/trunk/amdgcn-amdhsa/lib/OVERRIDES
    libclc/trunk/amdgcn-amdhsa/lib/SOURCES
    libclc/trunk/amdgcn-amdhsa/lib/workitem/
    libclc/trunk/amdgcn-amdhsa/lib/workitem/get_local_size.ll
Modified:
    libclc/trunk/.gitignore
    libclc/trunk/configure.py

Modified: libclc/trunk/.gitignore
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/.gitignore?rev=265713&r1=265712&r2=265713&view=diff
==============================================================================
--- libclc/trunk/.gitignore (original)
+++ libclc/trunk/.gitignore Thu Apr  7 14:54:19 2016
@@ -1,5 +1,6 @@
 Makefile
 amdgcn--
+amdgcn--amdhsa
 build/*.pyc
 built_libs/
 generic--

Added: libclc/trunk/amdgcn-amdhsa/lib/OVERRIDES
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/amdgcn-amdhsa/lib/OVERRIDES?rev=265713&view=auto
==============================================================================
    (empty)

Added: libclc/trunk/amdgcn-amdhsa/lib/SOURCES
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/amdgcn-amdhsa/lib/SOURCES?rev=265713&view=auto
==============================================================================
--- libclc/trunk/amdgcn-amdhsa/lib/SOURCES (added)
+++ libclc/trunk/amdgcn-amdhsa/lib/SOURCES Thu Apr  7 14:54:19 2016
@@ -0,0 +1 @@
+workitem/get_local_size.ll

Added: libclc/trunk/amdgcn-amdhsa/lib/workitem/get_local_size.ll
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/amdgcn-amdhsa/lib/workitem/get_local_size.ll?rev=265713&view=auto
==============================================================================
--- libclc/trunk/amdgcn-amdhsa/lib/workitem/get_local_size.ll (added)
+++ libclc/trunk/amdgcn-amdhsa/lib/workitem/get_local_size.ll Thu Apr  7 14:54:19 2016
@@ -0,0 +1,35 @@
+declare i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr() #0
+
+define i32 @get_local_size(i32 %dim) #1 {
+  %dispatch_ptr = call noalias nonnull dereferenceable(64) i8 addrspace(2)* @llvm.amdgcn.dispatch.ptr()
+  %dispatch_ptr_i32 = bitcast i8 addrspace(2)* %dispatch_ptr to i32 addrspace(2)*
+  %xy_size_ptr = getelementptr inbounds i32, i32 addrspace(2)* %dispatch_ptr_i32, i64 1
+  %xy_size = load i32, i32 addrspace(2)* %xy_size_ptr, align 4, !invariant.load !0
+  switch i32 %dim, label %default [
+    i32 0, label %x_dim
+    i32 1, label %y_dim
+    i32 2, label %z_dim
+  ]
+
+x_dim:
+  %x_size = and i32 %xy_size, 65535
+  ret i32 %x_size
+
+y_dim:
+  %y_size = lshr i32 %xy_size, 16
+  ret i32 %y_size
+
+z_dim:
+  %z_size_ptr = getelementptr inbounds i32, i32 addrspace(2)* %dispatch_ptr_i32, i64 2
+  %z_size = load i32, i32 addrspace(2)* %z_size_ptr, align 4, !invariant.load !0, !range !1
+  ret i32 %z_size
+
+default:
+  ret i32 1
+}
+
+attributes #0 = { nounwind readnone }
+attributes #1 = { alwaysinline norecurse nounwind readonly }
+
+!0 = !{}
+!1 = !{ i32 0, i32 257 }

Modified: libclc/trunk/configure.py
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/configure.py?rev=265713&r1=265712&r2=265713&view=diff
==============================================================================
--- libclc/trunk/configure.py (original)
+++ libclc/trunk/configure.py Thu Apr  7 14:54:19 2016
@@ -102,6 +102,9 @@ available_targets = {
   'amdgcn--': { 'devices' :
                 [{'gpu' : 'tahiti', 'aliases' : ['pitcairn', 'verde', 'oland', 'hainan', 'bonaire', 'kabini', 'kaveri', 'hawaii','mullins','tonga','carrizo','iceland','fiji','stoney'],
                  'defines' : {}} ]},
+  'amdgcn--amdhsa': { 'devices' :
+                      [{'gpu' : '', 'aliases' : ['bonaire', 'hawaii', 'kabini', 'kaveri', 'mullins', 'carrizo', 'stoney', 'fiji', 'iceland', 'tonga'],
+                       'defines' : {}} ]},
   'nvptx--'   : { 'devices' : [{'gpu' : '', 'aliases' : [],
                                 'defines' : {'all' : ['cl_khr_fp64']}}]},
   'nvptx64--' : { 'devices' : [{'gpu' : '', 'aliases' : [],
@@ -112,7 +115,7 @@ available_targets = {
                                         'defines' : {'all' : ['cl_khr_fp64']}}]},
 }
 
-default_targets = ['nvptx--nvidiacl', 'nvptx64--nvidiacl', 'r600--', 'amdgcn--']
+default_targets = ['nvptx--nvidiacl', 'nvptx64--nvidiacl', 'r600--', 'amdgcn--', 'amdgcn--amdhsa']
 
 targets = args
 if not targets:




More information about the cfe-commits mailing list