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

Jan Vesely via Libclc-dev libclc-dev at lists.llvm.org
Mon Sep 4 00:26:08 PDT 2017


On Sat, 2017-09-02 at 17:04 +0000, Aaron Watry via Libclc-dev wrote:
> On Fri, Sep 1, 2017, 7:37 PM Jan Vesely via Libclc-dev <
> libclc-dev at lists.llvm.org> wrote:
> 
> > 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
> > 
> 
> Sorry, this looks fine to me, and I think it fixes a bug where no barrier
> would get triggered if flags was 0.

thanks. I've mentioned it in the commit message.
Can I consider it RB? does it cover 1/2 as well?

regards,
Jan

> 
> --Aaroon
> 
> > 
> > Jan_______________________________________________
> > Libclc-dev mailing list
> > Libclc-dev at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev
> > 
> 
> _______________________________________________
> Libclc-dev mailing list
> Libclc-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev

-- 
Jan Vesely <jan.vesely at rutgers.edu>
-------------- 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/20170904/7e6ee632/attachment.sig>


More information about the Libclc-dev mailing list