From patchwork Fri Dec 9 21:24:13 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Gabriel F. T. Gomes" X-Patchwork-Id: 87559 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp522512qgi; Fri, 9 Dec 2016 13:24:51 -0800 (PST) X-Received: by 10.99.44.84 with SMTP id s81mr147831869pgs.153.1481318691729; Fri, 09 Dec 2016 13:24:51 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id w126si35217021pgb.85.2016.12.09.13.24.51 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 09 Dec 2016 13:24:51 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-return-75705-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-75705-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-75705-patch=linaro.org@sourceware.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:cc:subject:in-reply-to:references :mime-version:content-type:message-id; q=dns; s=default; b=nUEDq Pj/xg+/Ygnh92SsmC7ipmxjHv1K+BpX/UkN2HS97On30YrOqUFdmYHcjxobcq8EB fcRGDrAHwkPi6LhEb3c7U6yLPUlVE7V/UuEi5+oiRWUDxgGsHirYpuGR3Nzl8WPr CeLJBJhDMVso4kdZHl9gpS+Cbew8jPuBKm2AvQ= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:cc:subject:in-reply-to:references :mime-version:content-type:message-id; s=default; bh=3YZJNnX7eO4 cLABU5+91HrFtP1A=; b=uTTS8iCjD+qEHoMTKj+z1ButvTzRjtbmU5UDhFjN2Fn MP8bozmmd8acAmc8+uRKX/RRrBoXoWswBXsKWglOY7OER99Bp/ioYFpBpx5RyjT5 cO/q9lyUvwkPg1grfG71xYyR+XX689DIkzg2Pep/A4HlZydfi9/EqCpRiTFaZ6FI = Received: (qmail 82993 invoked by alias); 9 Dec 2016 21:24:40 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 82984 invoked by uid 89); 9 Dec 2016 21:24:39 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: Yes, score=6.0 required=5.0 tests=BAYES_00, KAM_LAZY_DOMAIN_SECURITY, KAM_STOCKTIP, RCVD_IN_DNSWL_LOW, RCVD_IN_SEMBACKSCATTER, URIBL_RED autolearn=no version=3.3.2 spammy=IEEE, powerpc64le, HX-Proofpoint-Spam-Details:main-1612090285 X-HELO: mx0a-001b2d01.pphosted.com Date: Fri, 9 Dec 2016 19:24:13 -0200 From: "Gabriel F. T. Gomes" To: Joseph Myers Cc: Subject: Re: [PATCH 3/8] float128: Add wrappers for IEEE functions. In-Reply-To: References: <1478716859-3246-1-git-send-email-gftg@linux.vnet.ibm.com> <1478716859-3246-4-git-send-email-gftg@linux.vnet.ibm.com> <20161205144754.4c0c7c13@keller.br.ibm.com> <20161207173544.36123848@keller.br.ibm.com> MIME-Version: 1.0 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16120921-0020-0000-0000-0000026F5D39 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16120921-0021-0000-0000-00003085E0F7 Message-Id: <20161209192413.683ac72d@keller> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2016-12-09_10:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=2 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1609300000 definitions=main-1612090285 On Wed, 7 Dec 2016 21:47:28 +0000 Joseph Myers wrote: > For log1p, I'd expect the template file to use -1 (or M_LIT (-1.0) in the > islessequal call) rather than the double value -1.0. And I'd hope that > you can remove the ldbl-128ibm/w_log1pl.c and ldbl-64-128/w_log1pl.c files > completely and the generated file will do the right thing automatically. I attached a new version with the suggested changes. > For scalbln, look at math/s_ldexp_template.c and the ldbl-opt s_ldexp* > files for an example - the issues are pretty similar. Thanks for the pointers. I am testing a patch for this part. >From 598dcad021afb25605595c29d583a04ea52bf653 Mon Sep 17 00:00:00 2001 From: "Gabriel F. T. Gomes" Date: Wed, 7 Dec 2016 16:19:11 -0200 Subject: [PATCH] Make w_log1p type-generic This patch converts the wrapper log1p (which set errno directly rather than doing anything with __kernel_standard) to use the type-generic template machinery, in the same way that has been done for ilogb. Tested for powerpc64le, s390, and x86_64. 2016-12-06 Gabriel F. T. Gomes * math/Makefile (gen-libm-calls): Add w_log1pF. (libm-calls): Remove w_log1pF. * math/w_log1p.c: Remove. * math/w_log1pf.c: Likewise. * math/w_log1pl.c: Likewise. * math/w_log1p_template.c: New file with type-generic implementation based on math/w_log1p.c. * sysdeps/ieee754/ldbl-128ibm/w_log1pl.c: Remove. * sysdeps/ieee754/ldbl-64-128/w_log1pl.c: Likewise. --- math/Makefile | 5 +++-- math/w_log1p.c | 41 ---------------------------------- math/w_log1p_template.c | 36 +++++++++++++++++++++++++++++ math/w_log1pf.c | 36 ----------------------------- math/w_log1pl.c | 36 ----------------------------- sysdeps/ieee754/ldbl-128ibm/w_log1pl.c | 23 ------------------- sysdeps/ieee754/ldbl-64-128/w_log1pl.c | 23 ------------------- 7 files changed, 39 insertions(+), 161 deletions(-) delete mode 100644 math/w_log1p.c create mode 100644 math/w_log1p_template.c delete mode 100644 math/w_log1pf.c delete mode 100644 math/w_log1pl.c delete mode 100644 sysdeps/ieee754/ldbl-128ibm/w_log1pl.c delete mode 100644 sysdeps/ieee754/ldbl-64-128/w_log1pl.c diff --git a/math/Makefile b/math/Makefile index 848b093..50ce418 100644 --- a/math/Makefile +++ b/math/Makefile @@ -52,7 +52,8 @@ gen-libm-calls = cargF conjF cimagF crealF cabsF s_cacosF \ k_casinhF s_csinhF k_casinhF s_csinhF s_catanhF s_catanF \ s_ctanF s_ctanhF s_cexpF s_clogF s_cprojF s_csqrtF \ s_cpowF s_clog10F s_fdimF s_nextdownF s_fmaxF s_fminF \ - s_nanF s_iseqsigF s_canonicalizeF w_ilogbF w_llogbF + s_nanF s_iseqsigF s_canonicalizeF w_ilogbF w_llogbF \ + w_log1pF libm-calls = \ e_acosF e_acoshF e_asinF e_atan2F e_atanhF e_coshF e_expF e_fmodF \ @@ -61,7 +62,7 @@ libm-calls = \ e_ilogbF \ k_cosF k_sinF k_tanF s_asinhF s_atanF s_cbrtF \ s_ceilF s_cosF s_erfF s_expm1F s_fabsF \ - s_floorF s_log1pF w_log1pF s_logbF \ + s_floorF s_log1pF s_logbF \ s_nextafterF s_nexttowardF s_rintF s_scalblnF w_scalblnF \ s_significandF s_sinF s_tanF s_tanhF w_acosF w_acoshF w_asinF \ w_atan2F w_atanhF w_coshF w_expF w_exp2F w_exp10F w_fmodF \ diff --git a/math/w_log1p.c b/math/w_log1p.c deleted file mode 100644 index 282c85c..0000000 --- a/math/w_log1p.c +++ /dev/null @@ -1,41 +0,0 @@ -/* Wrapper for __log1p that handles setting errno. - Copyright (C) 2015-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -double -__w_log1p (double x) -{ - if (__glibc_unlikely (islessequal (x, -1.0))) - { - if (x == -1.0) - __set_errno (ERANGE); - else - __set_errno (EDOM); - } - - return __log1p (x); -} -weak_alias (__w_log1p, log1p) - -#ifdef NO_LONG_DOUBLE -strong_alias (__w_log1p, __log1pl) -weak_alias (__w_log1p, log1pl) -#endif diff --git a/math/w_log1p_template.c b/math/w_log1p_template.c new file mode 100644 index 0000000..1ac3450 --- /dev/null +++ b/math/w_log1p_template.c @@ -0,0 +1,36 @@ +/* Wrapper for __log1p that handles setting errno. + Copyright (C) 2015-2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +FLOAT +M_DECL_FUNC (__w_log1p) (FLOAT x) +{ + if (__glibc_unlikely (islessequal (x, M_LIT (-1.0)))) + { + if (x == -1) + __set_errno (ERANGE); + else + __set_errno (EDOM); + } + + return M_SUF (__log1p) (x); +} +declare_mgen_alias (__w_log1p, log1p) diff --git a/math/w_log1pf.c b/math/w_log1pf.c deleted file mode 100644 index ed9992a..0000000 --- a/math/w_log1pf.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Wrapper for __log1pf that handles setting errno. - Copyright (C) 2015-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -float -__w_log1pf (float x) -{ - if (__glibc_unlikely (islessequal (x, -1.0f))) - { - if (x == -1.0f) - __set_errno (ERANGE); - else - __set_errno (EDOM); - } - - return __log1pf (x); -} -weak_alias (__w_log1pf, log1pf) diff --git a/math/w_log1pl.c b/math/w_log1pl.c deleted file mode 100644 index 3478c1c..0000000 --- a/math/w_log1pl.c +++ /dev/null @@ -1,36 +0,0 @@ -/* Wrapper for __log1pl that handles setting errno. - Copyright (C) 2015-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -long double -__w_log1pl (long double x) -{ - if (__glibc_unlikely (islessequal (x, -1.0L))) - { - if (x == -1.0L) - __set_errno (ERANGE); - else - __set_errno (EDOM); - } - - return __log1pl (x); -} -weak_alias (__w_log1pl, log1pl) diff --git a/sysdeps/ieee754/ldbl-128ibm/w_log1pl.c b/sysdeps/ieee754/ldbl-128ibm/w_log1pl.c deleted file mode 100644 index 969fadc..0000000 --- a/sysdeps/ieee754/ldbl-128ibm/w_log1pl.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Wrapper for __log1pl that handles setting errno. - Copyright (C) 2015-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#undef weak_alias -#define weak_alias(n,a) -#include -long_double_symbol (libm, __w_log1pl, log1pl); diff --git a/sysdeps/ieee754/ldbl-64-128/w_log1pl.c b/sysdeps/ieee754/ldbl-64-128/w_log1pl.c deleted file mode 100644 index 969fadc..0000000 --- a/sysdeps/ieee754/ldbl-64-128/w_log1pl.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Wrapper for __log1pl that handles setting errno. - Copyright (C) 2015-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#undef weak_alias -#define weak_alias(n,a) -#include -long_double_symbol (libm, __w_log1pl, log1pl); -- 2.4.11