[Libclc-dev] [PATCH 0/2] modf math builtin

Matt Arsenault via Libclc-dev libclc-dev at lists.llvm.org
Mon Jan 18 15:41:03 PST 2016


On 01/18/2016 01:36 AM, Pavel Ondračka via Libclc-dev wrote:
> Attached is the implementation of modf math builtin copied from AMD
> builtin library.
>
> This is my first patch ever so please be patient with review. My main
> motivation was to get einstein at home binary pulsar search app working.
> With this patch series the kernels build succesfully however the result
> are wrong, there are probably some other problems (or I messed up).
>
> I've done some casual testing and at least the float part seems to be
> working properly, the fp64 part is totally untested.
>
> Will piglit tests be needed to get this accepted? I had a look at the
> gen_cl_math_builtins.py piglit script, however it seems I would have to
> modify the framework to be able to test functions that have two outputs.
> Sadly my python skills are rudimentary.
For these kinds of patches I think it's best if somebody just runs the 
opencl conformance tests for you to verify them.


>
>
> Pavel Ondračka (2):
>    Add _CLC_V_V_VP_VECTORIZE macro
>    Implement modf builtin
>
>   generic/include/clc/clc.h         |  1 +
>   generic/include/clc/math/modf.h   | 24 ++++++++++
>   generic/include/clc/math/modf.inc | 25 +++++++++++
>   generic/lib/SOURCES               |  1 +
>   generic/lib/clcmacro.h            | 22 ++++++++++
>   generic/lib/math/modf.cl          | 92 +++++++++++++++++++++++++++++++++++++++
>   6 files changed, 165 insertions(+)
>   create mode 100644 generic/include/clc/math/modf.h
>   create mode 100644 generic/include/clc/math/modf.inc
>   create mode 100644 generic/lib/math/modf.cl
>


Does the pseudocode in the OpenCL documentation implementation for this 
function work?

        gentype modf ( gentype value, gentype *iptr )
           {
                     *iptr = trunc( value );
                     return copysign( isinf( value ) ? 0.0 : value - 
*iptr, value );
           }

I would expect this to be faster on CI+ for fp64 due to the native trunc 
instruction, although this implementation is probably better for 
hardware without it. The start of this looks a bit like an inlined ftrunc





More information about the Libclc-dev mailing list