From patchwork Fri Mar 29 13:35:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 161435 Delivered-To: patch@linaro.org Received: by 2002:a02:c6d8:0:0:0:0:0 with SMTP id r24csp2051790jan; Fri, 29 Mar 2019 06:38:38 -0700 (PDT) X-Google-Smtp-Source: APXvYqzfDmq0Yd3tgXiuIhEBY8ZLRKkp8diGM/y4fYPzhP837xXiIKx+zE/hgMEJa29JPXvKI+A0 X-Received: by 2002:a17:902:b618:: with SMTP id b24mr46317591pls.73.1553866717004; Fri, 29 Mar 2019 06:38:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553866717; cv=none; d=google.com; s=arc-20160816; b=OdOh+eaFutp7XR7ef3wuGHaIDDuBOd48MeIYYL6WkaezhjCV43ukNzIeJ8rH9Q8r3T KUIV17WHWb+BHb3qq0JVuuphR41NSyVwAQ6vjPDqBiYKCWywNUKuvInaYhRUfeWbVm/y G27nd2D8kTN9oucFYTLzM3mpVsYV7b9F1iw6US4yIwtIjqFs3e07N/Z05bXdnllfXUX3 pnaoV8P4ijHtpSsJpHK98qCBu/ldmZXGrWd2yy2zndg7S7lso3DYgYUTUWdjvhmxEMq0 X6tG7Ozd4BDWRK5pzjUjjmOghrjT4kCsDN4jHCruzQ/6pK5al8ZvTEkG0KYYE7gJdbw3 29aA== 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=VjU+mKSmIL4/yertS7YsX/urTvrgyiD9oMpMq4KX6D0=; b=X9vra5gfFhV6SBo07tsn3LkbAg4FOKHH/iMsXcoEt0VCHgBil/kvBSdK2UPOHtj/6S rbolVGksLBKn7ahA/ezELvnTNQrQ1eQrkkOLgIOTQIzR1N3tzsqowVO2NMhI5T/PuLkU OXxeaq9OfpDG7ciIwHSoFfzamNyiT5LtLo/ozZD6miLsB/03hVFNxf5eXeEvqROTqYEJ oZOU5PvdWOpeX9WbUWoeTGqbEvaXczc275SL4e91o+4PPjJ3Y4YHV1e/BJ8vIu7vkBFN K7KDr6O4IOVInUWVDkDIUMfuSYQ9wUyXQDwxLgSfrQ9cNXJ13OKu6vUEjgy3pDVoRhmn bddA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b="K/RqTuct"; dkim=pass header.i=@linaro.org header.s=google header.b=RShaAOEo; spf=pass (google.com: domain of libc-alpha-return-101004-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="libc-alpha-return-101004-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 g5si1896491pgk.402.2019.03.29.06.38.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 29 Mar 2019 06:38:36 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-101004-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="K/RqTuct"; dkim=pass header.i=@linaro.org header.s=google header.b=RShaAOEo; spf=pass (google.com: domain of libc-alpha-return-101004-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom="libc-alpha-return-101004-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=F0H9T+3NoaXtG0wenoi1vfJF2pXQZ/+ WNEklhha9lteKXG0+SKUTc7co1ut4+g+U6Z4oag/xW2fn+gkuSEm+2CjwL+2o6RO a4dhqwlqFLo9rej9T0WD47aoQxYxHf+IzjyfPnBAoUZxgqXqIgCC6irhpTSiHU7F vJq8n0cbc0/c= 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=K/RqT uctdlVJ5qGNVcEkKhatNJcqkOeJ2DJQ9FQR7QgXM9yo/Ot8rohKE6btcH/7dx0Rw qFM/Qb4c8kGEVvIbgIfKATPXrBtZCShxweoqRSFnxMdK8+qtAH2qMlH3ymcxzwfr 0FNPW+KS61c8/9ThtEsMFPCWUdJ8df+j1umUcM= 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 Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 119706 invoked by uid 89); 29 Mar 2019 13:35:57 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.1 spammy=jt, ulrich, 1, 34, Ulrich 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== Return-Path: 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 -- 2.17.1 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