[Libclc-dev] [PATCH 3/8] Implement half_sqrt builtin

Aaron Watry awatry at gmail.com
Mon Mar 16 09:07:55 PDT 2015


On Thu, Mar 12, 2015 at 8:38 PM, Aaron Watry <awatry at gmail.com> wrote:

> LGTM
>
> On Fri, Mar 6, 2015 at 7:01 PM, Tom Stellard <thomas.stellard at amd.com>
> wrote:
>
>> This is a generic implementation which just calls sqrt.  Targets should
>> override this if they want a faster implementation.
>> ---
>>  generic/include/clc/clc.h            |  1 +
>>  generic/include/clc/math/half_sqrt.h | 31 +++++++++++++++++++++++++++++++
>>  generic/lib/SOURCES                  |  1 +
>>  generic/lib/math/half_sqrt.cl        | 30 ++++++++++++++++++++++++++++++
>>  generic/lib/math/half_sqrt.inc       | 25 +++++++++++++++++++++++++
>>  5 files changed, 88 insertions(+)
>>  create mode 100644 generic/include/clc/math/half_sqrt.h
>>  create mode 100644 generic/lib/math/half_sqrt.cl
>>  create mode 100644 generic/lib/math/half_sqrt.inc
>>
>> diff --git a/generic/include/clc/clc.h b/generic/include/clc/clc.h
>> index 2fb818a..d657cad 100644
>> --- a/generic/include/clc/clc.h
>> +++ b/generic/include/clc/clc.h
>> @@ -48,6 +48,7 @@
>>  #include <clc/math/fmax.h>
>>  #include <clc/math/fmin.h>
>>  #include <clc/math/fmod.h>
>> +#include <clc/math/half_sqrt.h>
>>  #include <clc/math/hypot.h>
>>  #include <clc/math/log.h>
>>  #include <clc/math/log1p.h>
>> diff --git a/generic/include/clc/math/half_sqrt.h
>> b/generic/include/clc/math/half_sqrt.h
>> new file mode 100644
>> index 0000000..5e9c8a9
>> --- /dev/null
>> +++ b/generic/include/clc/math/half_sqrt.h
>> @@ -0,0 +1,31 @@
>> +/*
>> + * Copyright (c) 2014,2015 Advanced Micro Devices, Inc.
>> + *
>> + * Permission is hereby granted, free of charge, to any person obtaining
>> a copy
>> + * of this software and associated documentation files (the "Software"),
>> to deal
>> + * in the Software without restriction, including without limitation the
>> rights
>> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or
>> sell
>> + * copies of the Software, and to permit persons to whom the Software is
>> + * furnished to do so, subject to the following conditions:
>> + *
>> + * The above copyright notice and this permission notice shall be
>> included in
>> + * all copies or substantial portions of the Software.
>> + *
>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> EXPRESS OR
>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>> MERCHANTABILITY,
>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
>> SHALL THE
>> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
>> ARISING FROM,
>> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>> DEALINGS IN
>> + * THE SOFTWARE.
>> + */
>> +
>> +#undef half_sqrt
>> +
>> +#define __CLC_BODY <clc/math/unary_decl.inc>
>> +#define __CLC_FUNCTION half_sqrt
>> +
>> +#include <clc/math/gentype.inc>
>> +
>> +#undef __CLC_BODY
>> +#undef __CLC_FUNCTION
>> diff --git a/generic/lib/SOURCES b/generic/lib/SOURCES
>> index 9ac2c05..fb56135 100644
>> --- a/generic/lib/SOURCES
>> +++ b/generic/lib/SOURCES
>> @@ -64,6 +64,7 @@ math/copysign.cl
>>  math/cos.cl
>>  math/exp.cl
>>  math/exp10.cl
>> +math/half_sqrt.cl
>>
>
I didn't notice this before, but the half_sqrt.cl line is not sorted
alphabetically.

The same issue exists in patch 7 (for half_rsqrt).

--Aaron



>  math/fmax.cl
>>  math/fmin.cl
>>  math/fmod.cl
>> diff --git a/generic/lib/math/half_sqrt.cl b/generic/lib/math/
>> half_sqrt.cl
>> new file mode 100644
>> index 0000000..e1716cf
>> --- /dev/null
>> +++ b/generic/lib/math/half_sqrt.cl
>> @@ -0,0 +1,30 @@
>> +/*
>> + * Copyright (c) 2014,2015 Advanced Micro Devices, Inc.
>> + *
>> + * Permission is hereby granted, free of charge, to any person obtaining
>> a copy
>> + * of this software and associated documentation files (the "Software"),
>> to deal
>> + * in the Software without restriction, including without limitation the
>> rights
>> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or
>> sell
>> + * copies of the Software, and to permit persons to whom the Software is
>> + * furnished to do so, subject to the following conditions:
>> + *
>> + * The above copyright notice and this permission notice shall be
>> included in
>> + * all copies or substantial portions of the Software.
>> + *
>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> EXPRESS OR
>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>> MERCHANTABILITY,
>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
>> SHALL THE
>> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
>> ARISING FROM,
>> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>> DEALINGS IN
>> + * THE SOFTWARE.
>> + */
>> +
>> +#include <clc/clc.h>
>> +
>> +#ifdef cl_khr_fp64
>> +#pragma OPENCL EXTENSION cl_khr_fp64 : enable
>> +#endif
>> +
>> +#define __CLC_BODY <half_sqrt.inc>
>> +#include <clc/math/gentype.inc>
>> diff --git a/generic/lib/math/half_sqrt.inc
>> b/generic/lib/math/half_sqrt.inc
>> new file mode 100644
>> index 0000000..bcdc6a9
>> --- /dev/null
>> +++ b/generic/lib/math/half_sqrt.inc
>> @@ -0,0 +1,25 @@
>> +/*
>> + * Copyright (c) 2014,2015 Advanced Micro Devices, Inc.
>> + *
>> + * Permission is hereby granted, free of charge, to any person obtaining
>> a copy
>> + * of this software and associated documentation files (the "Software"),
>> to deal
>> + * in the Software without restriction, including without limitation the
>> rights
>> + * to use, copy, modify, merge, publish, distribute, sublicense, and/or
>> sell
>> + * copies of the Software, and to permit persons to whom the Software is
>> + * furnished to do so, subject to the following conditions:
>> + *
>> + * The above copyright notice and this permission notice shall be
>> included in
>> + * all copies or substantial portions of the Software.
>> + *
>> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> EXPRESS OR
>> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
>> MERCHANTABILITY,
>> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
>> SHALL THE
>> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
>> ARISING FROM,
>> + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>> DEALINGS IN
>> + * THE SOFTWARE.
>> + */
>> +
>> +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE half_sqrt(__CLC_GENTYPE val) {
>> +  return sqrt(val);
>> +}
>> --
>> 2.0.4
>>
>>
>> _______________________________________________
>> Libclc-dev mailing list
>> Libclc-dev at pcc.me.uk
>> http://www.pcc.me.uk/cgi-bin/mailman/listinfo/libclc-dev
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libclc-dev/attachments/20150316/42a40f77/attachment.html>


More information about the Libclc-dev mailing list