[Libclc-dev] [PATCH] Add vstore_half helpers for ptx

Jan Vesely via Libclc-dev libclc-dev at lists.llvm.org
Tue Oct 3 13:20:01 PDT 2017


On Tue, 2017-10-03 at 22:04 +0200, Jeroen Ketema via Libclc-dev wrote:
> Hi Jan,
> 
> > On 3 Oct 2017, at 21:57, Jan Vesely <jan.vesely at rutgers.edu> wrote:
> > 
> > On Tue, 2017-10-03 at 20:26 +0200, Jeroen Ketema via Libclc-dev wrote:
> > > Index: ptx/lib/SOURCES_4.0
> > > ===================================================================
> > > --- ptx/lib/SOURCES_4.0	(nonexistent)
> > > +++ ptx/lib/SOURCES_4.0	(working copy)
> > > @@ -0,0 +1 @@
> > > +shared/vstore_half_helpers.ll
> > > Index: ptx/lib/SOURCES_5.0
> > > ===================================================================
> > > --- ptx/lib/SOURCES_5.0	(nonexistent)
> > > +++ ptx/lib/SOURCES_5.0	(working copy)
> > 
> > you probably need SOURCES_3.9 as well.
> > or add a comment why it's not needed.
> 
> Yes, if we’re supporting that. I don’t know what the current policy/status is?

llvm-3.9 support was restored last week. I don't have a testing setup
but the generated library is sane (there's even a travis CI to check
that).

> 
> > 
> > > @@ -0,0 +1 @@
> > > +shared/vstore_half_helpers.ll
> > > Index: ptx/lib/shared/vstore_half_helpers.ll
> > > ===================================================================
> > > --- ptx/lib/shared/vstore_half_helpers.ll	(nonexistent)
> > > +++ ptx/lib/shared/vstore_half_helpers.ll	(working copy)
> > 
> > can you add datalayout, or would it prevent sharing the file between
> > ptx and ptx64?
> 
> That would prevent sharing. I wonder if we might come up with some kind of solution
> that adds the data layout at configuration or compilation time?

I was considering passing .ll files through c preprocessor (clang -E
with the same options as .cl compilation), so that you can use things
like #ifdef and #include.
It should not be a lot of work, and it'd allow us to share .ll files
without linker complaints.

> 
> > I assume GENERIC == private and SHARED == local?
> 
> Correct.

just out of curiosity. what's your use case for nvptx libclc?

Jan

> 
> Thanks for the review,
> 
>  Jeroen
> 
> > 
> > other than that
> > Reviewed-by: Jan Vesely <jan.vesely at rutgers.edu <mailto:jan.vesely at rutgers.edu>>
> > 
> > Jan
> > 
> > > @@ -0,0 +1,35 @@
> > > +define void @__clc_vstore_half_float_helper__private(float %data, half addrspace(0)* nocapture %ptr) nounwind alwaysinline {
> > > +  %res = fptrunc float %data to half
> > > +  store half %res, half addrspace(0)* %ptr
> > > +  ret void
> > > +}
> > > +
> > > +define void @__clc_vstore_half_float_helper__global(float %data, half addrspace(1)* nocapture %ptr) nounwind alwaysinline {
> > > +  %res = fptrunc float %data to half
> > > +  store half %res, half addrspace(1)* %ptr
> > > +  ret void
> > > +}
> > > +
> > > +define void @__clc_vstore_half_float_helper__local(float %data, half addrspace(3)* nocapture %ptr) nounwind alwaysinline {
> > > +  %res = fptrunc float %data to half
> > > +  store half %res, half addrspace(3)* %ptr
> > > +  ret void
> > > +}
> > > +
> > > +define void @__clc_vstore_half_double_helper__private(double %data, half addrspace(0)* nocapture %ptr) nounwind alwaysinline {
> > > +  %res = fptrunc double %data to half
> > > +  store half %res, half addrspace(0)* %ptr
> > > +  ret void
> > > +}
> > > +
> > > +define void @__clc_vstore_half_double_helper__global(double %data, half addrspace(1)* nocapture %ptr) nounwind alwaysinline {
> > > +  %res = fptrunc double %data to half
> > > +  store half %res, half addrspace(1)* %ptr
> > > +  ret void
> > > +}
> > > +
> > > +define void @__clc_vstore_half_double_helper__local(double %data, half addrspace(3)* nocapture %ptr) nounwind alwaysinline {
> > > +  %res = fptrunc double %data to half
> > > +  store half %res, half addrspace(3)* %ptr
> > > +  ret void
> > > +}
> > > 
> > > _______________________________________________
> > > 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 <mailto:jan.vesely at rutgers.edu>>
> 
> _______________________________________________
> 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/20171003/57fb7f3f/attachment.sig>


More information about the Libclc-dev mailing list