[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r18096 - in /fsf/trunk/libc: ./ include/sys/ math/ sysdeps/generic/ sysdeps/i386/fpu/ sysdeps/ieee754/dbl-64/ sysdeps/ieee75...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r18096 - in /fsf/trunk/libc: ./ include/sys/ math/ sysdeps/generic/ sysdeps/i386/fpu/ sysdeps/ieee754/dbl-64/ sysdeps/ieee75...
- From: eglibc@xxxxxxxxxx
- Date: Wed, 18 Apr 2012 00:01:36 -0000
Author: eglibc
Date: Wed Apr 18 00:01:35 2012
New Revision: 18096
Log:
Import glibc-mainline for 2012-04-18
Added:
fsf/trunk/libc/math/w_ilogb.c
fsf/trunk/libc/math/w_ilogbf.c
fsf/trunk/libc/math/w_ilogbl.c
fsf/trunk/libc/sysdeps/i386/fpu/e_ilogb.S
fsf/trunk/libc/sysdeps/i386/fpu/e_ilogbf.S
fsf/trunk/libc/sysdeps/i386/fpu/e_ilogbl.S
fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_ilogb.c
fsf/trunk/libc/sysdeps/ieee754/flt-32/e_ilogbf.c
fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c
fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/w_ilogb.c
fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/w_ilogbl.c
fsf/trunk/libc/sysdeps/x86_64/fpu/e_ilogbl.S
Removed:
fsf/trunk/libc/sysdeps/i386/fpu/s_ilogb.S
fsf/trunk/libc/sysdeps/i386/fpu/s_ilogbf.S
fsf/trunk/libc/sysdeps/i386/fpu/s_ilogbl.S
fsf/trunk/libc/sysdeps/ieee754/dbl-64/s_ilogb.c
fsf/trunk/libc/sysdeps/ieee754/flt-32/s_ilogbf.c
fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c
fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/s_ilogb.c
fsf/trunk/libc/sysdeps/x86_64/fpu/s_ilogbl.S
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/NEWS
fsf/trunk/libc/include/sys/uio.h
fsf/trunk/libc/math/Makefile
fsf/trunk/libc/math/libm-test.inc
fsf/trunk/libc/sysdeps/generic/math_private.h
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Wed Apr 18 00:01:35 2012
@@ -1,3 +1,48 @@
+2012-04-17 Andreas Schwab <schwab@xxxxxxxxxxxxxx>
+
+ * sysdeps/i386/fpu/e_ilogb.S: Remove __ilogb*_finite alias.
+ * sysdeps/i386/fpu/e_ilogbf.S: Likewise.
+ * sysdeps/i386/fpu/e_ilogbl.S: Likewise.
+ * sysdeps/x86_64/fpu/e_ilogbl.S: Likewise.
+ * sysdeps/ieee754/dbl-64/e_ilogb.c: Likewise.
+ * sysdeps/ieee754/flt-32/e_ilogbf.c: Likewise.
+
+2012-04-17 Adhemerval Zanella <azanella@xxxxxxxxxxxxxxxxxx>
+
+ [BZ #6794]
+ * math/Makefile: Add e_ilogb and w_ilogb, remove s_logb.
+ * math/libm-test.inc: Add ilogb errno and exception tests.
+ * math/w_ilogb.c: New file: ilogb wrapper.
+ * math/w_ilogbf.c: New file: ilogbf wrapper.
+ * math/w_ilogbl.c: New file: ilogbl wrapper.
+ * sysdeps/generic/math_private.h: Add __ieee754_ilogb[l|f] prototypes.
+ * sysdeps/i386/fpu/s_ilogb.S: Moved to ...
+ * sysdeps/i386/fpu/e_ilogb.S: ... here. Also fixed a FE_DIVBYZERO
+ exception being thrown with 0.0 as argument.
+ * sysdeps/i386/fpu/s_ilogbf.S: Moved to ...
+ * sysdeps/i386/fpu/e_ilogbf.S: ... here. Also fixed a FE_DIVBYZERO
+ exception being thrown with 0.0 as argument.
+ * sysdeps/i386/fpu/s_ilogbl.S: Moved to ...
+ * sysdeps/i386/fpu/e_ilogbl.S: ... here. Also fixed a FE_DIVBYZERO
+ exception being thrown with 0.0 as argument.
+ * sysdeps/x86_64/fpu/s_ilogbl.S: Moved to ...
+ * sysdeps/x86_64/fpu/e_ilogbl.S: ... here. Also fixed a FE_DIVBYZERO
+ exception being thrown with 0.0 as argument.
+ * sysdeps/ieee754/dbl-64/s_ilogb.c: Moved to ...
+ * sysdeps/ieee754/dbl-64/e_ilogb.c: ... here.
+ * sysdeps/ieee754/flt-32/e_ilogbf.c: Moved to ...
+ * sysdeps/ieee754/flt-32/e_ilogbf.c: ... here.
+ * sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c: Moved to ...
+ * sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c: ... here.
+ * sysdeps/ieee754/ldbl-opt/s_ilogb.c: Moved to ...
+ * sysdeps/ieee754/ldbl-opt/w_ilogb.c: ... here.
+ * sysdeps/ieee754/ldbl-opt/w_ilogbl.c: New file: ilogbl wrapper.
+
+2012-04-17 Petr Baudis <pasky@xxxxxx>
+
+ * include/sys/uio.h: Change __vector to __iovec to avoid clash
+ with altivec.
+
2012-04-16 Marek Polacek <polacek@xxxxxxxxxx>
* elf/pldd-xx.c: Rename static_assert to pldd_assert.
Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Wed Apr 18 00:01:35 2012
@@ -12,16 +12,16 @@
174, 350, 369, 411, 706, 2074, 2541, 2547, 2548, 2551, 2552, 2553, 2554,
2562, 2563, 2565, 2566, 2576, 2636, 2678, 3335, 3768, 3866, 3868, 3976,
3992, 4026, 4108, 4596, 4822, 5077, 5461, 5805, 5993, 6471, 6486, 6578,
- 6649, 6730, 6770, 6884, 6890, 6894, 6895, 6907, 6911, 9739, 9902, 10110,
- 10135, 10140, 10153, 10210, 10254, 10346, 10545, 10716, 11174, 11322,
- 11365, 11451, 11494, 11521, 11959, 12047, 12340, 13058, 13525, 13526,
- 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551, 13552,
- 13553, 13555, 13559, 13566, 13583, 13592, 13618, 13637, 13656, 13658,
- 13673, 13691, 13695, 13704, 13705, 13706, 13726, 13738, 13760, 13761,
- 13786, 13792, 13806, 13824, 13840, 13841, 13844, 13846, 13851, 13852,
- 13854, 13871, 13872, 13873, 13879, 13883, 13892, 13895, 13908, 13910,
- 13911, 13912, 13913, 13915, 13916, 13917, 13918, 13919, 13920, 13921,
- 13926, 13928, 13938, 13963, 13967, 13973
+ 6649, 6730, 6770, 6794, 6884, 6890, 6894, 6895, 6907, 6911, 9739, 9902,
+ 10110, 10135, 10140, 10153, 10210, 10254, 10346, 10545, 10716, 11174,
+ 11322, 11365, 11451, 11494, 11521, 11959, 12047, 12340, 13058, 13525,
+ 13526, 13527, 13528, 13529, 13530, 13531, 13532, 13533, 13547, 13551,
+ 13552, 13553, 13555, 13559, 13566, 13583, 13592, 13618, 13637, 13656,
+ 13658, 13673, 13691, 13695, 13704, 13705, 13706, 13726, 13738, 13760,
+ 13761, 13786, 13792, 13806, 13824, 13840, 13841, 13844, 13846, 13851,
+ 13852, 13854, 13871, 13872, 13873, 13879, 13883, 13892, 13895, 13908,
+ 13910, 13911, 13912, 13913, 13915, 13916, 13917, 13918, 13919, 13920,
+ 13921, 13926, 13928, 13938, 13963, 13967, 13973
* ISO C11 support:
Modified: fsf/trunk/libc/include/sys/uio.h
==============================================================================
--- fsf/trunk/libc/include/sys/uio.h (original)
+++ fsf/trunk/libc/include/sys/uio.h Wed Apr 18 00:01:35 2012
@@ -3,13 +3,13 @@
#ifndef _ISOMAC
/* Now define the internal interfaces. */
-extern ssize_t __readv (int __fd, const struct iovec *__vector,
+extern ssize_t __readv (int __fd, const struct iovec *__iovec,
int __count);
-extern ssize_t __libc_readv (int __fd, const struct iovec *__vector,
+extern ssize_t __libc_readv (int __fd, const struct iovec *__iovec,
int __count);
-extern ssize_t __writev (int __fd, const struct iovec *__vector,
+extern ssize_t __writev (int __fd, const struct iovec *__iovec,
int __count);
-extern ssize_t __libc_writev (int __fd, const struct iovec *__vector,
+extern ssize_t __libc_writev (int __fd, const struct iovec *__iovec,
int __count);
#endif
#endif
Modified: fsf/trunk/libc/math/Makefile
==============================================================================
--- fsf/trunk/libc/math/Makefile (original)
+++ fsf/trunk/libc/math/Makefile Wed Apr 18 00:01:35 2012
@@ -42,14 +42,16 @@
libm-calls = e_acos e_acosh e_asin e_atan2 e_atanh e_cosh e_exp e_fmod \
e_hypot e_j0 e_j1 e_jn e_lgamma_r e_log e_log10 e_pow \
e_rem_pio2 e_remainder e_scalb e_sinh e_sqrt e_gamma_r \
+ e_ilogb \
k_cos k_rem_pio2 k_sin k_tan s_asinh s_atan s_cbrt \
s_ceil s_cos s_erf s_expm1 s_fabs \
- s_floor s_ilogb s_log1p s_logb \
+ s_floor s_log1p s_logb \
s_nextafter s_nexttoward s_rint s_scalbln \
s_significand s_sin s_tan s_tanh w_acos w_acosh w_asin \
w_atan2 w_atanh w_cosh w_drem w_exp w_exp2 w_exp10 w_fmod \
w_tgamma w_hypot w_j0 w_j1 w_jn w_lgamma w_lgamma_r \
w_log w_log10 w_pow w_remainder w_scalb w_sinh w_sqrt \
+ w_ilogb \
s_fpclassify s_fmax s_fmin s_fdim s_nan s_trunc \
s_remquo e_log2 e_exp2 s_round s_nearbyint s_sincos \
conj cimag creal cabs carg s_cexp s_csinh s_ccosh s_clog \
Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Wed Apr 18 00:01:35 2012
@@ -3802,13 +3802,22 @@
TEST_f_i (ilogb, 1024, 10);
TEST_f_i (ilogb, -2000, 10);
- /* XXX We have a problem here: the standard does not tell us whether
- exceptions are allowed/required. ignore them for now. */
-
- TEST_f_i (ilogb, 0.0, FP_ILOGB0, EXCEPTIONS_OK);
- TEST_f_i (ilogb, nan_value, FP_ILOGBNAN, EXCEPTIONS_OK);
- TEST_f_i (ilogb, plus_infty, INT_MAX, EXCEPTIONS_OK);
- TEST_f_i (ilogb, minus_infty, INT_MAX, EXCEPTIONS_OK);
+ /* ilogb (0.0) == FP_ILOGB0 plus invalid exception */
+ errno = 0;
+ TEST_f_i (ilogb, 0.0, FP_ILOGB0, INVALID_EXCEPTION);
+ check_int ("errno for ilogb(0.0) unchanged", errno, EDOM, 0, 0, 0);
+ /* ilogb (NaN) == FP_ILOGBNAN plus invalid exception */
+ errno = 0;
+ TEST_f_i (ilogb, nan_value, FP_ILOGBNAN, INVALID_EXCEPTION);
+ check_int ("errno for ilogb(NaN) unchanged", errno, EDOM, 0, 0, 0);
+ /* ilogb (inf) == INT_MAX plus invalid exception */
+ errno = 0;
+ TEST_f_i (ilogb, plus_infty, INT_MAX, INVALID_EXCEPTION);
+ check_int ("errno for ilogb(Inf) unchanged", errno, EDOM, 0, 0, 0);
+ /* ilogb (-inf) == INT_MAX plus invalid exception */
+ errno = 0;
+ TEST_f_i (ilogb, minus_infty, INT_MAX, INVALID_EXCEPTION);
+ check_int ("errno for ilogb(-Inf) unchanged", errno, EDOM, 0, 0, 0);
END (ilogb);
}
Added: fsf/trunk/libc/math/w_ilogb.c
==============================================================================
--- fsf/trunk/libc/math/w_ilogb.c (added)
+++ fsf/trunk/libc/math/w_ilogb.c Wed Apr 18 00:01:35 2012
@@ -1,0 +1,42 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Adhemerval Zanella <azanella@xxxxxxxxxxxxxxxxxx>, 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
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <errno.h>
+#include <math_private.h>
+
+/* wrapper ilogb */
+int
+__ilogb (double x)
+{
+ int r = __ieee754_ilogb (x);
+ if (__builtin_expect (r == FP_ILOGB0, 0)
+ || __builtin_expect (r == FP_ILOGBNAN, 0)
+ || __builtin_expect (r == INT_MAX, 0))
+ {
+ __set_errno (EDOM);
+ feraiseexcept (FE_INVALID);
+ }
+ return r;
+}
+
+weak_alias (__ilogb, ilogb)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__ilogb, __ilogbl)
+weak_alias (__ilogb, ilogbl)
+#endif
Added: fsf/trunk/libc/math/w_ilogbf.c
==============================================================================
--- fsf/trunk/libc/math/w_ilogbf.c (added)
+++ fsf/trunk/libc/math/w_ilogbf.c Wed Apr 18 00:01:35 2012
@@ -1,0 +1,38 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Adhemerval Zanella <azanella@xxxxxxxxxxxxxxxxxx>, 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
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <errno.h>
+#include <math_private.h>
+
+/* wrapper ilogbf */
+int
+__ilogbf (float x)
+{
+ int r = __ieee754_ilogbf (x);
+ if (__builtin_expect (r == FP_ILOGB0, 0)
+ || __builtin_expect (r == FP_ILOGBNAN, 0)
+ || __builtin_expect (r == INT_MAX, 0))
+ {
+ __set_errno (EDOM);
+ feraiseexcept (FE_INVALID);
+ }
+ return r;
+}
+
+weak_alias (__ilogbf, ilogbf)
Added: fsf/trunk/libc/math/w_ilogbl.c
==============================================================================
--- fsf/trunk/libc/math/w_ilogbl.c (added)
+++ fsf/trunk/libc/math/w_ilogbl.c Wed Apr 18 00:01:35 2012
@@ -1,0 +1,37 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Adhemerval Zanella <azanella@xxxxxxxxxxxxxxxxxx>, 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
+ <http://www.gnu.org/licenses/>. */
+
+#include <math.h>
+#include <errno.h>
+#include <math_private.h>
+
+/* wrapper ilogbl */
+int
+__ilogbl (long double x)
+{
+ int r = __ieee754_ilogbl (x);
+ if (__builtin_expect (r == FP_ILOGB0, 0)
+ || __builtin_expect (r == FP_ILOGBNAN, 0)
+ || __builtin_expect (r == INT_MAX, 0))
+ {
+ __set_errno (EDOM);
+ feraiseexcept (FE_INVALID);
+ }
+ return r;
+}
+weak_alias (__ilogbl, ilogbl)
Modified: fsf/trunk/libc/sysdeps/generic/math_private.h
==============================================================================
--- fsf/trunk/libc/sysdeps/generic/math_private.h (original)
+++ fsf/trunk/libc/sysdeps/generic/math_private.h Wed Apr 18 00:01:35 2012
@@ -213,6 +213,7 @@
extern double __ieee754_remainder (double,double);
extern int32_t __ieee754_rem_pio2 (double,double*);
extern double __ieee754_scalb (double,double);
+extern int __ieee754_ilogb (double);
/* fdlibm kernel function */
extern double __kernel_standard (double,double,int);
@@ -260,6 +261,7 @@
extern float __ieee754_remainderf (float,float);
extern int32_t __ieee754_rem_pio2f (float,float*);
extern float __ieee754_scalbf (float,float);
+extern int __ieee754_ilogbf (float);
/* float versions of fdlibm kernel functions */
@@ -305,6 +307,7 @@
extern long double __ieee754_remainderl (long double,long double);
extern int __ieee754_rem_pio2l (long double,long double*);
extern long double __ieee754_scalbl (long double,long double);
+extern int __ieee754_ilogbl (long double);
/* long double versions of fdlibm kernel functions */
extern long double __kernel_sinl (long double,long double,int);
Added: fsf/trunk/libc/sysdeps/i386/fpu/e_ilogb.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/e_ilogb.S (added)
+++ fsf/trunk/libc/sysdeps/i386/fpu/e_ilogb.S Wed Apr 18 00:01:35 2012
@@ -1,0 +1,42 @@
+/*
+ * Written by J.T. Conklin <jtc@xxxxxxxxxx>.
+ * Public domain.
+ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: s_ilogb.S,v 1.5 1995/10/12 15:53:09 jtc Exp $")
+
+ENTRY(__ieee754_ilogb)
+ fldl 4(%esp)
+/* I added the following ugly construct because ilogb(+-Inf) is
+ required to return INT_MAX in ISO C99.
+ -- jakub@xxxxxxxxxxx */
+ fxam /* Is NaN or +-Inf? */
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 1f /* Is +-Inf, jump. */
+ cmpb $0x40, %dh
+ je 2f /* Is +-0, jump. */
+
+ fxtract
+ pushl %eax
+ cfi_adjust_cfa_offset (4)
+ fstp %st
+
+ fistpl (%esp)
+ fwait
+ popl %eax
+ cfi_adjust_cfa_offset (-4)
+
+ ret
+
+1: fstp %st
+ movl $0x7fffffff, %eax
+ ret
+2: fstp %st
+ movl $0x80000000, %eax /* FP_ILOGB0 */
+ ret
+END (__ieee754_ilogb)
Added: fsf/trunk/libc/sysdeps/i386/fpu/e_ilogbf.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/e_ilogbf.S (added)
+++ fsf/trunk/libc/sysdeps/i386/fpu/e_ilogbf.S Wed Apr 18 00:01:35 2012
@@ -1,0 +1,42 @@
+/*
+ * Written by J.T. Conklin <jtc@xxxxxxxxxx>.
+ * Public domain.
+ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: s_ilogbf.S,v 1.4 1995/10/22 20:32:43 pk Exp $")
+
+ENTRY(__ieee754_ilogbf)
+ flds 4(%esp)
+/* I added the following ugly construct because ilogb(+-Inf) is
+ required to return INT_MAX in ISO C99.
+ -- jakub@xxxxxxxxxxx */
+ fxam /* Is NaN or +-Inf? */
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 1f /* Is +-Inf, jump. */
+ cmpb $0x40, %dh
+ je 2f /* Is +-0, jump. */
+
+ fxtract
+ pushl %eax
+ cfi_adjust_cfa_offset (4)
+ fstp %st
+
+ fistpl (%esp)
+ fwait
+ popl %eax
+ cfi_adjust_cfa_offset (-4)
+
+ ret
+
+1: fstp %st
+ movl $0x7fffffff, %eax
+ ret
+2: fstp %st
+ movl $0x80000000, %eax /* FP_ILOGB0 */
+ ret
+END (__ieee754_ilogbf)
Added: fsf/trunk/libc/sysdeps/i386/fpu/e_ilogbl.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/e_ilogbl.S (added)
+++ fsf/trunk/libc/sysdeps/i386/fpu/e_ilogbl.S Wed Apr 18 00:01:35 2012
@@ -1,0 +1,43 @@
+/*
+ * Written by J.T. Conklin <jtc@xxxxxxxxxx>.
+ * Changes for long double by Ulrich Drepper <drepper@xxxxxxxxxx>
+ * Public domain.
+ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: $")
+
+ENTRY(__ieee754_ilogbl)
+ fldt 4(%esp)
+/* I added the following ugly construct because ilogb(+-Inf) is
+ required to return INT_MAX in ISO C99.
+ -- jakub@xxxxxxxxxxx */
+ fxam /* Is NaN or +-Inf? */
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 1f /* Is +-Inf, jump. */
+ cmpb $0x40, %dh
+ je 2f /* Is +-0, jump. */
+
+ fxtract
+ pushl %eax
+ cfi_adjust_cfa_offset (4)
+ fstp %st
+
+ fistpl (%esp)
+ fwait
+ popl %eax
+ cfi_adjust_cfa_offset (-4)
+
+ ret
+
+1: fstp %st
+ movl $0x7fffffff, %eax
+ ret
+2: fstp %st
+ movl $0x80000000, %eax /* FP_ILOGB0 */
+ ret
+END (__ieee754_ilogbl)
Removed: fsf/trunk/libc/sysdeps/i386/fpu/s_ilogb.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/s_ilogb.S (original)
+++ fsf/trunk/libc/sysdeps/i386/fpu/s_ilogb.S (removed)
@@ -1,38 +1,0 @@
-/*
- * Written by J.T. Conklin <jtc@xxxxxxxxxx>.
- * Public domain.
- */
-
-#include <machine/asm.h>
-
-RCSID("$NetBSD: s_ilogb.S,v 1.5 1995/10/12 15:53:09 jtc Exp $")
-
-ENTRY(__ilogb)
- fldl 4(%esp)
-/* I added the following ugly construct because ilogb(+-Inf) is
- required to return INT_MAX in ISO C99.
- -- jakub@xxxxxxxxxxx */
- fxam /* Is NaN or +-Inf? */
- fstsw %ax
- movb $0x45, %dh
- andb %ah, %dh
- cmpb $0x05, %dh
- je 1f /* Is +-Inf, jump. */
-
- fxtract
- pushl %eax
- cfi_adjust_cfa_offset (4)
- fstp %st
-
- fistpl (%esp)
- fwait
- popl %eax
- cfi_adjust_cfa_offset (-4)
-
- ret
-
-1: fstp %st
- movl $0x7fffffff, %eax
- ret
-END (__ilogb)
-weak_alias (__ilogb, ilogb)
Removed: fsf/trunk/libc/sysdeps/i386/fpu/s_ilogbf.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/s_ilogbf.S (original)
+++ fsf/trunk/libc/sysdeps/i386/fpu/s_ilogbf.S (removed)
@@ -1,38 +1,0 @@
-/*
- * Written by J.T. Conklin <jtc@xxxxxxxxxx>.
- * Public domain.
- */
-
-#include <machine/asm.h>
-
-RCSID("$NetBSD: s_ilogbf.S,v 1.4 1995/10/22 20:32:43 pk Exp $")
-
-ENTRY(__ilogbf)
- flds 4(%esp)
-/* I added the following ugly construct because ilogb(+-Inf) is
- required to return INT_MAX in ISO C99.
- -- jakub@xxxxxxxxxxx */
- fxam /* Is NaN or +-Inf? */
- fstsw %ax
- movb $0x45, %dh
- andb %ah, %dh
- cmpb $0x05, %dh
- je 1f /* Is +-Inf, jump. */
-
- fxtract
- pushl %eax
- cfi_adjust_cfa_offset (4)
- fstp %st
-
- fistpl (%esp)
- fwait
- popl %eax
- cfi_adjust_cfa_offset (-4)
-
- ret
-
-1: fstp %st
- movl $0x7fffffff, %eax
- ret
-END (__ilogbf)
-weak_alias (__ilogbf, ilogbf)
Removed: fsf/trunk/libc/sysdeps/i386/fpu/s_ilogbl.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/fpu/s_ilogbl.S (original)
+++ fsf/trunk/libc/sysdeps/i386/fpu/s_ilogbl.S (removed)
@@ -1,39 +1,0 @@
-/*
- * Written by J.T. Conklin <jtc@xxxxxxxxxx>.
- * Changes for long double by Ulrich Drepper <drepper@xxxxxxxxxx>
- * Public domain.
- */
-
-#include <machine/asm.h>
-
-RCSID("$NetBSD: $")
-
-ENTRY(__ilogbl)
- fldt 4(%esp)
-/* I added the following ugly construct because ilogb(+-Inf) is
- required to return INT_MAX in ISO C99.
- -- jakub@xxxxxxxxxxx */
- fxam /* Is NaN or +-Inf? */
- fstsw %ax
- movb $0x45, %dh
- andb %ah, %dh
- cmpb $0x05, %dh
- je 1f /* Is +-Inf, jump. */
-
- fxtract
- pushl %eax
- cfi_adjust_cfa_offset (4)
- fstp %st
-
- fistpl (%esp)
- fwait
- popl %eax
- cfi_adjust_cfa_offset (-4)
-
- ret
-
-1: fstp %st
- movl $0x7fffffff, %eax
- ret
-END (__ilogbl)
-weak_alias (__ilogbl, ilogbl)
Added: fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_ilogb.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_ilogb.c (added)
+++ fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_ilogb.c Wed Apr 18 00:01:35 2012
@@ -1,0 +1,54 @@
+/* @(#)s_ilogb.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_ilogb.c,v 1.9 1995/05/10 20:47:28 jtc Exp $";
+#endif
+
+/* ilogb(double x)
+ * return the binary exponent of non-zero x
+ * ilogb(0) = FP_ILOGB0
+ * ilogb(NaN) = FP_ILOGBNAN (no signal is raised)
+ * ilogb(+-Inf) = INT_MAX (no signal is raised)
+ */
+
+#include <limits.h>
+#include <math.h>
+#include <math_private.h>
+
+int __ieee754_ilogb(double x)
+{
+ int32_t hx,lx,ix;
+
+ GET_HIGH_WORD(hx,x);
+ hx &= 0x7fffffff;
+ if(hx<0x00100000) {
+ GET_LOW_WORD(lx,x);
+ if((hx|lx)==0)
+ return FP_ILOGB0; /* ilogb(0) = FP_ILOGB0 */
+ else /* subnormal x */
+ if(hx==0) {
+ for (ix = -1043; lx>0; lx<<=1) ix -=1;
+ } else {
+ for (ix = -1022,hx<<=11; hx>0; hx<<=1) ix -=1;
+ }
+ return ix;
+ }
+ else if (hx<0x7ff00000) return (hx>>20)-1023;
+ else if (FP_ILOGBNAN != INT_MAX) {
+ /* ISO C99 requires ilogb(+-Inf) == INT_MAX. */
+ GET_LOW_WORD(lx,x);
+ if(((hx^0x7ff00000)|lx) == 0)
+ return INT_MAX;
+ }
+ return FP_ILOGBNAN;
+}
Removed: fsf/trunk/libc/sysdeps/ieee754/dbl-64/s_ilogb.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/dbl-64/s_ilogb.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/dbl-64/s_ilogb.c (removed)
@@ -1,59 +1,0 @@
-/* @(#)s_ilogb.c 5.1 93/09/24 */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-#if defined(LIBM_SCCS) && !defined(lint)
-static char rcsid[] = "$NetBSD: s_ilogb.c,v 1.9 1995/05/10 20:47:28 jtc Exp $";
-#endif
-
-/* ilogb(double x)
- * return the binary exponent of non-zero x
- * ilogb(0) = FP_ILOGB0
- * ilogb(NaN) = FP_ILOGBNAN (no signal is raised)
- * ilogb(+-Inf) = INT_MAX (no signal is raised)
- */
-
-#include <limits.h>
-#include <math.h>
-#include <math_private.h>
-
-int __ilogb(double x)
-{
- int32_t hx,lx,ix;
-
- GET_HIGH_WORD(hx,x);
- hx &= 0x7fffffff;
- if(hx<0x00100000) {
- GET_LOW_WORD(lx,x);
- if((hx|lx)==0)
- return FP_ILOGB0; /* ilogb(0) = FP_ILOGB0 */
- else /* subnormal x */
- if(hx==0) {
- for (ix = -1043; lx>0; lx<<=1) ix -=1;
- } else {
- for (ix = -1022,hx<<=11; hx>0; hx<<=1) ix -=1;
- }
- return ix;
- }
- else if (hx<0x7ff00000) return (hx>>20)-1023;
- else if (FP_ILOGBNAN != INT_MAX) {
- /* ISO C99 requires ilogb(+-Inf) == INT_MAX. */
- GET_LOW_WORD(lx,x);
- if(((hx^0x7ff00000)|lx) == 0)
- return INT_MAX;
- }
- return FP_ILOGBNAN;
-}
-weak_alias (__ilogb, ilogb)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__ilogb, __ilogbl)
-weak_alias (__ilogb, ilogbl)
-#endif
Added: fsf/trunk/libc/sysdeps/ieee754/flt-32/e_ilogbf.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/flt-32/e_ilogbf.c (added)
+++ fsf/trunk/libc/sysdeps/ieee754/flt-32/e_ilogbf.c Wed Apr 18 00:01:35 2012
@@ -1,0 +1,44 @@
+/* s_ilogbf.c -- float version of s_ilogb.c.
+ * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@xxxxxxxxxxx
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: s_ilogbf.c,v 1.4 1995/05/10 20:47:31 jtc Exp $";
+#endif
+
+#include <limits.h>
+#include <math.h>
+#include <math_private.h>
+
+int __ieee754_ilogbf(float x)
+{
+ int32_t hx,ix;
+
+ GET_FLOAT_WORD(hx,x);
+ hx &= 0x7fffffff;
+ if(hx<0x00800000) {
+ if(hx==0)
+ return FP_ILOGB0; /* ilogb(0) = FP_ILOGB0 */
+ else /* subnormal x */
+ for (ix = -126,hx<<=8; hx>0; hx<<=1) ix -=1;
+ return ix;
+ }
+ else if (hx<0x7f800000) return (hx>>23)-127;
+ else if (FP_ILOGBNAN != INT_MAX) {
+ /* ISO C99 requires ilogbf(+-Inf) == INT_MAX. */
+ if (hx==0x7f800000)
+ return INT_MAX;
+ }
+ return FP_ILOGBNAN;
+}
Removed: fsf/trunk/libc/sysdeps/ieee754/flt-32/s_ilogbf.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/flt-32/s_ilogbf.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/flt-32/s_ilogbf.c (removed)
@@ -1,45 +1,0 @@
-/* s_ilogbf.c -- float version of s_ilogb.c.
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@xxxxxxxxxxx
- */
-
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-#if defined(LIBM_SCCS) && !defined(lint)
-static char rcsid[] = "$NetBSD: s_ilogbf.c,v 1.4 1995/05/10 20:47:31 jtc Exp $";
-#endif
-
-#include <limits.h>
-#include <math.h>
-#include <math_private.h>
-
-int __ilogbf(float x)
-{
- int32_t hx,ix;
-
- GET_FLOAT_WORD(hx,x);
- hx &= 0x7fffffff;
- if(hx<0x00800000) {
- if(hx==0)
- return FP_ILOGB0; /* ilogb(0) = FP_ILOGB0 */
- else /* subnormal x */
- for (ix = -126,hx<<=8; hx>0; hx<<=1) ix -=1;
- return ix;
- }
- else if (hx<0x7f800000) return (hx>>23)-127;
- else if (FP_ILOGBNAN != INT_MAX) {
- /* ISO C99 requires ilogbf(+-Inf) == INT_MAX. */
- if (hx==0x7f800000)
- return INT_MAX;
- }
- return FP_ILOGBNAN;
-}
-weak_alias (__ilogbf, ilogbf)
Added: fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c (added)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c Wed Apr 18 00:01:35 2012
@@ -1,0 +1,57 @@
+/* s_ilogbl.c -- long double version of s_ilogb.c.
+ * Conversion to IEEE quad long double by Jakub Jelinek, jj@xxxxxxxxxxxxxxx
+ */
+
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
+/* ilogbl(long double x)
+ * return the binary exponent of non-zero x
+ * ilogbl(0) = FP_ILOGB0
+ * ilogbl(NaN) = FP_ILOGBNAN (no signal is raised)
+ * ilogbl(+-Inf) = INT_MAX (no signal is raised)
+ */
+
+#include <limits.h>
+#include <math.h>
+#include <math_private.h>
+#include <math_ldbl_opt.h>
+
+int __ieee754_ilogbl(long double x)
+{
+ int64_t hx,lx;
+ int ix;
+
+ GET_LDOUBLE_WORDS64(hx,lx,x);
+ hx &= 0x7fffffffffffffffLL;
+ if(hx <= 0x0010000000000000LL) {
+ if((hx|(lx&0x7fffffffffffffffLL))==0)
+ return FP_ILOGB0; /* ilogbl(0) = FP_ILOGB0 */
+ else /* subnormal x */
+ if(hx==0) {
+ for (ix = -1043; lx>0; lx<<=1) ix -=1;
+ } else {
+ for (ix = -1022, hx<<=11; hx>0; hx<<=1) ix -=1;
+ }
+ return ix;
+ }
+ else if (hx<0x7ff0000000000000LL) return (hx>>52)-0x3ff;
+ else if (FP_ILOGBNAN != INT_MAX) {
+ /* ISO C99 requires ilogbl(+-Inf) == INT_MAX. */
+ if (((hx^0x7ff0000000000000LL)|lx) == 0)
+ return INT_MAX;
+ }
+ return FP_ILOGBNAN;
+}
Removed: fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c (removed)
@@ -1,58 +1,0 @@
-/* s_ilogbl.c -- long double version of s_ilogb.c.
- * Conversion to IEEE quad long double by Jakub Jelinek, jj@xxxxxxxxxxxxxxx
- */
-
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-#if defined(LIBM_SCCS) && !defined(lint)
-static char rcsid[] = "$NetBSD: $";
-#endif
-
-/* ilogbl(long double x)
- * return the binary exponent of non-zero x
- * ilogbl(0) = FP_ILOGB0
- * ilogbl(NaN) = FP_ILOGBNAN (no signal is raised)
- * ilogbl(+-Inf) = INT_MAX (no signal is raised)
- */
-
-#include <limits.h>
-#include <math.h>
-#include <math_private.h>
-#include <math_ldbl_opt.h>
-
-int __ilogbl(long double x)
-{
- int64_t hx,lx;
- int ix;
-
- GET_LDOUBLE_WORDS64(hx,lx,x);
- hx &= 0x7fffffffffffffffLL;
- if(hx <= 0x0010000000000000LL) {
- if((hx|(lx&0x7fffffffffffffffLL))==0)
- return FP_ILOGB0; /* ilogbl(0) = FP_ILOGB0 */
- else /* subnormal x */
- if(hx==0) {
- for (ix = -1043; lx>0; lx<<=1) ix -=1;
- } else {
- for (ix = -1022, hx<<=11; hx>0; hx<<=1) ix -=1;
- }
- return ix;
- }
- else if (hx<0x7ff0000000000000LL) return (hx>>52)-0x3ff;
- else if (FP_ILOGBNAN != INT_MAX) {
- /* ISO C99 requires ilogbl(+-Inf) == INT_MAX. */
- if (((hx^0x7ff0000000000000LL)|lx) == 0)
- return INT_MAX;
- }
- return FP_ILOGBNAN;
-}
-long_double_symbol (libm, __ilogbl, ilogbl);
Removed: fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/s_ilogb.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/s_ilogb.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/s_ilogb.c (removed)
@@ -1,5 +1,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/ieee754/dbl-64/s_ilogb.c>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
-compat_symbol (libm, __ilogb, ilogbl, GLIBC_2_0);
-#endif
Added: fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/w_ilogb.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/w_ilogb.c (added)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/w_ilogb.c Wed Apr 18 00:01:35 2012
@@ -1,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#include <math/w_ilogb.c>
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __ilogb, ilogbl, GLIBC_2_0);
+#endif
Added: fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/w_ilogbl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/w_ilogbl.c (added)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-opt/w_ilogbl.c Wed Apr 18 00:01:35 2012
@@ -1,0 +1,5 @@
+#include <math_ldbl_opt.h>
+#undef weak_alias
+#define weak_alias(n,a)
+#include <math/w_ilogbl.c>
+long_double_symbol (libm, __ilogbl, ilogbl);
Added: fsf/trunk/libc/sysdeps/x86_64/fpu/e_ilogbl.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/fpu/e_ilogbl.S (added)
+++ fsf/trunk/libc/sysdeps/x86_64/fpu/e_ilogbl.S Wed Apr 18 00:01:35 2012
@@ -1,0 +1,39 @@
+/*
+ * Written by J.T. Conklin <jtc@xxxxxxxxxx>.
+ * Changes for long double by Ulrich Drepper <drepper@xxxxxxxxxx>
+ * Adapted for x86-64 by Andreas Jaeger <aj@xxxxxxx>.
+ * Public domain.
+ */
+
+#include <machine/asm.h>
+
+ENTRY(__ieee754_ilogbl)
+ fldt 8(%rsp)
+/* I added the following ugly construct because ilogb(+-Inf) is
+ required to return INT_MAX in ISO C99.
+ -- jakub@xxxxxxxxxxx */
+ fxam /* Is NaN or +-Inf? */
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 1f /* Is +-Inf, jump. */
+ cmpb $0x40, %dh
+ je 2f /* Is +-Inf, jump. */
+
+ fxtract
+ fstp %st
+
+ fistpl -4(%rsp)
+ fwait
+ movl -4(%rsp),%eax
+
+ ret
+
+1: fstp %st
+ movl $0x7fffffff, %eax
+ ret
+2: fstp %st
+ movl $0x80000000, %eax /* FP_ILOGB0 */
+ ret
+END (__ieee754_ilogbl)
Removed: fsf/trunk/libc/sysdeps/x86_64/fpu/s_ilogbl.S
==============================================================================
--- fsf/trunk/libc/sysdeps/x86_64/fpu/s_ilogbl.S (original)
+++ fsf/trunk/libc/sysdeps/x86_64/fpu/s_ilogbl.S (removed)
@@ -1,35 +1,0 @@
-/*
- * Written by J.T. Conklin <jtc@xxxxxxxxxx>.
- * Changes for long double by Ulrich Drepper <drepper@xxxxxxxxxx>
- * Adapted for x86-64 by Andreas Jaeger <aj@xxxxxxx>.
- * Public domain.
- */
-
-#include <machine/asm.h>
-
-ENTRY(__ilogbl)
- fldt 8(%rsp)
-/* I added the following ugly construct because ilogb(+-Inf) is
- required to return INT_MAX in ISO C99.
- -- jakub@xxxxxxxxxxx */
- fxam /* Is NaN or +-Inf? */
- fstsw %ax
- movb $0x45, %dh
- andb %ah, %dh
- cmpb $0x05, %dh
- je 1f /* Is +-Inf, jump. */
-
- fxtract
- fstp %st
-
- fistpl -4(%rsp)
- fwait
- movl -4(%rsp),%eax
-
- ret
-
-1: fstp %st
- movl $0x7fffffff, %eax
- ret
-END (__ilogbl)
-weak_alias (__ilogbl, ilogbl)
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits