From patchwork Mon Dec 9 12:46:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Liebler X-Patchwork-Id: 36662 Received: (qmail 105279 invoked by alias); 9 Dec 2019 12:52:27 -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 105270 invoked by uid 89); 9 Dec 2019 12:52:27 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-23.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mx0a-001b2d01.pphosted.com From: Stefan Liebler To: libc-alpha@sourceware.org Cc: Stefan Liebler Subject: [PATCH v2 17/18] Adjust s_ceilf.c and s_ceill.c regarding code style. Date: Mon, 9 Dec 2019 13:46:07 +0100 In-Reply-To: <1575895568-26473-1-git-send-email-stli@linux.ibm.com> References: <1575895568-26473-1-git-send-email-stli@linux.ibm.com> x-cbid: 19120912-0020-0000-0000-00000395D59E X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19120912-0021-0000-0000-000021ED1074 Message-Id: <1575895568-26473-18-git-send-email-stli@linux.ibm.com> This patch just adjusts the generic implementation regarding code style. No functional change. Reviewed-by: Adhemerval Zanella --- sysdeps/ieee754/flt-32/s_ceilf.c | 54 +++++++++++------- sysdeps/ieee754/ldbl-128/s_ceill.c | 91 +++++++++++++++++++----------- 2 files changed, 92 insertions(+), 53 deletions(-) diff --git a/sysdeps/ieee754/flt-32/s_ceilf.c b/sysdeps/ieee754/flt-32/s_ceilf.c index 7d4990f3ff..5c4abfe145 100644 --- a/sysdeps/ieee754/flt-32/s_ceilf.c +++ b/sysdeps/ieee754/flt-32/s_ceilf.c @@ -20,34 +20,46 @@ #include float -__ceilf(float x) +__ceilf (float x) { #if USE_CEILF_BUILTIN return __builtin_ceilf (x); #else /* Use generic implementation. */ - int32_t i0,j0; - uint32_t i; + int32_t i0, j0; + uint32_t i; - GET_FLOAT_WORD(i0,x); - j0 = ((i0>>23)&0xff)-0x7f; - if(j0<23) { - if(j0<0) { - /* return 0*sign(x) if |x|<1 */ - if(i0<0) {i0=0x80000000;} - else if(i0!=0) { i0=0x3f800000;} - } else { - i = (0x007fffff)>>j0; - if((i0&i)==0) return x; /* x is integral */ - if(i0>0) i0 += (0x00800000)>>j0; - i0 &= (~i); - } - } else { - if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */ - else return x; /* x is integral */ + GET_FLOAT_WORD (i0, x); + j0 = ((i0 >> 23) & 0xff) - 0x7f; + if (j0 < 23) + { + if (j0 < 0) + { + /* return 0 * sign (x) if |x| < 1 */ + if (i0 < 0) + i0 = 0x80000000; + else if (i0 != 0) + i0 = 0x3f800000; } - SET_FLOAT_WORD(x,i0); - return x; + else + { + i = (0x007fffff) >> j0; + if ((i0 & i) == 0) + return x; /* x is integral */ + if (i0 > 0) + i0 += (0x00800000) >> j0; + i0 &= (~i); + } + } + else + { + if (__glibc_unlikely (j0 == 0x80)) + return x + x; /* inf or NaN */ + else + return x; /* x is integral */ + } + SET_FLOAT_WORD (x, i0); + return x; #endif /* ! USE_CEILF_BUILTIN */ } #ifndef __ceilf diff --git a/sysdeps/ieee754/ldbl-128/s_ceill.c b/sysdeps/ieee754/ldbl-128/s_ceill.c index 02ffa7af2b..c5d98e1e37 100644 --- a/sysdeps/ieee754/ldbl-128/s_ceill.c +++ b/sysdeps/ieee754/ldbl-128/s_ceill.c @@ -13,7 +13,7 @@ * ==================================================== */ -#if defined(LIBM_SCCS) && !defined(lint) +#if defined (LIBM_SCCS) && ! defined (lint) static char rcsid[] = "$NetBSD: $"; #endif @@ -30,45 +30,72 @@ static char rcsid[] = "$NetBSD: $"; #include #include -_Float128 __ceill(_Float128 x) +_Float128 +__ceill (_Float128 x) { #if USE_CEILL_BUILTIN return __builtin_ceill (x); #else /* Use generic implementation. */ - int64_t i0,i1,j0; - uint64_t i,j; - GET_LDOUBLE_WORDS64(i0,i1,x); - j0 = ((i0>>48)&0x7fff)-0x3fff; - if(j0<48) { - if(j0<0) { - /* return 0*sign(x) if |x|<1 */ - if(i0<0) {i0=0x8000000000000000ULL;i1=0;} - else if((i0|i1)!=0) { i0=0x3fff000000000000ULL;i1=0;} - } else { - i = (0x0000ffffffffffffULL)>>j0; - if(((i0&i)|i1)==0) return x; /* x is integral */ - if(i0>0) i0 += (0x0001000000000000LL)>>j0; - i0 &= (~i); i1=0; + int64_t i0, i1, j0; + uint64_t i, j; + GET_LDOUBLE_WORDS64 (i0, i1, x); + j0 = ((i0 >> 48) & 0x7fff) - 0x3fff; + if (j0 < 48) + { + if (j0 < 0) + { + /* return 0 * sign (x) if |x| < 1 */ + if (i0 < 0) + { + i0 = 0x8000000000000000ULL; + i1 = 0; } - } else if (j0>111) { - if(j0==0x4000) return x+x; /* inf or NaN */ - else return x; /* x is integral */ - } else { - i = -1ULL>>(j0-48); - if((i1&i)==0) return x; /* x is integral */ - if(i0>0) { - if(j0==48) i0+=1; - else { - j = i1+(1LL<<(112-j0)); - if(j> j0; + if (((i0 & i) | i1) == 0) + return x; /* x is integral */ + if (i0 > 0) + i0 += (0x0001000000000000LL) >> j0; + i0 &= (~i); + i1 = 0; + } + } + else if (j0 > 111) + { + if (j0 == 0x4000) + return x + x; /* inf or NaN */ + else + return x; /* x is integral */ + } + else + { + i = -1ULL >> (j0 - 48); + if ((i1 & i) == 0) + return x; /* x is integral */ + if (i0 > 0) + { + if (j0 == 48) + i0 += 1; + else + { + j = i1 + (1LL << (112 - j0)); + if (j < i1) + i0 += 1; /* got a carry */ + i1 = j; + } + } + i1 &= (~i); + } + SET_LDOUBLE_WORDS64 (x, i0, i1); + return x; #endif /* ! USE_CEILL_BUILTIN */ } libm_alias_ldouble (__ceil, ceil)