From patchwork Tue Sep 26 10:59:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 23148 Received: (qmail 36867 invoked by alias); 26 Sep 2017 10:59:48 -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 36581 invoked by uid 89); 26 Sep 2017 10:59:47 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LOTSOFHASH, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=chris X-HELO: EUR03-VE1-obe.outbound.protection.outlook.com From: Wilco Dijkstra To: "libc-alpha@sourceware.org" CC: nd Subject: [PATCH] Remove ancient __signbit inlines Date: Tue, 26 Sep 2017 10:59:40 +0000 Message-ID: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Wilco.Dijkstra@arm.com; x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DB6PR0801MB2056; 6:kgkajjriJ5yGSGCxLARJa485EA7UGTTs1bWefDVifAtMZ6sI/2SHJxVg0lAB/Y18eCzy9gWzxV2jZl327TIJrj4BcZyHSHili7GJKGl8xUsWw36B+O4f9Dx6JcdTwDeO9jyYwOn22vApO9p0zzrNgIOWmCzyHk7Srg9y3yoZpeWWrwAjSChY9ls0UPq0l/oL0reSfUI5lfHouEGvkXXIhP7lTgp7znB1Ke5AOWapfvVklIstpxoRYHR9tQMhf68goU0FqeOomcCz5vZlsjooyn8tfjx/baZp5SjLktqmF2afcbbiw1nvKPiIcQygUBOg0wG6n5g6cbogEX+mSk6yIg==; 5:oCFf9tVgPSB42wJrGcfj0uhxixUXeaWaRC57qBb6jtpflEohqrc4Bf45qL0V5XKMULKGbHKWw4b9MTLPh2MxDIY2UsrUN9txiHjwrqjcdR0qEtsu52PU3zyR+ZCV9Vkb0uGNFu7hD2yR/M1uvJ1LpA==; 24:6L9gAfWmVuSEY/7QMZIyiNwAtlYvXLR+xurtzYuSx44Z9WIRRQqHqBiwkbHTWkXQUZhqaM2QVCQUeMmXd17nyWhcLkGz5CxhOtt/Z6bghxo=; 7:lOLtzubnBHo/bGgPtsUTFFCJ68D1/erqojSkEDa25S+omHkrmNn6+4BGMU3WuwJV+61kpWztdRfYArkAPff/yXCJWTWDaETMBT9G1RTZoiz/ghdNtWMMhLyjaa3QcXnojZzrajSFM3kklk7uZXf+2bU0Lhux6ZnE24HV32zvt+0lfYUS5F9YGp2PmwhV1TERVOTbLpj6dA8jE0j3Q1zt9v7bn6oEVtWn0n/UUAVUTz8= x-ms-exchange-antispam-srfa-diagnostics: SSOS; x-ms-office365-filtering-correlation-id: dec55249-6a02-4fec-b7e3-08d504cdafac x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:DB6PR0801MB2056; x-ms-traffictypediagnostic: DB6PR0801MB2056: nodisclaimer: True x-exchange-antispam-report-test: UriScan:(250305191791016)(180628864354917)(22074186197030); x-microsoft-antispam-prvs: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6055026)(6041248)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB6PR0801MB2056; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB6PR0801MB2056; x-forefront-prvs: 0442E569BC x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(377424004)(189002)(199003)(54534003)(81156014)(66066001)(8936002)(106356001)(54356999)(81166006)(105586002)(68736007)(6506006)(50986999)(8676002)(53946003)(7696004)(53936002)(478600001)(72206003)(2501003)(6306002)(102836003)(9686003)(5250100002)(5660300001)(2900100001)(55016002)(14454004)(99286003)(101416001)(3846002)(2351001)(25786009)(5640700003)(316002)(2906002)(4326008)(74316002)(575784001)(6116002)(86362001)(3280700002)(7736002)(305945005)(6436002)(97736004)(6916009)(189998001)(33656002)(3660700001)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR0801MB2056; H:DB6PR0801MB2053.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Sep 2017 10:59:40.3682 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB2056 Remove __signbit inlines from mathinline.h. Math.h already uses the builtin when supported, so additional inlines are only used on pre 4.0 GCCs. Similarly remove a few old copysign and fabs inlines. OK for commit? ChangeLog: 2017-09-25 Wilco Dijkstra * sysdeps/alpha/fpu/bits/mathinline.h (__inline_copysign): Remove. (__inline_fabs): Remove. (__signbitf): Remove. (__signbit): Remove. (__signbitl): Remove. * sysdeps/ia64/fpu/bits/mathinline.h: Delete file. * sysdeps/m68k/coldfire/fpu/bits/mathinline.h: Delete file. * sysdeps/m68k/m680x0/fpu/bits/mathinline.h: (__signbitf): Remove. (__signbit): Remove. (__signbitl): Remove. * sysdeps/powerpc/bits/mathinline.h (__signbitf): Remove. (__signbit): Remove. (__signbitl): Remove. * sysdeps/s390/fpu/bits/mathinline.h: Delete file. * sysdeps/sparc/fpu/bits/mathinline.h (__signbitf): Remove. (__signbit): Remove. (__signbitl): Remove. * sysdeps/tile/bits/mathinline.h: Delete file. * sysdeps/x86/fpu/bits/mathinline.h (__signbitf): Remove. (__signbit): Remove. (__signbitl): Remove. diff --git a/sysdeps/alpha/fpu/bits/mathinline.h b/sysdeps/alpha/fpu/bits/mathinline.h index 00c8c42a83bc904c4c788db57753ff95b299f3c8..ceb8a4416c7b1d8372cd2048893536966de8ead1 100644 --- a/sysdeps/alpha/fpu/bits/mathinline.h +++ b/sysdeps/alpha/fpu/bits/mathinline.h @@ -42,84 +42,4 @@ __r != 0; })) #endif /* ISO C99 */ -#if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \ - && defined __OPTIMIZE__ - -#if !__GNUC_PREREQ (4, 0) -# define __inline_copysign(NAME, TYPE) \ -__MATH_INLINE TYPE \ -__NTH (NAME (TYPE __x, TYPE __y)) \ -{ \ - TYPE __z; \ - __asm ("cpys %1, %2, %0" : "=f" (__z) : "f" (__y), "f" (__x)); \ - return __z; \ -} - -__inline_copysign (__copysignf, float) -__inline_copysign (copysignf, float) -__inline_copysign (__copysign, double) -__inline_copysign (copysign, double) - -# undef __inline_copysign -#endif - - -#if !__GNUC_PREREQ (2, 8) -# define __inline_fabs(NAME, TYPE) \ -__MATH_INLINE TYPE \ -__NTH (NAME (TYPE __x)) \ -{ \ - TYPE __z; \ - __asm ("cpys $f31, %1, %0" : "=f" (__z) : "f" (__x)); \ - return __z; \ -} - -__inline_fabs (__fabsf, float) -__inline_fabs (fabsf, float) -__inline_fabs (__fabs, double) -__inline_fabs (fabs, double) - -# undef __inline_fabs -#endif - -#ifdef __USE_ISOC99 - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ -#if !__GNUC_PREREQ (4, 0) - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -#else - return __builtin_signbitf (__x); -#endif -} - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ -#if !__GNUC_PREREQ (4, 0) - __extension__ union { double __d; long __i; } __u = { __d: __x }; - return __u.__i < 0; -#else - return __builtin_signbit (__x); -#endif -} - -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ -#if !__GNUC_PREREQ (4, 0) - __extension__ union { - long double __d; - long __i[sizeof(long double)/sizeof(long)]; - } __u = { __d: __x }; - return __u.__i[sizeof(long double)/sizeof(long) - 1] < 0; -#else - return __builtin_signbitl (__x); -#endif -} -#endif /* C99 */ - #endif /* __NO_MATH_INLINES */ diff --git a/sysdeps/ia64/fpu/bits/mathinline.h b/sysdeps/ia64/fpu/bits/mathinline.h deleted file mode 100644 index c2107af275ef336995d973c9e0aa96cd75029fc3..0000000000000000000000000000000000000000 --- a/sysdeps/ia64/fpu/bits/mathinline.h +++ /dev/null @@ -1,53 +0,0 @@ -/* Inline math functions for ia64. - Copyright (C) 2004-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _MATH_H -# error "Never use directly; include instead." -#endif - -#ifndef __extern_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_inline -#endif - -#if defined __USE_ISOC99 && defined __GNUC__ && __GNUC__ >= 2 -/* The gcc, version 2.7 or below, has problems with all this inlining - code. So disable it for this version of the compiler. */ -# if __GNUC_PREREQ (2, 8) -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; - return __u.__i[1] < 0; -} -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; int __i[3]; } __u = { __l: __x }; - return (__u.__i[2] & 0x8000) != 0; -} -# endif -#endif diff --git a/sysdeps/m68k/coldfire/fpu/bits/mathinline.h b/sysdeps/m68k/coldfire/fpu/bits/mathinline.h deleted file mode 100644 index 7dbfe37ee1efddcf4994ab1b94a06e620bbe01cd..0000000000000000000000000000000000000000 --- a/sysdeps/m68k/coldfire/fpu/bits/mathinline.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Inline math functions for Coldfire. - Copyright (C) 2012-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _MATH_H -# error "Never use directly; include instead." -#endif - -#ifndef __extern_always_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_always_inline -#endif - -#if defined __USE_ISOC99 && defined __GNUC__ - -/* Test for negative number. Used in the signbit macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - return __builtin_signbitf (__x); -} - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - return __builtin_signbit (__x); -} - -#endif diff --git a/sysdeps/m68k/m680x0/fpu/bits/mathinline.h b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h index b92b1f83e7f6f39698ad8501bb2dec40d02c29ba..759c83d2b14323b13eccbfc02c15298fd875257c 100644 --- a/sysdeps/m68k/m680x0/fpu/bits/mathinline.h +++ b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h @@ -83,26 +83,6 @@ : "=dm" (__result) : "f" (x), "f" (y)); \ __result != 0; }) # endif /* GCC 3.1 */ - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; - return __u.__i[0] < 0; -} -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __d; int __i[3]; } __u = { __d: __x }; - return __u.__i[0] < 0; -} #endif diff --git a/sysdeps/powerpc/bits/mathinline.h b/sysdeps/powerpc/bits/mathinline.h index e5f0cd30f2598f9ad78fdb079713d742251b9139..3c297899c50bb148059e6339db9c68d8da93229c 100644 --- a/sysdeps/powerpc/bits/mathinline.h +++ b/sysdeps/powerpc/bits/mathinline.h @@ -54,38 +54,6 @@ # endif /* __GNUC_PREREQ (2,97) */ -/* The gcc, version 2.7 or below, has problems with all this inlining - code. So disable it for this version of the compiler. */ -# if __GNUC_PREREQ (2, 8) -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ -#if __GNUC_PREREQ (4, 0) - return __builtin_signbitf (__x); -#else - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -#endif -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ -#if __GNUC_PREREQ (4, 0) - return __builtin_signbit (__x); -#else - __extension__ union { double __d; long long __i; } __u = { __d: __x }; - return __u.__i < 0; -#endif -} -# ifdef __LONG_DOUBLE_128__ -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - return __signbit ((double) __x); -} -# endif -# endif #endif /* __USE_ISOC99 */ #if !defined __NO_MATH_INLINES && defined __OPTIMIZE__ diff --git a/sysdeps/s390/fpu/bits/mathinline.h b/sysdeps/s390/fpu/bits/mathinline.h deleted file mode 100644 index 76b3be50c4e347281ed7790aa5eafbdb36d95052..0000000000000000000000000000000000000000 --- a/sysdeps/s390/fpu/bits/mathinline.h +++ /dev/null @@ -1,66 +0,0 @@ -/* Inline math functions for s390. - Copyright (C) 2004-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#ifndef _MATH_H -# error "Never use directly; include instead." -#endif - -#ifndef __extern_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_inline -#endif - -#if (!defined __NO_MATH_INLINES || defined __LIBC_INTERNAL_MATH_INLINES) \ - && defined __OPTIMIZE__ - -#ifdef __USE_ISOC99 - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -} - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; long __i; } __u = { __d: __x }; - return __u.__i < 0; -} - -# ifndef __NO_LONG_DOUBLE_MATH -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; int __i[4]; } __u = { __l: __x }; - return __u.__i[0] < 0; -} -# else -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - return __signbit ((double) __x); -} -# endif - -#endif /* C99 */ - -#endif /* __NO_MATH_INLINES */ diff --git a/sysdeps/sparc/fpu/bits/mathinline.h b/sysdeps/sparc/fpu/bits/mathinline.h index 2939af5bc623287bab02dab72d664509d435f2f9..9b2847b6a882c2eb029c835c1e34101257240928 100644 --- a/sysdeps/sparc/fpu/bits/mathinline.h +++ b/sysdeps/sparc/fpu/bits/mathinline.h @@ -132,67 +132,6 @@ # define __MATH_INLINE __extern_inline # endif /* __cplusplus */ -/* The gcc, version 2.7 or below, has problems with all this inlining - code. So disable it for this version of the compiler. */ -# if __GNUC_PREREQ (2, 8) - -# ifdef __USE_ISOC99 - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -} - -# if __WORDSIZE == 32 - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; - return __u.__i[0] < 0; -} - -# ifndef __NO_LONG_DOUBLE_MATH -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; int __i[4]; } __u = { __l: __x }; - return __u.__i[0] < 0; -} -# else -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - return __signbit ((double)__x); -} -# endif - -# else /* sparc64 */ - -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - __extension__ union { double __d; long int __i; } __u = { __d: __x }; - return __u.__i < 0; -} - -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; long int __i[2]; } __u = { __l: __x }; - return __u.__i[0] < 0; -} - -# endif /* sparc64 */ - -# endif /* __USE_ISOC99 */ - -/* This code is used internally in the GNU libc. */ -# endif /* gcc 2.8+ */ - # ifdef __USE_ISOC99 # ifndef __NO_MATH_INLINES diff --git a/sysdeps/tile/bits/mathinline.h b/sysdeps/tile/bits/mathinline.h deleted file mode 100644 index 5692d91004c28891b81fc5021d604f0c9aec35d9..0000000000000000000000000000000000000000 --- a/sysdeps/tile/bits/mathinline.h +++ /dev/null @@ -1,44 +0,0 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library. If not, see - . */ - -#ifndef _MATH_H -# error "Never use directly; include instead." -#endif - -#ifndef __extern_always_inline -# define __MATH_INLINE __inline -#else -# define __MATH_INLINE __extern_always_inline -#endif - - -#if defined __USE_ISOC99 && defined __GNUC__ - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ - return __builtin_signbitf (__x); -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ - return __builtin_signbit (__x); -} - -#endif diff --git a/sysdeps/x86/fpu/bits/mathinline.h b/sysdeps/x86/fpu/bits/mathinline.h index a183693ae6978a875f80bfd61a1fa5e5333de204..41250b452c7c291537a7ba3718b55f58c90a4600 100644 --- a/sysdeps/x86/fpu/bits/mathinline.h +++ b/sysdeps/x86/fpu/bits/mathinline.h @@ -117,43 +117,6 @@ # endif /* __i686__ */ # endif /* GCC 2.97 */ -/* The gcc, version 2.7 or below, has problems with all this inlining - code. So disable it for this version of the compiler. */ -# if __GNUC_PREREQ (2, 8) - -/* Test for negative number. Used in the signbit() macro. */ -__MATH_INLINE int -__NTH (__signbitf (float __x)) -{ -# ifdef __SSE2_MATH__ - int __m; - __asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x)); - return (__m & 0x8) != 0; -# else - __extension__ union { float __f; int __i; } __u = { __f: __x }; - return __u.__i < 0; -# endif -} -__MATH_INLINE int -__NTH (__signbit (double __x)) -{ -# ifdef __SSE2_MATH__ - int __m; - __asm ("pmovmskb %1, %0" : "=r" (__m) : "x" (__x)); - return (__m & 0x80) != 0; -# else - __extension__ union { double __d; int __i[2]; } __u = { __d: __x }; - return __u.__i[1] < 0; -# endif -} -__MATH_INLINE int -__NTH (__signbitl (long double __x)) -{ - __extension__ union { long double __l; int __i[3]; } __u = { __l: __x }; - return (__u.__i[2] & 0x8000) != 0; -} - -# endif #endif