Hello community, here is the log from the commit of package libclc for openSUSE:Factory checked in at 2016-07-16 22:11:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libclc (Old) and /work/SRC/openSUSE:Factory/.libclc.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libclc" Changes: -------- --- /work/SRC/openSUSE:Factory/libclc/libclc.changes 2015-12-27 01:57:39.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.libclc.new/libclc.changes 2016-07-16 22:11:49.000000000 +0200 @@ -1,0 +2,15 @@ +Sun Jul 03 08:32:55 UTC 2016 - [email protected] + +- Update to version 0.2.0+git.20160209: + * integer: remove explicit casts from _MIN definitions + * AMDGPU: Add alias for tonga + * AMDGPU: Add aliases for all VI targets + * Add _CLC_V_V_VP_VECTORIZE macro + * Implement modf math builtin + * math: Add frexp ported from amd-builtins + * math: Fix log2 vectorization on non-fp64 hw + * configure: Introduce per device defines + * configure: Remove cl_khr_fp64 for device that don't support doubles + * configure: Remove llvm 3.6 defines + +------------------------------------------------------------------- Old: ---- libclc-0.2.0+git20151006.6d78407.tar.xz New: ---- _servicedata libclc-0.2.0+git.20160209.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libclc.spec ++++++ --- /var/tmp/diff_new_pack.d9aKtb/_old 2016-07-16 22:11:50.000000000 +0200 +++ /var/tmp/diff_new_pack.d9aKtb/_new 2016-07-16 22:11:50.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package libclc # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: libclc -Version: 0.2.0+git20151006.6d78407 +Version: 0.2.0+git.20160209 Release: 0 Summary: OpenCL C programming language library License: BSD-3-Clause or MIT @@ -27,11 +27,10 @@ Source1: %{name}-rpmlintrc BuildRequires: gcc BuildRequires: libstdc++-devel -BuildRequires: libtool BuildRequires: llvm-clang-devel BuildRequires: llvm-devel >= 3.7 BuildRequires: ncurses-devel -BuildRequires: pkg-config +BuildRequires: pkgconfig BuildRequires: python BuildRequires: zlib-devel BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -55,11 +54,10 @@ --enable-runtime-subnormal \ --pkgconfigdir=%{_libdir}/pkgconfig/ \ --libexecdir=%{_libdir}/clc/ - make %{?_smp_mflags} VERBOSE=1 %install -make DESTDIR=%{buildroot} install %{?_smp_mflags} +%make_install %files %defattr(-,root,root) ++++++ _service ++++++ --- /var/tmp/diff_new_pack.d9aKtb/_old 2016-07-16 22:11:50.000000000 +0200 +++ /var/tmp/diff_new_pack.d9aKtb/_new 2016-07-16 22:11:50.000000000 +0200 @@ -3,8 +3,9 @@ <param name="scm">git</param> <param name="url">https://github.com/llvm-mirror/libclc.git</param> <param name="submodules">enable</param> - <param name="versionformat">0.2.0+git%cd.%h</param> - <param name="revision">6d784075bc56815b0fc493690572c893979abbdd</param> + <param name="changesgenerate">enable</param> + <param name="revision">b518692b52a0bbdf9cf0e2167b9629dd9501abcd</param> + <param name="versionformat">0.2.0+git.%cd</param> </service> <service name="recompress" mode="disabled"> <param name="compression">xz</param> ++++++ _servicedata ++++++ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/llvm-mirror/libclc.git</param> <param name="changesrevision">b518692b52a0bbdf9cf0e2167b9629dd9501abcd</param> </service> </servicedata> ++++++ libclc-0.2.0+git20151006.6d78407.tar.xz -> libclc-0.2.0+git.20160209.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/configure.py new/libclc-0.2.0+git.20160209/configure.py --- old/libclc-0.2.0+git20151006.6d78407/configure.py 2015-12-01 06:52:51.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/configure.py 2016-07-03 10:32:55.000000000 +0200 @@ -91,16 +91,25 @@ available_targets = { 'r600--' : { 'devices' : - [{'gpu' : 'cedar', 'aliases' : ['palm', 'sumo', 'sumo2', 'redwood', 'juniper']}, - {'gpu' : 'cypress', 'aliases' : ['hemlock']}, - {'gpu' : 'barts', 'aliases' : ['turks', 'caicos']}, - {'gpu' : 'cayman', 'aliases' : ['aruba']}]}, + [{'gpu' : 'cedar', 'aliases' : ['palm', 'sumo', 'sumo2', 'redwood', 'juniper'], + 'defines' : {}}, + {'gpu' : 'cypress', 'aliases' : ['hemlock'], + 'defines' : {}}, + {'gpu' : 'barts', 'aliases' : ['turks', 'caicos'], + 'defines' : {}}, + {'gpu' : 'cayman', 'aliases' : ['aruba'], + 'defines' : {}} ]}, 'amdgcn--': { 'devices' : - [{'gpu' : 'tahiti', 'aliases' : ['pitcairn', 'verde', 'oland', 'hainan', 'bonaire', 'kabini', 'kaveri', 'hawaii','mullins']}]}, - 'nvptx--' : { 'devices' : [{'gpu' : '', 'aliases' : []}]}, - 'nvptx64--' : { 'devices' : [{'gpu' : '', 'aliases' : []}] }, - 'nvptx--nvidiacl' : { 'devices' : [{'gpu' : '', 'aliases' : []}] }, - 'nvptx64--nvidiacl' : { 'devices' : [{'gpu' : '', 'aliases' : []}] } + [{'gpu' : 'tahiti', 'aliases' : ['pitcairn', 'verde', 'oland', 'hainan', 'bonaire', 'kabini', 'kaveri', 'hawaii','mullins','tonga','carrizo','iceland','fiji','stoney'], + 'defines' : {}} ]}, + 'nvptx--' : { 'devices' : [{'gpu' : '', 'aliases' : [], + 'defines' : {'all' : ['cl_khr_fp64']}}]}, + 'nvptx64--' : { 'devices' : [{'gpu' : '', 'aliases' : [], + 'defines' : {'all' : ['cl_khr_fp64']}}]}, + 'nvptx--nvidiacl' : { 'devices' : [{'gpu' : '', 'aliases' : [], + 'defines' : {'all' : ['cl_khr_fp64']}}]}, + 'nvptx64--nvidiacl' : { 'devices' : [{'gpu' : '', 'aliases' : [], + 'defines' : {'all' : ['cl_khr_fp64']}}]}, } default_targets = ['nvptx--nvidiacl', 'nvptx64--nvidiacl', 'r600--', 'amdgcn--'] @@ -178,13 +187,17 @@ for device in available_targets[target]['devices']: # The rule for building a .bc file for the specified architecture using clang. + device_def_list = (device['defines']['all'] if 'all' in device['defines'] else []); + if llvm_string_version in device['defines']: + device_def_list += (device['defines'][llvm_string_version]); + device_defines = ' '.join(["-D%s" % define for define in device_def_list]) clang_bc_flags = "-target %s -I`dirname $in` %s " \ "-fno-builtin " \ "-Dcl_clang_storage_class_specifiers " \ - "-Dcl_khr_fp64 " \ + "%s " \ "-Dcles_khr_int64 " \ "-D__CLC_INTERNAL " \ - "-emit-llvm" % (target, clang_cl_includes) + "-emit-llvm" % (target, clang_cl_includes, device_defines) if device['gpu'] != '': clang_bc_flags += ' -mcpu=' + device['gpu'] clang_bc_rule = "CLANG_CL_BC_" + target + "_" + device['gpu'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/clc.h new/libclc-0.2.0+git.20160209/generic/include/clc/clc.h --- old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/clc.h 2015-12-01 06:52:51.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/include/clc/clc.h 2016-07-03 10:32:55.000000000 +0200 @@ -58,6 +58,7 @@ #include <clc/math/fmin.h> #include <clc/math/fmod.h> #include <clc/math/fract.h> +#include <clc/math/frexp.h> #include <clc/math/half_rsqrt.h> #include <clc/math/half_sqrt.h> #include <clc/math/hypot.h> @@ -67,6 +68,7 @@ #include <clc/math/log1p.h> #include <clc/math/log2.h> #include <clc/math/mad.h> +#include <clc/math/modf.h> #include <clc/math/nextafter.h> #include <clc/math/pow.h> #include <clc/math/pown.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/frexp.h new/libclc-0.2.0+git.20160209/generic/include/clc/math/frexp.h --- old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/frexp.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/include/clc/math/frexp.h 2016-07-03 10:32:55.000000000 +0200 @@ -0,0 +1,2 @@ +#define __CLC_BODY <clc/math/frexp.inc> +#include <clc/math/gentype.inc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/frexp.inc new/libclc-0.2.0+git.20160209/generic/include/clc/math/frexp.inc --- old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/frexp.inc 1970-01-01 01:00:00.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/include/clc/math/frexp.inc 2016-07-03 10:32:55.000000000 +0200 @@ -0,0 +1,3 @@ +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE frexp(__CLC_GENTYPE x, global __CLC_INTN *iptr); +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE frexp(__CLC_GENTYPE x, local __CLC_INTN *iptr); +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE frexp(__CLC_GENTYPE x, private __CLC_INTN *iptr); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/gentype.inc new/libclc-0.2.0+git.20160209/generic/include/clc/math/gentype.inc --- old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/gentype.inc 2015-12-01 06:52:51.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/include/clc/math/gentype.inc 2016-07-03 10:32:55.000000000 +0200 @@ -2,38 +2,50 @@ #define __CLC_FPSIZE 32 #define __CLC_GENTYPE float +#define __CLC_INTN int #define __CLC_SCALAR #include __CLC_BODY #undef __CLC_GENTYPE +#undef __CLC_INTN #undef __CLC_SCALAR #define __CLC_GENTYPE float2 #define __CLC_INTN int2 +#define __CLC_VECSIZE 2 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN #define __CLC_GENTYPE float3 #define __CLC_INTN int3 +#define __CLC_VECSIZE 3 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN #define __CLC_GENTYPE float4 #define __CLC_INTN int4 +#define __CLC_VECSIZE 4 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN #define __CLC_GENTYPE float8 #define __CLC_INTN int8 +#define __CLC_VECSIZE 8 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN #define __CLC_GENTYPE float16 #define __CLC_INTN int16 +#define __CLC_VECSIZE 16 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN @@ -47,37 +59,49 @@ #define __CLC_SCALAR #define __CLC_GENTYPE double +#define __CLC_INTN int #include __CLC_BODY #undef __CLC_GENTYPE +#undef __CLC_INTN #undef __CLC_SCALAR #define __CLC_GENTYPE double2 #define __CLC_INTN int2 +#define __CLC_VECSIZE 2 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN #define __CLC_GENTYPE double3 #define __CLC_INTN int3 +#define __CLC_VECSIZE 3 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN #define __CLC_GENTYPE double4 #define __CLC_INTN int4 +#define __CLC_VECSIZE 4 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN #define __CLC_GENTYPE double8 #define __CLC_INTN int8 +#define __CLC_VECSIZE 8 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN #define __CLC_GENTYPE double16 #define __CLC_INTN int16 +#define __CLC_VECSIZE 16 #include __CLC_BODY +#undef __CLC_VECSIZE #undef __CLC_GENTYPE #undef __CLC_INTN diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/modf.h new/libclc-0.2.0+git.20160209/generic/include/clc/math/modf.h --- old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/modf.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/include/clc/math/modf.h 2016-07-03 10:32:55.000000000 +0200 @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2014 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. + */ + +#define __CLC_BODY <clc/math/modf.inc> +#include <clc/math/gentype.inc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/modf.inc new/libclc-0.2.0+git.20160209/generic/include/clc/math/modf.inc --- old/libclc-0.2.0+git20151006.6d78407/generic/include/clc/math/modf.inc 1970-01-01 01:00:00.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/include/clc/math/modf.inc 2016-07-03 10:32:55.000000000 +0200 @@ -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_DECL __CLC_GENTYPE modf(__CLC_GENTYPE x, global __CLC_GENTYPE *iptr); +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE modf(__CLC_GENTYPE x, local __CLC_GENTYPE *iptr); +_CLC_OVERLOAD _CLC_DECL __CLC_GENTYPE modf(__CLC_GENTYPE x, private __CLC_GENTYPE *iptr); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/lib/SOURCES new/libclc-0.2.0+git.20160209/generic/lib/SOURCES --- old/libclc-0.2.0+git20151006.6d78407/generic/lib/SOURCES 2015-12-01 06:52:51.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/lib/SOURCES 2016-07-03 10:32:55.000000000 +0200 @@ -86,6 +86,7 @@ math/fmin.cl math/fmod.cl math/fract.cl +math/frexp.cl math/half_rsqrt.cl math/half_sqrt.cl math/hypot.cl @@ -96,6 +97,7 @@ math/log1p.cl math/log2.cl math/mad.cl +math/modf.cl math/native_log.cl math/native_log2.cl math/tables.cl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/lib/clcmacro.h new/libclc-0.2.0+git.20160209/generic/lib/clcmacro.h --- old/libclc-0.2.0+git20151006.6d78407/generic/lib/clcmacro.h 2015-12-01 06:52:51.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/lib/clcmacro.h 2016-07-03 10:32:55.000000000 +0200 @@ -109,6 +109,28 @@ } \ \ +#define _CLC_V_V_VP_VECTORIZE(DECLSPEC, RET_TYPE, FUNCTION, ARG1_TYPE, ARG2_TYPE) \ + DECLSPEC RET_TYPE##2 FUNCTION(ARG1_TYPE##2 x, ARG2_TYPE##2 *y) { \ + return (RET_TYPE##2)(FUNCTION(x.x, (ARG2_TYPE*)y), FUNCTION(x.y, (ARG2_TYPE*)y+1)); \ + } \ +\ + DECLSPEC RET_TYPE##3 FUNCTION(ARG1_TYPE##3 x, ARG2_TYPE##3 *y) { \ + return (RET_TYPE##3)(FUNCTION(x.x, (ARG2_TYPE*)y), FUNCTION(x.y, (ARG2_TYPE*)y+1), \ + FUNCTION(x.z, (ARG2_TYPE*)y+2)); \ + } \ +\ + DECLSPEC RET_TYPE##4 FUNCTION(ARG1_TYPE##4 x, ARG2_TYPE##4 *y) { \ + return (RET_TYPE##4)(FUNCTION(x.lo, (ARG2_TYPE##2*)y), FUNCTION(x.hi, (ARG2_TYPE##2*)((ARG2_TYPE*)y+2))); \ + } \ +\ + DECLSPEC RET_TYPE##8 FUNCTION(ARG1_TYPE##8 x, ARG2_TYPE##8 *y) { \ + return (RET_TYPE##8)(FUNCTION(x.lo, (ARG2_TYPE##4*)y), FUNCTION(x.hi, (ARG2_TYPE##4*)((ARG2_TYPE*)y+4))); \ + } \ +\ + DECLSPEC RET_TYPE##16 FUNCTION(ARG1_TYPE##16 x, ARG2_TYPE##16 *y) { \ + return (RET_TYPE##16)(FUNCTION(x.lo, (ARG2_TYPE##8*)y), FUNCTION(x.hi, (ARG2_TYPE##8*)((ARG2_TYPE*)y+8))); \ + } + #define _CLC_DEFINE_BINARY_BUILTIN(RET_TYPE, FUNCTION, BUILTIN, ARG1_TYPE, ARG2_TYPE) \ _CLC_DEF _CLC_OVERLOAD RET_TYPE FUNCTION(ARG1_TYPE x, ARG2_TYPE y) { \ return BUILTIN(x, y); \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/frexp.cl new/libclc-0.2.0+git.20160209/generic/lib/math/frexp.cl --- old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/frexp.cl 1970-01-01 01:00:00.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/lib/math/frexp.cl 2016-07-03 10:32:55.000000000 +0200 @@ -0,0 +1,10 @@ +#include <clc/clc.h> + +#include "math.h" + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <frexp.inc> +#include <clc/math/gentype.inc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/frexp.inc new/libclc-0.2.0+git.20160209/generic/lib/math/frexp.inc --- old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/frexp.inc 1970-01-01 01:00:00.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/lib/math/frexp.inc 2016-07-03 10:32:55.000000000 +0200 @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2014 Advanced Micro Devices, Inc. + * Copyright (c) 2016 Aaron Watry + * + * 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. + */ +#if __CLC_FPSIZE == 32 +#ifdef __CLC_SCALAR +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE frexp(float x, private int *ep) { + int i = as_int(x); + int ai = i & 0x7fffffff; + int d = ai > 0 & ai < 0x00800000; + // scale subnormal by 2^26 without multiplying + float s = as_float(ai | 0x0d800000) - 0x1.0p-100F; + ai = d ? as_int(s) : ai; + int e = (ai >> 23) - 126 - (d ? 26 : 0); + int t = ai == 0 | e == 129; + i = (i & 0x80000000) | 0x3f000000 | (ai & 0x007fffff); + *ep = t ? 0 : e; + return t ? x : as_float(i); +} +#define __CLC_FREXP_VEC(width) \ +_CLC_OVERLOAD _CLC_DEF float##width frexp(float##width x, private int##width *ep) { \ + int##width i = as_int##width(x); \ + int##width ai = i & 0x7fffffff; \ + int##width d = ai > 0 & ai < 0x00800000; \ + /* scale subnormal by 2^26 without multiplying */ \ + float##width s = as_float##width(ai | 0x0d800000) - 0x1.0p-100F; \ + ai = bitselect(ai, as_int##width(s), d); \ + int##width e = (ai >> 23) - 126 - bitselect((int##width)0, (int##width)26, d); \ + int##width t = ai == (int##width)0 | e == (int##width)129; \ + i = (i & (int##width)0x80000000) | (int##width)0x3f000000 | (ai & 0x007fffff); \ + *ep = bitselect(e, (int##width)0, t); \ + return bitselect(as_float##width(i), x, as_float##width(t)); \ +} +__CLC_FREXP_VEC(2) +__CLC_FREXP_VEC(3) +__CLC_FREXP_VEC(4) +__CLC_FREXP_VEC(8) +__CLC_FREXP_VEC(16) +#undef __CLC_FREXP_VEC +#endif +#endif + +#if __CLC_FPSIZE == 64 +#ifdef __CLC_SCALAR +_CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE frexp(__CLC_GENTYPE x, private __CLC_INTN *ep) { + long i = as_long(x); + long ai = i & 0x7fffffffffffffffL; + int d = ai > 0 & ai < 0x0010000000000000L; + // scale subnormal by 2^54 without multiplying + double s = as_double(ai | 0x0370000000000000L) - 0x1.0p-968; + ai = d ? as_long(s) : ai; + int e = (int)(ai >> 52) - 1022 - (d ? 54 : 0); + int t = ai == 0 | e == 1025; + i = (i & 0x8000000000000000L) | 0x3fe0000000000000L | (ai & 0x000fffffffffffffL); + *ep = t ? 0 : e; + return t ? x : as_double(i); +} +#define __CLC_FREXP_VEC(width) \ +_CLC_OVERLOAD _CLC_DEF double##width frexp(double##width x, private int##width *ep) { \ + long##width i = as_long##width(x); \ + long##width ai = i & 0x7fffffffffffffffL; \ + long##width d = ai > 0 & ai < 0x0010000000000000L; \ + /* scale subnormal by 2^54 without multiplying */ \ + double##width s = as_double##width(ai | 0x0370000000000000L) - 0x1.0p-968; \ + ai = bitselect(ai, as_long##width(s), d); \ + int##width e = convert_int##width(ai >> 52) - 1022 - bitselect((int##width)0, (int##width)54, convert_int##width(d)); \ + int##width t = convert_int##width(ai == (long##width)0) | (e == (int##width)129); \ + i = (i & (long##width)0x8000000000000000L) | (long##width)0x3fe0000000000000L | (ai & 0x000fffffffffffffL); \ + *ep = bitselect(e, (int##width)0, t); \ + return bitselect(as_double##width(i), x, as_double##width(convert_long##width(t))); \ +} +__CLC_FREXP_VEC(2) +__CLC_FREXP_VEC(3) +__CLC_FREXP_VEC(4) +__CLC_FREXP_VEC(8) +__CLC_FREXP_VEC(16) +#undef __CLC_FREXP_VEC +#endif +#endif + +#define __CLC_FREXP_DEF(addrspace) \ + _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE frexp(__CLC_GENTYPE x, addrspace __CLC_INTN *iptr) { \ + __CLC_INTN private_iptr; \ + __CLC_GENTYPE ret = frexp(x, &private_iptr); \ + *iptr = private_iptr; \ + return ret; \ +} + +__CLC_FREXP_DEF(local); +__CLC_FREXP_DEF(global); + +#undef __CLC_FREXP_DEF diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/log2.cl new/libclc-0.2.0+git.20160209/generic/lib/math/log2.cl --- old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/log2.cl 2015-12-01 06:52:51.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/lib/math/log2.cl 2016-07-03 10:32:55.000000000 +0200 @@ -34,4 +34,6 @@ _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, float, log2, float); +#ifdef cl_khr_fp64 _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, double, log2, double); +#endif // cl_khr_fp64 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/modf.cl new/libclc-0.2.0+git.20160209/generic/lib/math/modf.cl --- old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/modf.cl 1970-01-01 01:00:00.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/lib/math/modf.cl 2016-07-03 10:32:55.000000000 +0200 @@ -0,0 +1,32 @@ +/* + * Copyright (c) 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> + +#include "math.h" + +#ifdef cl_khr_fp64 +#pragma OPENCL EXTENSION cl_khr_fp64 : enable +#endif + +#define __CLC_BODY <modf.inc> +#include <clc/math/gentype.inc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/modf.inc new/libclc-0.2.0+git.20160209/generic/lib/math/modf.inc --- old/libclc-0.2.0+git20151006.6d78407/generic/lib/math/modf.inc 1970-01-01 01:00:00.000000000 +0100 +++ new/libclc-0.2.0+git.20160209/generic/lib/math/modf.inc 2016-07-03 10:32:55.000000000 +0200 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 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 modf(__CLC_GENTYPE x, __CLC_GENTYPE *iptr) { + *iptr = trunc(x); + return copysign(isinf(x) ? 0.0f : x - *iptr, x); +} + +#define MODF_DEF(addrspace) \ + _CLC_OVERLOAD _CLC_DEF __CLC_GENTYPE modf(__CLC_GENTYPE x, addrspace __CLC_GENTYPE *iptr) { \ + __CLC_GENTYPE private_iptr; \ + __CLC_GENTYPE ret = modf(x, &private_iptr); \ + *iptr = private_iptr; \ + return ret; \ +} + +MODF_DEF(local); +MODF_DEF(global);
