diff options
Diffstat (limited to 'libclc')
-rw-r--r-- | libclc/amdgcn/lib/OVERRIDES | 0 | ||||
-rw-r--r-- | libclc/amdgcn/lib/SOURCES | 1 | ||||
-rw-r--r-- | libclc/amdgcn/lib/synchronization/barrier_impl.ll | 32 | ||||
-rw-r--r-- | libclc/amdgpu/lib/OVERRIDES | 2 | ||||
-rw-r--r-- | libclc/amdgpu/lib/SOURCES | 25 | ||||
-rw-r--r-- | libclc/amdgpu/lib/atomic/atomic.cl (renamed from libclc/r600/lib/atomic/atomic.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/get_image_attributes_impl.ll (renamed from libclc/r600/lib/image/get_image_attributes_impl.ll) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/get_image_channel_data_type.cl (renamed from libclc/r600/lib/image/get_image_channel_data_type.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/get_image_channel_order.cl (renamed from libclc/r600/lib/image/get_image_channel_order.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/get_image_depth.cl (renamed from libclc/r600/lib/image/get_image_depth.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/get_image_height.cl (renamed from libclc/r600/lib/image/get_image_height.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/get_image_width.cl (renamed from libclc/r600/lib/image/get_image_width.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/read_image_impl.ll (renamed from libclc/r600/lib/image/read_image_impl.ll) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/read_imagef.cl (renamed from libclc/r600/lib/image/read_imagef.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/read_imagei.cl (renamed from libclc/r600/lib/image/read_imagei.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/read_imageui.cl (renamed from libclc/r600/lib/image/read_imageui.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/write_image_impl.ll (renamed from libclc/r600/lib/image/write_image_impl.ll) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/write_imagef.cl (renamed from libclc/r600/lib/image/write_imagef.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/write_imagei.cl (renamed from libclc/r600/lib/image/write_imagei.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/image/write_imageui.cl (renamed from libclc/r600/lib/image/write_imageui.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/math/ldexp.cl (renamed from libclc/r600/lib/math/ldexp.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/math/nextafter.cl (renamed from libclc/r600/lib/math/nextafter.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/math/sqrt.cl (renamed from libclc/r600/lib/math/sqrt.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/synchronization/barrier.cl (renamed from libclc/r600/lib/synchronization/barrier.cl) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/workitem/get_global_size.ll (renamed from libclc/r600/lib/workitem/get_global_size.ll) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/workitem/get_group_id.ll (renamed from libclc/r600/lib/workitem/get_group_id.ll) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/workitem/get_local_id.ll (renamed from libclc/r600/lib/workitem/get_local_id.ll) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/workitem/get_local_size.ll (renamed from libclc/r600/lib/workitem/get_local_size.ll) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/workitem/get_num_groups.ll (renamed from libclc/r600/lib/workitem/get_num_groups.ll) | 0 | ||||
-rw-r--r-- | libclc/amdgpu/lib/workitem/get_work_dim.ll (renamed from libclc/r600/lib/workitem/get_work_dim.ll) | 0 | ||||
-rwxr-xr-x | libclc/configure.py | 8 | ||||
-rw-r--r-- | libclc/r600/lib/OVERRIDES | 2 | ||||
-rw-r--r-- | libclc/r600/lib/SOURCES | 25 | ||||
-rw-r--r-- | libclc/r600/lib/synchronization/barrier_impl.ll | 18 |
34 files changed, 75 insertions, 38 deletions
diff --git a/libclc/amdgcn/lib/OVERRIDES b/libclc/amdgcn/lib/OVERRIDES new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/libclc/amdgcn/lib/OVERRIDES diff --git a/libclc/amdgcn/lib/SOURCES b/libclc/amdgcn/lib/SOURCES new file mode 100644 index 00000000000..c99f3fc7052 --- /dev/null +++ b/libclc/amdgcn/lib/SOURCES @@ -0,0 +1 @@ +synchronization/barrier_impl.ll diff --git a/libclc/amdgcn/lib/synchronization/barrier_impl.ll b/libclc/amdgcn/lib/synchronization/barrier_impl.ll new file mode 100644 index 00000000000..1809eddf695 --- /dev/null +++ b/libclc/amdgcn/lib/synchronization/barrier_impl.ll @@ -0,0 +1,32 @@ +declare i32 @__clc_clk_local_mem_fence() #1 +declare i32 @__clc_clk_global_mem_fence() #1 +declare void @llvm.amdgcn.s.barrier() #0 + +define void @barrier(i32 %flags) #2 { +barrier_local_test: + %CLK_LOCAL_MEM_FENCE = call i32 @__clc_clk_local_mem_fence() + %0 = and i32 %flags, %CLK_LOCAL_MEM_FENCE + %1 = icmp ne i32 %0, 0 + br i1 %1, label %barrier_local, label %barrier_global_test + +barrier_local: + call void @llvm.amdgcn.s.barrier() + br label %barrier_global_test + +barrier_global_test: + %CLK_GLOBAL_MEM_FENCE = call i32 @__clc_clk_global_mem_fence() + %2 = and i32 %flags, %CLK_GLOBAL_MEM_FENCE + %3 = icmp ne i32 %2, 0 + br i1 %3, label %barrier_global, label %done + +barrier_global: + call void @llvm.amdgcn.s.barrier() + br label %done + +done: + ret void +} + +attributes #0 = { nounwind convergent } +attributes #1 = { nounwind alwaysinline } +attributes #2 = { nounwind convergent alwaysinline } diff --git a/libclc/amdgpu/lib/OVERRIDES b/libclc/amdgpu/lib/OVERRIDES new file mode 100644 index 00000000000..3f941d890be --- /dev/null +++ b/libclc/amdgpu/lib/OVERRIDES @@ -0,0 +1,2 @@ +workitem/get_group_id.cl +workitem/get_global_size.cl diff --git a/libclc/amdgpu/lib/SOURCES b/libclc/amdgpu/lib/SOURCES new file mode 100644 index 00000000000..7505f3f9692 --- /dev/null +++ b/libclc/amdgpu/lib/SOURCES @@ -0,0 +1,25 @@ +atomic/atomic.cl +math/ldexp.cl +math/nextafter.cl +math/sqrt.cl +workitem/get_num_groups.ll +workitem/get_group_id.ll +workitem/get_local_size.ll +workitem/get_local_id.ll +workitem/get_global_size.ll +workitem/get_work_dim.ll +synchronization/barrier.cl +image/get_image_width.cl +image/get_image_height.cl +image/get_image_depth.cl +image/get_image_channel_data_type.cl +image/get_image_channel_order.cl +image/get_image_attributes_impl.ll +image/read_imagef.cl +image/read_imagei.cl +image/read_imageui.cl +image/read_image_impl.ll +image/write_imagef.cl +image/write_imagei.cl +image/write_imageui.cl +image/write_image_impl.ll diff --git a/libclc/r600/lib/atomic/atomic.cl b/libclc/amdgpu/lib/atomic/atomic.cl index 5bfe07b94bf..5bfe07b94bf 100644 --- a/libclc/r600/lib/atomic/atomic.cl +++ b/libclc/amdgpu/lib/atomic/atomic.cl diff --git a/libclc/r600/lib/image/get_image_attributes_impl.ll b/libclc/amdgpu/lib/image/get_image_attributes_impl.ll index 7f1965de760..7f1965de760 100644 --- a/libclc/r600/lib/image/get_image_attributes_impl.ll +++ b/libclc/amdgpu/lib/image/get_image_attributes_impl.ll diff --git a/libclc/r600/lib/image/get_image_channel_data_type.cl b/libclc/amdgpu/lib/image/get_image_channel_data_type.cl index 2a2478f73a7..2a2478f73a7 100644 --- a/libclc/r600/lib/image/get_image_channel_data_type.cl +++ b/libclc/amdgpu/lib/image/get_image_channel_data_type.cl diff --git a/libclc/r600/lib/image/get_image_channel_order.cl b/libclc/amdgpu/lib/image/get_image_channel_order.cl index 91e9b89e17e..91e9b89e17e 100644 --- a/libclc/r600/lib/image/get_image_channel_order.cl +++ b/libclc/amdgpu/lib/image/get_image_channel_order.cl diff --git a/libclc/r600/lib/image/get_image_depth.cl b/libclc/amdgpu/lib/image/get_image_depth.cl index 18646458e9a..18646458e9a 100644 --- a/libclc/r600/lib/image/get_image_depth.cl +++ b/libclc/amdgpu/lib/image/get_image_depth.cl diff --git a/libclc/r600/lib/image/get_image_height.cl b/libclc/amdgpu/lib/image/get_image_height.cl index 80b364090c3..80b364090c3 100644 --- a/libclc/r600/lib/image/get_image_height.cl +++ b/libclc/amdgpu/lib/image/get_image_height.cl diff --git a/libclc/r600/lib/image/get_image_width.cl b/libclc/amdgpu/lib/image/get_image_width.cl index 29e4e9468ba..29e4e9468ba 100644 --- a/libclc/r600/lib/image/get_image_width.cl +++ b/libclc/amdgpu/lib/image/get_image_width.cl diff --git a/libclc/r600/lib/image/read_image_impl.ll b/libclc/amdgpu/lib/image/read_image_impl.ll index 229a2526c37..229a2526c37 100644 --- a/libclc/r600/lib/image/read_image_impl.ll +++ b/libclc/amdgpu/lib/image/read_image_impl.ll diff --git a/libclc/r600/lib/image/read_imagef.cl b/libclc/amdgpu/lib/image/read_imagef.cl index af80adad189..af80adad189 100644 --- a/libclc/r600/lib/image/read_imagef.cl +++ b/libclc/amdgpu/lib/image/read_imagef.cl diff --git a/libclc/r600/lib/image/read_imagei.cl b/libclc/amdgpu/lib/image/read_imagei.cl index b973aae94a0..b973aae94a0 100644 --- a/libclc/r600/lib/image/read_imagei.cl +++ b/libclc/amdgpu/lib/image/read_imagei.cl diff --git a/libclc/r600/lib/image/read_imageui.cl b/libclc/amdgpu/lib/image/read_imageui.cl index ec9836e7ec2..ec9836e7ec2 100644 --- a/libclc/r600/lib/image/read_imageui.cl +++ b/libclc/amdgpu/lib/image/read_imageui.cl diff --git a/libclc/r600/lib/image/write_image_impl.ll b/libclc/amdgpu/lib/image/write_image_impl.ll index 265f5d6045e..265f5d6045e 100644 --- a/libclc/r600/lib/image/write_image_impl.ll +++ b/libclc/amdgpu/lib/image/write_image_impl.ll diff --git a/libclc/r600/lib/image/write_imagef.cl b/libclc/amdgpu/lib/image/write_imagef.cl index 4483fcf68db..4483fcf68db 100644 --- a/libclc/r600/lib/image/write_imagef.cl +++ b/libclc/amdgpu/lib/image/write_imagef.cl diff --git a/libclc/r600/lib/image/write_imagei.cl b/libclc/amdgpu/lib/image/write_imagei.cl index 394a223d0a8..394a223d0a8 100644 --- a/libclc/r600/lib/image/write_imagei.cl +++ b/libclc/amdgpu/lib/image/write_imagei.cl diff --git a/libclc/r600/lib/image/write_imageui.cl b/libclc/amdgpu/lib/image/write_imageui.cl index 91344de8a1d..91344de8a1d 100644 --- a/libclc/r600/lib/image/write_imageui.cl +++ b/libclc/amdgpu/lib/image/write_imageui.cl diff --git a/libclc/r600/lib/math/ldexp.cl b/libclc/amdgpu/lib/math/ldexp.cl index 80439ce3a43..80439ce3a43 100644 --- a/libclc/r600/lib/math/ldexp.cl +++ b/libclc/amdgpu/lib/math/ldexp.cl diff --git a/libclc/r600/lib/math/nextafter.cl b/libclc/amdgpu/lib/math/nextafter.cl index 4611c81ae91..4611c81ae91 100644 --- a/libclc/r600/lib/math/nextafter.cl +++ b/libclc/amdgpu/lib/math/nextafter.cl diff --git a/libclc/r600/lib/math/sqrt.cl b/libclc/amdgpu/lib/math/sqrt.cl index 3e5b17c5db0..3e5b17c5db0 100644 --- a/libclc/r600/lib/math/sqrt.cl +++ b/libclc/amdgpu/lib/math/sqrt.cl diff --git a/libclc/r600/lib/synchronization/barrier.cl b/libclc/amdgpu/lib/synchronization/barrier.cl index 6f2900b06ee..6f2900b06ee 100644 --- a/libclc/r600/lib/synchronization/barrier.cl +++ b/libclc/amdgpu/lib/synchronization/barrier.cl diff --git a/libclc/r600/lib/workitem/get_global_size.ll b/libclc/amdgpu/lib/workitem/get_global_size.ll index ac2d08d8ee1..ac2d08d8ee1 100644 --- a/libclc/r600/lib/workitem/get_global_size.ll +++ b/libclc/amdgpu/lib/workitem/get_global_size.ll diff --git a/libclc/r600/lib/workitem/get_group_id.ll b/libclc/amdgpu/lib/workitem/get_group_id.ll index 0dc86e5edfe..0dc86e5edfe 100644 --- a/libclc/r600/lib/workitem/get_group_id.ll +++ b/libclc/amdgpu/lib/workitem/get_group_id.ll diff --git a/libclc/r600/lib/workitem/get_local_id.ll b/libclc/amdgpu/lib/workitem/get_local_id.ll index ac5522a7822..ac5522a7822 100644 --- a/libclc/r600/lib/workitem/get_local_id.ll +++ b/libclc/amdgpu/lib/workitem/get_local_id.ll diff --git a/libclc/r600/lib/workitem/get_local_size.ll b/libclc/amdgpu/lib/workitem/get_local_size.ll index 0a98de683ae..0a98de683ae 100644 --- a/libclc/r600/lib/workitem/get_local_size.ll +++ b/libclc/amdgpu/lib/workitem/get_local_size.ll diff --git a/libclc/r600/lib/workitem/get_num_groups.ll b/libclc/amdgpu/lib/workitem/get_num_groups.ll index a708f422c27..a708f422c27 100644 --- a/libclc/r600/lib/workitem/get_num_groups.ll +++ b/libclc/amdgpu/lib/workitem/get_num_groups.ll diff --git a/libclc/r600/lib/workitem/get_work_dim.ll b/libclc/amdgpu/lib/workitem/get_work_dim.ll index 1f86b5e05f5..1f86b5e05f5 100644 --- a/libclc/r600/lib/workitem/get_work_dim.ll +++ b/libclc/amdgpu/lib/workitem/get_work_dim.ll diff --git a/libclc/configure.py b/libclc/configure.py index d591ef8251b..2663212a3cf 100755 --- a/libclc/configure.py +++ b/libclc/configure.py @@ -69,8 +69,8 @@ llvm_version = string.split(string.replace(llvm_config(['--version']), 'svn', '' llvm_int_version = int(llvm_version[0]) * 100 + int(llvm_version[1]) * 10 llvm_string_version = 'LLVM' + llvm_version[0] + '.' + llvm_version[1] -if llvm_int_version < 370: - print "libclc requires LLVM >= 3.7" +if llvm_int_version < 390: + print "libclc requires LLVM >= 3.9" sys.exit(1) llvm_system_libs = llvm_config(['--system-libs']) @@ -175,8 +175,8 @@ for target in targets: subdirs.append("%s-%s-%s" % (arch, t_vendor, t_os)) subdirs.append("%s-%s" % (arch, t_os)) subdirs.append(arch) - if arch == 'amdgcn': - subdirs.append('r600') + if arch == 'amdgcn' or arch == 'r600': + subdirs.append('amdgpu') incdirs = filter(os.path.isdir, [os.path.join(srcdir, subdir, 'include') for subdir in subdirs]) diff --git a/libclc/r600/lib/OVERRIDES b/libclc/r600/lib/OVERRIDES index 3f941d890be..e69de29bb2d 100644 --- a/libclc/r600/lib/OVERRIDES +++ b/libclc/r600/lib/OVERRIDES @@ -1,2 +0,0 @@ -workitem/get_group_id.cl -workitem/get_global_size.cl diff --git a/libclc/r600/lib/SOURCES b/libclc/r600/lib/SOURCES index 029b22c1049..c99f3fc7052 100644 --- a/libclc/r600/lib/SOURCES +++ b/libclc/r600/lib/SOURCES @@ -1,26 +1 @@ -atomic/atomic.cl -math/ldexp.cl -math/nextafter.cl -math/sqrt.cl -workitem/get_num_groups.ll -workitem/get_group_id.ll -workitem/get_local_size.ll -workitem/get_local_id.ll -workitem/get_global_size.ll -workitem/get_work_dim.ll -synchronization/barrier.cl synchronization/barrier_impl.ll -image/get_image_width.cl -image/get_image_height.cl -image/get_image_depth.cl -image/get_image_channel_data_type.cl -image/get_image_channel_order.cl -image/get_image_attributes_impl.ll -image/read_imagef.cl -image/read_imagei.cl -image/read_imageui.cl -image/read_image_impl.ll -image/write_imagef.cl -image/write_imagei.cl -image/write_imageui.cl -image/write_image_impl.ll diff --git a/libclc/r600/lib/synchronization/barrier_impl.ll b/libclc/r600/lib/synchronization/barrier_impl.ll index 3d8ee66bab6..825b2eb6c78 100644 --- a/libclc/r600/lib/synchronization/barrier_impl.ll +++ b/libclc/r600/lib/synchronization/barrier_impl.ll @@ -1,9 +1,9 @@ -declare i32 @__clc_clk_local_mem_fence() nounwind alwaysinline -declare i32 @__clc_clk_global_mem_fence() nounwind alwaysinline -declare void @llvm.AMDGPU.barrier.local() nounwind noduplicate -declare void @llvm.AMDGPU.barrier.global() nounwind noduplicate +declare i32 @__clc_clk_local_mem_fence() #1 +declare i32 @__clc_clk_global_mem_fence() #1 +declare void @llvm.AMDGPU.barrier.local() #0 +declare void @llvm.AMDGPU.barrier.global() #0 -define void @barrier(i32 %flags) nounwind noduplicate alwaysinline { +define void @barrier(i32 %flags) #2 { barrier_local_test: %CLK_LOCAL_MEM_FENCE = call i32 @__clc_clk_local_mem_fence() %0 = and i32 %flags, %CLK_LOCAL_MEM_FENCE @@ -11,7 +11,7 @@ barrier_local_test: br i1 %1, label %barrier_local, label %barrier_global_test barrier_local: - call void @llvm.AMDGPU.barrier.local() noduplicate + call void @llvm.AMDGPU.barrier.local() br label %barrier_global_test barrier_global_test: @@ -21,9 +21,13 @@ barrier_global_test: br i1 %3, label %barrier_global, label %done barrier_global: - call void @llvm.AMDGPU.barrier.global() noduplicate + call void @llvm.AMDGPU.barrier.global() br label %done done: ret void } + +attributes #0 = { nounwind convergent } +attributes #1 = { nounwind alwaysinline } +attributes #2 = { nounwind convergent alwaysinline } |