From patchwork Thu Nov 21 21:24:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Paul A. Clarke" X-Patchwork-Id: 36104 X-Patchwork-Delegate: joseph@codesourcery.com Received: (qmail 2531 invoked by alias); 21 Nov 2019 21:24:43 -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 2437 invoked by uid 89); 21 Nov 2019 21:24:36 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1 spammy= X-HELO: mx0a-001b2d01.pphosted.com From: "Paul A. Clarke" To: libc-alpha@sourceware.org Cc: joseph@codesourcery.com, adhemerval.zanella@linaro.org Subject: [PATCH v2] Remove duplicate inline implementation of issignalingf Date: Thu, 21 Nov 2019 15:24:16 -0600 Message-Id: <1574371456-1788-1-git-send-email-pc@us.ibm.com> From: "Paul A. Clarke" Very recent commit 854e91bf6b4221f424ffa13b9ef50f35623b7b74 enabled inline of issignalingf() in general (__issignalingf in include/math.h). There is another implementation for an inline use of issignalingf (issignalingf_inline in sysdeps/ieee754/flt-32/math_config.h) which could instead make use of the new enablement. Replace the use of issignalingf_inline with __issignaling. Using issignaling (instead of __issignalingf) will allow future enhancements to the type-generic implementation, issignaling, to be automatically adopted. The implementations are slightly different, and compile to slightly different code, but I measured no significant performance difference. The second implementation was brought to my attention by: Suggested-by: Joseph Myers --- v2: Use type-generic issignaling instead of __issignalingf, as suggested by Joseph Myers. sysdeps/ieee754/flt-32/e_powf.c | 4 ++-- sysdeps/ieee754/flt-32/math_config.h | 9 --------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/sysdeps/ieee754/flt-32/e_powf.c b/sysdeps/ieee754/flt-32/e_powf.c index 4947ae2..9c1902f 100644 --- a/sysdeps/ieee754/flt-32/e_powf.c +++ b/sysdeps/ieee754/flt-32/e_powf.c @@ -158,9 +158,9 @@ __powf (float x, float y) if (__glibc_unlikely (zeroinfnan (iy))) { if (2 * iy == 0) - return issignalingf_inline (x) ? x + y : 1.0f; + return issignaling (x) ? x + y : 1.0f; if (ix == 0x3f800000) - return issignalingf_inline (y) ? x + y : 1.0f; + return issignaling (y) ? x + y : 1.0f; if (2 * ix > 2u * 0x7f800000 || 2 * iy > 2u * 0x7f800000) return x + y; if (2 * ix == 2 * 0x3f800000) diff --git a/sysdeps/ieee754/flt-32/math_config.h b/sysdeps/ieee754/flt-32/math_config.h index c5e9299..57cf441 100644 --- a/sysdeps/ieee754/flt-32/math_config.h +++ b/sysdeps/ieee754/flt-32/math_config.h @@ -101,15 +101,6 @@ asdouble (uint64_t i) return u.f; } -static inline int -issignalingf_inline (float x) -{ - uint32_t ix = asuint (x); - if (HIGH_ORDER_BIT_IS_SET_FOR_SNAN) - return (ix & 0x7fc00000) == 0x7fc00000; - return 2 * (ix ^ 0x00400000) > 2u * 0x7fc00000; -} - #define NOINLINE __attribute__ ((noinline)) attribute_hidden float __math_oflowf (uint32_t);