From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.180.0/23 X-Spam-Status: No, score=-4.0 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 2010620248 for ; Fri, 29 Mar 2019 13:38:28 +0000 (UTC) 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=imHTf62SDxVHBaQPPwFN0OTp2svIVHx 3+hhe1IhT7xNvZ4WenrkPg1tL7iAETBlXc5Yy1ui6wZfDbJ6H5DxWUvpAxdNL5AQ t1P8E+wgESdDdSVRwJYlitiP7Ghzfph8IAyDZUXPhvM6ou8bgfhlOSM+chrbbJMh dCExboJ/wAdU= 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=Ea3NaLeyhMMmlFUfHAvahipzPnY=; b=R0FGa mqIDREPKIrgHjKeTLGuiY3litiaHeQ62UmEj8QnIWyXeA16o9gdN+ivLmgvOTT7E 8XonyMtwW65KPWil4ZwTTKa8k+lJPEKlB2R2PrnFQdTOK975Qjo//aMXZzIm5ryN /KMkXrvYqRDqJBQKHlPOpe42GgC4LBpmOrzpYk= Received: (qmail 120193 invoked by alias); 29 Mar 2019 13:36:02 -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 Received: (qmail 119706 invoked by uid 89); 29 Mar 2019 13:35:57 -0000 Authentication-Results: sourceware.org; auth=none X-HELO: mail-vs1-f66.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=VjU+mKSmIL4/yertS7YsX/urTvrgyiD9oMpMq4KX6D0=; b=RShaAOEokzrWSWHD++NBzYhauXSvu+FHid34yoSapYI5eGjFeMxGVZxwJ8XxbZXd7d HP6ubJLF/vCXMNcRGB11bYuc+JGf00IzkmpA7BcK6FUO2Gviw9T9v4GNz4ppZ5uJb7Y/ t1SjjUVGXbMRoFFFcz6xLGumZEyYz7jc0AFDyxm5ITA+yk7CtJOFSlaO/JpYpYabz7VZ FiFV+UtXf991DDZmyfnyZHm1ICVI5BXv0UeA5jW6CM626b71TLBBmzE8ATiQzLCALs3J Xh44dDnWj8ePvP/kgF316EXgqwyNeQrMdo5SfH6x2bWXF3PBEMfxz8IilkP7O4CZlt2a n2lg== From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 14/28] math: Use wordsize-64 version for isinf Date: Fri, 29 Mar 2019 10:35:15 -0300 Message-Id: <20190329133529.22523-15-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_isinf.c: Move to ... * sysdeps/ieee754/dbl-64/s_isinf.c: ... here and format code. --- sysdeps/ieee754/dbl-64/s_isinf.c | 15 ++++----- sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c | 34 -------------------- 2 files changed, 6 insertions(+), 43 deletions(-) delete mode 100644 sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c diff --git a/sysdeps/ieee754/dbl-64/s_isinf.c b/sysdeps/ieee754/dbl-64/s_isinf.c index 93eb65c147..e5300fd2a5 100644 --- a/sysdeps/ieee754/dbl-64/s_isinf.c +++ b/sysdeps/ieee754/dbl-64/s_isinf.c @@ -4,10 +4,6 @@ * Public domain. */ -#if defined(LIBM_SCCS) && !defined(lint) -static char rcsid[] = "$NetBSD: s_isinf.c,v 1.3 1995/05/11 23:20:14 jtc Exp $"; -#endif - /* * isinf(x) returns 1 is x is inf, -1 if x is -inf, else 0; * no branching! @@ -21,11 +17,12 @@ static char rcsid[] = "$NetBSD: s_isinf.c,v 1.3 1995/05/11 23:20:14 jtc Exp $"; int __isinf (double x) { - int32_t hx, lx; - EXTRACT_WORDS (hx, lx, x); - lx |= (hx & 0x7fffffff) ^ 0x7ff00000; - lx |= -lx; - return ~(lx >> 31) & (hx >> 30); + int64_t ix; + EXTRACT_WORDS64 (ix,x); + int64_t t = ix & UINT64_C (0x7fffffffffffffff); + t ^= UINT64_C (0x7ff0000000000000); + t |= -t; + return ~(t >> 63) & (ix >> 62); } hidden_def (__isinf) weak_alias (__isinf, isinf) diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c deleted file mode 100644 index 2b427a8b4c..0000000000 --- a/sysdeps/ieee754/dbl-64/wordsize-64/s_isinf.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Written by J.T. Conklin . - * Changed to return -1 for -Inf by Ulrich Drepper . - * Public domain. - */ - -/* - * isinf(x) returns 1 is x is inf, -1 if x is -inf, else 0; - * no branching! - */ - -#include -#include -#include -#include - -int -__isinf (double x) -{ - int64_t ix; - EXTRACT_WORDS64(ix,x); - int64_t t = ix & UINT64_C(0x7fffffffffffffff); - t ^= UINT64_C(0x7ff0000000000000); - t |= -t; - return ~(t >> 63) & (ix >> 62); -} -hidden_def (__isinf) -weak_alias (__isinf, isinf) -#ifdef NO_LONG_DOUBLE -# if LDBL_CLASSIFY_COMPAT && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_23) -compat_symbol (libc, __isinf, __isinfl, GLIBC_2_0); -# endif -weak_alias (__isinf, isinfl) -#endif -- 2.17.1