[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