[Libclc-dev] [PATCH 2/2] r600: Cleanup barrier implementation.

Jan Vesely via Libclc-dev libclc-dev at lists.llvm.org
Fri Sep 1 17:37:10 PDT 2017


On Tue, 2017-08-15 at 18:23 -0400, Jan Vesely wrote:
> We don't have memory fences for r600 so just call group barrier directly
> 
> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> ---
>  amdgpu/lib/SOURCES                       |  1 -
>  amdgpu/lib/synchronization/barrier.cl    | 10 ----------
>  r600/lib/synchronization/barrier_impl.ll | 31 +++++--------------------------
>  3 files changed, 5 insertions(+), 37 deletions(-)
>  delete mode 100644 amdgpu/lib/synchronization/barrier.cl
> 
> diff --git a/amdgpu/lib/SOURCES b/amdgpu/lib/SOURCES
> index 9379ad7..f817538 100644
> --- a/amdgpu/lib/SOURCES
> +++ b/amdgpu/lib/SOURCES
> @@ -1,7 +1,6 @@
>  atomic/atomic.cl
>  math/nextafter.cl
>  math/sqrt.cl
> -synchronization/barrier.cl
>  image/get_image_width.cl
>  image/get_image_height.cl
>  image/get_image_depth.cl
> diff --git a/amdgpu/lib/synchronization/barrier.cl b/amdgpu/lib/synchronization/barrier.cl
> deleted file mode 100644
> index 6f2900b..0000000
> --- a/amdgpu/lib/synchronization/barrier.cl
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -
> -#include <clc/clc.h>
> -
> -_CLC_DEF int __clc_clk_local_mem_fence() {
> -  return CLK_LOCAL_MEM_FENCE;
> -}
> -
> -_CLC_DEF int __clc_clk_global_mem_fence() {
> -  return CLK_GLOBAL_MEM_FENCE;
> -}
> diff --git a/r600/lib/synchronization/barrier_impl.ll b/r600/lib/synchronization/barrier_impl.ll
> index 9b8fefb..777001a 100644
> --- a/r600/lib/synchronization/barrier_impl.ll
> +++ b/r600/lib/synchronization/barrier_impl.ll
> @@ -1,32 +1,11 @@
> -declare i32 @__clc_clk_local_mem_fence() #1
> -declare i32 @__clc_clk_global_mem_fence() #1
>  declare void @llvm.r600.group.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.r600.group.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.r600.group.barrier()
> -  br label %done
> -
> -done:
> +define void @barrier(i32 %flags) #1 {
> +entry:
> +  ; We should call mem_fence here, but that is not implemented for r600 yet
> +  tail call void @llvm.r600.group.barrier()
>    ret void
>  }
>  
>  attributes #0 = { nounwind convergent }
> -attributes #1 = { nounwind alwaysinline }
> -attributes #2 = { nounwind convergent alwaysinline }
> +attributes #1 = { nounwind convergent alwaysinline }

ping. these are minor cleanups

Jan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/libclc-dev/attachments/20170901/64649de4/attachment-0001.sig>


More information about the Libclc-dev mailing list