<br><br><div class="gmail_quote"><div dir="ltr">On Fri, Sep 1, 2017, 7:37 PM Jan Vesely via Libclc-dev <<a href="mailto:libclc-dev@lists.llvm.org">libclc-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, 2017-08-15 at 18:23 -0400, Jan Vesely wrote:<br>
> We don't have memory fences for r600 so just call group barrier directly<br>
><br>
> Signed-off-by: Jan Vesely <<a href="mailto:jan.vesely@rutgers.edu" target="_blank">jan.vesely@rutgers.edu</a>><br>
> ---<br>
>  amdgpu/lib/SOURCES                       |  1 -<br>
>  amdgpu/lib/synchronization/<a href="http://barrier.cl" rel="noreferrer" target="_blank">barrier.cl</a>    | 10 ----------<br>
>  r600/lib/synchronization/barrier_impl.ll | 31 +++++--------------------------<br>
>  3 files changed, 5 insertions(+), 37 deletions(-)<br>
>  delete mode 100644 amdgpu/lib/synchronization/<a href="http://barrier.cl" rel="noreferrer" target="_blank">barrier.cl</a><br>
><br>
> diff --git a/amdgpu/lib/SOURCES b/amdgpu/lib/SOURCES<br>
> index 9379ad7..f817538 100644<br>
> --- a/amdgpu/lib/SOURCES<br>
> +++ b/amdgpu/lib/SOURCES<br>
> @@ -1,7 +1,6 @@<br>
>  atomic/<a href="http://atomic.cl" rel="noreferrer" target="_blank">atomic.cl</a><br>
>  math/<a href="http://nextafter.cl" rel="noreferrer" target="_blank">nextafter.cl</a><br>
>  math/<a href="http://sqrt.cl" rel="noreferrer" target="_blank">sqrt.cl</a><br>
> -synchronization/<a href="http://barrier.cl" rel="noreferrer" target="_blank">barrier.cl</a><br>
>  image/<a href="http://get_image_width.cl" rel="noreferrer" target="_blank">get_image_width.cl</a><br>
>  image/<a href="http://get_image_height.cl" rel="noreferrer" target="_blank">get_image_height.cl</a><br>
>  image/<a href="http://get_image_depth.cl" rel="noreferrer" target="_blank">get_image_depth.cl</a><br>
> diff --git a/amdgpu/lib/synchronization/<a href="http://barrier.cl" rel="noreferrer" target="_blank">barrier.cl</a> b/amdgpu/lib/synchronization/<a href="http://barrier.cl" rel="noreferrer" target="_blank">barrier.cl</a><br>
> deleted file mode 100644<br>
> index 6f2900b..0000000<br>
> --- a/amdgpu/lib/synchronization/<a href="http://barrier.cl" rel="noreferrer" target="_blank">barrier.cl</a><br>
> +++ /dev/null<br>
> @@ -1,10 +0,0 @@<br>
> -<br>
> -#include <clc/clc.h><br>
> -<br>
> -_CLC_DEF int __clc_clk_local_mem_fence() {<br>
> -  return CLK_LOCAL_MEM_FENCE;<br>
> -}<br>
> -<br>
> -_CLC_DEF int __clc_clk_global_mem_fence() {<br>
> -  return CLK_GLOBAL_MEM_FENCE;<br>
> -}<br>
> diff --git a/r600/lib/synchronization/barrier_impl.ll b/r600/lib/synchronization/barrier_impl.ll<br>
> index 9b8fefb..777001a 100644<br>
> --- a/r600/lib/synchronization/barrier_impl.ll<br>
> +++ b/r600/lib/synchronization/barrier_impl.ll<br>
> @@ -1,32 +1,11 @@<br>
> -declare i32 @__clc_clk_local_mem_fence() #1<br>
> -declare i32 @__clc_clk_global_mem_fence() #1<br>
>  declare void @llvm.r600.group.barrier() #0<br>
><br>
> -define void @barrier(i32 %flags) #2 {<br>
> -barrier_local_test:<br>
> -  %CLK_LOCAL_MEM_FENCE = call i32 @__clc_clk_local_mem_fence()<br>
> -  %0 = and i32 %flags, %CLK_LOCAL_MEM_FENCE<br>
> -  %1 = icmp ne i32 %0, 0<br>
> -  br i1 %1, label %barrier_local, label %barrier_global_test<br>
> -<br>
> -barrier_local:<br>
> -  call void @llvm.r600.group.barrier()<br>
> -  br label %barrier_global_test<br>
> -<br>
> -barrier_global_test:<br>
> -  %CLK_GLOBAL_MEM_FENCE = call i32 @__clc_clk_global_mem_fence()<br>
> -  %2 = and i32 %flags, %CLK_GLOBAL_MEM_FENCE<br>
> -  %3 = icmp ne i32 %2, 0<br>
> -  br i1 %3, label %barrier_global, label %done<br>
> -<br>
> -barrier_global:<br>
> -  call void @llvm.r600.group.barrier()<br>
> -  br label %done<br>
> -<br>
> -done:<br>
> +define void @barrier(i32 %flags) #1 {<br>
> +entry:<br>
> +  ; We should call mem_fence here, but that is not implemented for r600 yet<br>
> +  tail call void @llvm.r600.group.barrier()<br>
>    ret void<br>
>  }<br>
><br>
>  attributes #0 = { nounwind convergent }<br>
> -attributes #1 = { nounwind alwaysinline }<br>
> -attributes #2 = { nounwind convergent alwaysinline }<br>
> +attributes #1 = { nounwind convergent alwaysinline }<br>
<br>
ping. these are minor cleanups<br></blockquote></div><div><br></div><div>Sorry, this looks fine to me, and I think it fixes a bug where no barrier would get triggered if flags was 0.</div><div><br></div><div>--Aaroon</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Jan_______________________________________________<br>
Libclc-dev mailing list<br>
<a href="mailto:Libclc-dev@lists.llvm.org" target="_blank">Libclc-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev</a><br>
</blockquote></div>