From patchwork Fri Mar 29 13:35:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 161434 Delivered-To: patch@linaro.org Received: by 2002:a02:c6d8:0:0:0:0:0 with SMTP id r24csp2051510jan; Fri, 29 Mar 2019 06:38:25 -0700 (PDT) X-Google-Smtp-Source: APXvYqxmOMComsV/e6CEE5ai7JNYazBgCZn30QmID2kk3cIMqQ6jxaCzj/EJtKjR6PKm8fhuXnSY X-Received: by 2002:a63:c706:: with SMTP id n6mr12164858pgg.310.1553866705598; Fri, 29 Mar 2019 06:38:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553866705; cv=none; d=google.com; s=arc-20160816; b=YQT7TL1DNZBdm9HDZNtqTG8Ti3TIQKT2IdFJ2zPhkAZrAaWZbu1QWw5nA5I5BGQOfm 7ot3EgvyDMNrbbZmp3EsrE3jyL7EgV2LiSu/9FRvc/hxSKKcJClkz5V8FwNhtqFD0xyv 1DUJNr0cArHhTNAQgijrt+4Ze3YmOfhkFQwOd6cQbm3bI9gWpOdK744FsahwaIIAZXgN lFW4MQS+ZBHWPlFfJ0wkMSEpqkpFAPiym1Y9q0u6XqUe+ADG9xmBSqZ8qyalJKAsdanl tokTECzwl46/q9+riwYorBZesLrNtM3NPHQkJpvqYVfGm+Vae9QfiPWqEnCMo5HDiKvc JrMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:to:from :dkim-signature:delivered-to:sender:list-help:list-post:list-archive :list-subscribe:list-unsubscribe:list-id:precedence:mailing-list :dkim-signature:domainkey-signature; bh=mYTcdew2Ic29b/S82vjskdmY9ntp5KJcByrrKIqH06o=; b=lU8COHv/W0/p4RRK4TCUkIh3Xb1E3crJQCRLlmibS7GWLCkMBoOGtRyuOCBET4pkNt J24Pyx8sHDiVd+lwHk/7dAOhjgLat9SuJMcPsLDJhwe1wYo2ffU4u0eG1D+Log5XzA7g Zv18hDjPEld9+/0lE1ADiHSvNp6o+FUPhefbVGzvug2s30/TpiPdERMbysNwhjcIJb+F WjRuCI2EdXkh+Z9N9glpUZgiavNEsODwuC7seZYvQGPejuDLUD9yMRzdEucU5MnwK0t3 IKOFYaOfXaUCjs33BEpOZqRDTgREi6hBK028PjKMNizRrxSXKTIzO6m8UwwWpd6Hf8Ij 1k+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=BNfV38aG; dkim=pass header.i=@linaro.org header.s=google header.b=rILlrctt; spf=pass (google.com: domain of libc-alpha-return-101003-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="libc-alpha-return-101003-patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id y18si1901341pll.172.2019.03.29.06.38.25 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 Mar 2019 06:38:25 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-101003-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 header.s=default header.b=BNfV38aG; dkim=pass header.i=@linaro.org header.s=google header.b=rILlrctt; spf=pass (google.com: domain of libc-alpha-return-101003-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="libc-alpha-return-101003-patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.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:from:to:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=NKIhXT8r5T5u6mxcICC/8ntwlJMV89+ LjDfZ3GPJindJpuvlZvhY/y34c/8vnst9ZMq18dvYw/jSSkUGFV5Y/S45Lvn8Tro gIDhUxPvjy98wUK9OGhSsPiAUnEMnGMv7yPjoqYRkpqwIYS2DMvvrCpcAe4CYMOC sQZJCLo1wKBQ= 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:from:to:subject:date:message-id:in-reply-to :references; s=default; bh=T+wt992DcRKgkLo8vF8edkAgWYY=; b=BNfV3 8aGZeuPexrewfTSgzVzTYjtJ94V4a1HemX764bR22iF3wszqw+Wl5n4IXvJzM04L 9KoKbYrMYT/drS/HQl0EANTgPBYJrk4Dxal2/mxsFZwwD2MXY+hZmFsX/TOPCcvK UqJK3HQgg/zBO7Rk6/pil2j1oEW5ArvbC6168Q= Received: (qmail 120141 invoked by alias); 29 Mar 2019 13:36:01 -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 119617 invoked by uid 89); 29 Mar 2019 13:35:56 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=business, rights X-HELO: mail-ua1-f67.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references; bh=mYTcdew2Ic29b/S82vjskdmY9ntp5KJcByrrKIqH06o=; b=rILlrctt7uPlHkA66Lz2zoqiUf6bX1v1/wqMJw1i/u9Ls9M334RPiAf/j+EydLe2r8 ndd0nZfBhIe3ooaqNyNgMD7lu8nn1nSYI7wMjXdWKtIKG7qp+dNC+cqlow/CKVmG8h/K Oxh7fSxoTv6vDm9ieNXoU1EpponHMX/M8FmQoitR178VpOuvKzHVttleU8oN4m9SSP92 /olA6TD4vAZWvsvuO52rh7dp5SGPT9IjA080xyNDX2ody6gUvDchTEec3VIeqkokzidS hLbpbiilRJbzkyk/dth+8DYgZ/YyL58r/5eyPJIuKhIGoLP9BNSpmxBxYrmXwy9Ptmcn /c3g== Return-Path: From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 12/28] math: Use wordsize-64 version for isnan Date: Fri, 29 Mar 2019 10:35:13 -0300 Message-Id: <20190329133529.22523-13-adhemerval.zanella@linaro.org> In-Reply-To: <20190329133529.22523-1-adhemerval.zanella@linaro.org> References: <20190329133529.22523-1-adhemerval.zanella@linaro.org> - math.h will use compiler builtin for gcc 4.4+ when built without -fsignaling-nans and the builtin is expanded inline for all supported architectures. As an example, there is no intra isnan call on libm for the architecture I checked (x86, arm, aarch64, and powerpc). - The resulting binary difference on 32 bits architecture is minimum for the non hotspot symbol. - It helps wordsize-64 architectures that use ldbl-opt. - It add some code simplification with reduction of duplicated implementations. Checked on powerpc-linux-gnu (built without --with-cpu, with --with-cpu=power4 and with --with-cpu=power5+ and --disable-multi-arch), powerpc64-linux-gnu (built without --with-cp and with --with-cpu=power5+ and --disable-multi-arch). * sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c: Move to ... * sysdeps/ieee754/dbl-64/s_isnan.c: ... here and format code. --- sysdeps/ieee754/dbl-64/s_isnan.c | 17 +++------ sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c | 40 -------------------- 2 files changed, 6 insertions(+), 51 deletions(-) delete mode 100644 sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c -- 2.17.1 diff --git a/sysdeps/ieee754/dbl-64/s_isnan.c b/sysdeps/ieee754/dbl-64/s_isnan.c index 82723eeb8a..1f1535dea3 100644 --- a/sysdeps/ieee754/dbl-64/s_isnan.c +++ b/sysdeps/ieee754/dbl-64/s_isnan.c @@ -10,10 +10,6 @@ * ==================================================== */ -#if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: s_isnan.c,v 1.8 1995/05/10 20:47:36 jtc Exp $"; -#endif - /* * isnan(x) returns 1 is x is nan, else 0; * no branching! @@ -23,17 +19,16 @@ static char rcsid[] = "$NetBSD: s_isnan.c,v 1.8 1995/05/10 20:47:36 jtc Exp $"; #include #include #include +#include -#undef __isnan int __isnan (double x) { - int32_t hx, lx; - EXTRACT_WORDS (hx, lx, x); - hx &= 0x7fffffff; - hx |= (uint32_t) (lx | (-lx)) >> 31; - hx = 0x7ff00000 - hx; - return (int) (((uint32_t) hx) >> 31); + int64_t hx; + EXTRACT_WORDS64 (hx, x); + hx &= UINT64_C (0x7fffffffffffffff); + hx = UINT64_C (0x7ff0000000000000) - hx; + return (int)(((uint64_t)hx)>>63); } hidden_def (__isnan) weak_alias (__isnan, isnan) diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c deleted file mode 100644 index cd805d157b..0000000000 --- a/sysdeps/ieee754/dbl-64/wordsize-64/s_isnan.c +++ /dev/null @@ -1,40 +0,0 @@ -/* @(#)s_isnan.c 5.1 93/09/24 */ -/* - * ==================================================== - * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - * - * Developed at SunPro, a Sun Microsystems, Inc. business. - * Permission to use, copy, modify, and distribute this - * software is freely granted, provided that this notice - * is preserved. - * ==================================================== - */ - -/* - * isnan(x) returns 1 is x is nan, else 0; - * no branching! - */ - -#include -#include -#include -#include -#include - -#undef __isnan -int __isnan(double x) -{ - int64_t hx; - EXTRACT_WORDS64(hx,x); - hx &= UINT64_C(0x7fffffffffffffff); - hx = UINT64_C(0x7ff0000000000000) - hx; - return (int)(((uint64_t)hx)>>63); -} -hidden_def (__isnan) -weak_alias (__isnan, isnan) -#ifdef NO_LONG_DOUBLE -# if LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23) -compat_symbol (libc, __isnan, __isnanl, GLIBC_2_0); -# endif -weak_alias (__isnan, isnanl) -#endif