[Libclc-dev] [PATCH 1/1] math: Use single precision builtin in sp fdim path

Jan Vesely via Libclc-dev libclc-dev at lists.llvm.org
Sat May 14 12:37:24 PDT 2016


On Sat, 2016-05-14 at 03:49 +0000, Aaron Watry wrote:
> On Fri, May 13, 2016, 7:49 PM Tom Stellard via Libclc-dev <
> libclc-dev at lists.llvm.org> wrote:
> 
> > 
> > On Fri, May 13, 2016 at 08:36:18PM -0400, Jan Vesely via Libclc-dev 
> > wrote:
> > > 
> > > Fixes fdim piglit on Turks
> > > 
> > > Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> > > ---
> > > 
> > > Not sure when llvm started inserting double promotion:
> > > <unknown>:0:0: in function test_1_fdim_float void (float
> > > addrspace(1)*,
> > float addrspace(1)*, float addrspace(1)*): unsupported call to
> > function
> > __extendsfdf2
> > > 
> > > 
> > >  generic/lib/math/fdim.inc | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/generic/lib/math/fdim.inc
> > > b/generic/lib/math/fdim.inc
> > > index a67c76e..0e57513 100644
> > > --- a/generic/lib/math/fdim.inc
> > > +++ b/generic/lib/math/fdim.inc
> > > @@ -25,7 +25,7 @@
> > >  _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE fdim(__CLC_GENTYPE x,
> > __CLC_GENTYPE y) {
> > > 
> > >      if (__builtin_isnan(x) || __builtin_isnan(y))
> > >          return as_float(QNANBITPATT_SP32);
> > > -    return __builtin_fmax(x - y, 0);
> > > +    return __builtin_fmaxf(x - y, 0);
> > Is there a reason we aren't just calling the OpenCL builtin fmax ?
> > 
> Reason? Or good reason?
> 
> If we change this to either __builtin_fmaxf or fmax (I'd go with
> that),
> should we also make that an explicit 0.0f?

Even with 0, the compiler should pick the correct fmax variant (1
conversion vs. 2 conversions), though I agree that the code would be
nicer.

My reason for sticking with __builtin_fmaxf was that there are no
overloads and it forces conversion to float.
It also provides kind of separation between API and it's
implementation, but I'm not sure we wollow it in libclc.

I'll send v2 using 'fmax(x -y, 0.0f)' if that's the consensus.

Jan

> 
> --Aaron
> 
> 
> > 
> > -Tom
> > 
> > > 
> > >  }
> > >  #define __CLC_FDIM_VEC(width) \
> > >  _CLC_OVERLOAD _CLC_DEF float##width fdim(float##width x,
> > > float##width
> > y) { \
> > > 
> > > --
> > > 2.5.5
> > > 
> > > _______________________________________________
> > > 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: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/libclc-dev/attachments/20160514/f7b2f93f/attachment.sig>


More information about the Libclc-dev mailing list