From 5da9d1244a543df757854911b09e48129e0b9ede Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Sat, 26 Jun 1999 16:43:55 +0000 Subject: [PATCH] * sysdeps/m68k/fpu/bits/mathinline.h: Move all libm internal definitions... * sysdeps/m68k/fpu/mathimpl.h: ... here. New file. * sysdeps/m68k/fpu/e_acos.c: Include "mathimpl.h". * sysdeps/m68k/fpu/e_atan2.c: Likewise. * sysdeps/m68k/fpu/e_fmod.c: Likewise. * sysdeps/m68k/fpu/e_pow.c: Likewise. * sysdeps/m68k/fpu/e_scalb.c: Likewise. * sysdeps/m68k/fpu/s_ccos.c: Likewise. * sysdeps/m68k/fpu/s_ccosh.c: Likewise. * sysdeps/m68k/fpu/s_cexp.c: Likewise. * sysdeps/m68k/fpu/s_csin.c: Likewise. * sysdeps/m68k/fpu/s_csinh.c: Likewise. * sysdeps/m68k/fpu/s_ilogb.c: Likewise. * sysdeps/m68k/fpu/s_llrint.c: Likewise. * sysdeps/m68k/fpu/s_llrintf.c: Likewise. * sysdeps/m68k/fpu/s_llrintl.c: Likewise. * sysdeps/m68k/fpu/s_modf.c: Likewise. --- sysdeps/m68k/fpu/bits/mathinline.h | 63 +------------------------- sysdeps/m68k/fpu/e_acos.c | 3 +- sysdeps/m68k/fpu/e_atan2.c | 3 +- sysdeps/m68k/fpu/e_fmod.c | 3 +- sysdeps/m68k/fpu/e_pow.c | 3 +- sysdeps/m68k/fpu/e_scalb.c | 3 +- sysdeps/m68k/fpu/mathimpl.h | 93 ++++++++++++++++++++++++++++++++++++++ sysdeps/m68k/fpu/s_ccos.c | 3 +- sysdeps/m68k/fpu/s_ccosh.c | 3 +- sysdeps/m68k/fpu/s_cexp.c | 3 +- sysdeps/m68k/fpu/s_csin.c | 3 +- sysdeps/m68k/fpu/s_csinh.c | 3 +- sysdeps/m68k/fpu/s_ilogb.c | 3 +- sysdeps/m68k/fpu/s_llrint.c | 3 +- sysdeps/m68k/fpu/s_llrintf.c | 3 +- sysdeps/m68k/fpu/s_llrintl.c | 3 +- sysdeps/m68k/fpu/s_modf.c | 3 +- 17 files changed, 125 insertions(+), 76 deletions(-) create mode 100644 sysdeps/m68k/fpu/mathimpl.h diff --git a/sysdeps/m68k/fpu/bits/mathinline.h b/sysdeps/m68k/fpu/bits/mathinline.h index b1e2a75..c753fae 100644 --- a/sysdeps/m68k/fpu/bits/mathinline.h +++ b/sysdeps/m68k/fpu/bits/mathinline.h @@ -1,5 +1,5 @@ /* Definitions of inline math functions implemented by the m68881/2. - Copyright (C) 1991, 92, 93, 94, 96, 97, 98 Free Software Foundation, Inc. + Copyright (C) 1991,92,93,94,96,97,98,99 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 @@ -116,22 +116,6 @@ return __result; \ } -#ifdef __LIBC_INTERNAL_MATH_INLINES -/* ieee style elementary functions */ -/* These are internal to the implementation of libm. */ -__inline_mathop(__ieee754_acos, acos) -__inline_mathop(__ieee754_asin, asin) -__inline_mathop(__ieee754_cosh, cosh) -__inline_mathop(__ieee754_sinh, sinh) -__inline_mathop(__ieee754_exp, etox) -__inline_mathop(__ieee754_exp2, twotox) -__inline_mathop(__ieee754_exp10, tentox) -__inline_mathop(__ieee754_log10, log10) -__inline_mathop(__ieee754_log, logn) -__inline_mathop(__ieee754_sqrt, sqrt) -__inline_mathop(__ieee754_atanh, atanh) -#endif - __inline_mathop(__atan, atan) __inline_mathop(__cos, cos) __inline_mathop(__sin, sin) @@ -180,52 +164,9 @@ __inline_mathop(trunc, intrz) #endif /* !__NO_MATH_INLINES && __OPTIMIZE__ */ /* This macro contains the definition for the rest of the inline - functions, using __FLOAT_TYPE as the domain type and __S as the suffix + functions, using FLOAT_TYPE as the domain type and S as the suffix for the function names. */ -#ifdef __LIBC_INTERNAL_MATH_INLINES -/* Internally used functions. */ -# define __internal_inline_functions(float_type, s) \ -__m81_defun (float_type, __CONCAT(__ieee754_remainder,s), \ - (float_type __x, float_type __y)) \ -{ \ - float_type __result; \ - __asm("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); \ - return __result; \ -} \ - \ -__m81_defun (float_type, __CONCAT(__ieee754_fmod,s), \ - (float_type __x, float_type __y)) \ -{ \ - float_type __result; \ - __asm("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); \ - return __result; \ -} - -__internal_inline_functions (double,) -__internal_inline_functions (float,f) -__internal_inline_functions (long double,l) -# undef __internal_inline_functions - -/* Get the m68881 condition codes, to quickly check multiple conditions. */ -static __inline__ unsigned long -__m81_test (long double __val) -{ - unsigned long __fpsr; - __asm ("ftst%.x %1; fmove%.l %/fpsr,%0" : "=dm" (__fpsr) : "f" (__val)); - return __fpsr; -} - -/* Bit values returned by __m81_test. */ -# define __M81_COND_NAN (1 << 24) -# define __M81_COND_INF (2 << 24) -# define __M81_COND_ZERO (4 << 24) -# define __M81_COND_NEG (8 << 24) - -#endif /* __LIBC_INTENRAL_MATH_INLINES */ - -/* The rest of the functions are available to the user. */ - #define __inline_functions(float_type, s) \ __m81_inline float_type \ __m81_u(__CONCAT(__frexp,s))(float_type __value, int *__expptr) \ diff --git a/sysdeps/m68k/fpu/e_acos.c b/sysdeps/m68k/fpu/e_acos.c index 80803ff..4226b73 100644 --- a/sysdeps/m68k/fpu/e_acos.c +++ b/sysdeps/m68k/fpu/e_acos.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999 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 @@ -18,6 +18,7 @@ #include #include "math_private.h" +#include "mathimpl.h" #ifndef FUNC #define FUNC __ieee754_acos diff --git a/sysdeps/m68k/fpu/e_atan2.c b/sysdeps/m68k/fpu/e_atan2.c index 7b275b4..6a5af2a 100644 --- a/sysdeps/m68k/fpu/e_atan2.c +++ b/sysdeps/m68k/fpu/e_atan2.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999 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 @@ -18,6 +18,7 @@ #include #include "math_private.h" +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/e_fmod.c b/sysdeps/m68k/fpu/e_fmod.c index 9e59a43..9695a86 100644 --- a/sysdeps/m68k/fpu/e_fmod.c +++ b/sysdeps/m68k/fpu/e_fmod.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999 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 @@ -18,6 +18,7 @@ #include #include "math_private.h" +#include "mathimpl.h" #ifndef FUNC #define FUNC __ieee754_fmod diff --git a/sysdeps/m68k/fpu/e_pow.c b/sysdeps/m68k/fpu/e_pow.c index ee95a39..3dc3d81 100644 --- a/sysdeps/m68k/fpu/e_pow.c +++ b/sysdeps/m68k/fpu/e_pow.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999 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 @@ -18,6 +18,7 @@ #include #include "math_private.h" +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/e_scalb.c b/sysdeps/m68k/fpu/e_scalb.c index ef1724b..22332ca 100644 --- a/sysdeps/m68k/fpu/e_scalb.c +++ b/sysdeps/m68k/fpu/e_scalb.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab . @@ -18,6 +18,7 @@ Boston, MA 02111-1307, USA. */ #include +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/mathimpl.h b/sysdeps/m68k/fpu/mathimpl.h new file mode 100644 index 0000000..a2785b2 --- /dev/null +++ b/sysdeps/m68k/fpu/mathimpl.h @@ -0,0 +1,93 @@ +/* Definitions of libc internal inline math functions implemented + by the m68881/2. + Copyright (C) 1991,92,93,94,96,97,98,99 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* This file contains the definitions of the inline math functions that + are only used internally inside libm, not visible to the user. */ + +__inline_mathop (__ieee754_acos, acos) +__inline_mathop (__ieee754_asin, asin) +__inline_mathop (__ieee754_cosh, cosh) +__inline_mathop (__ieee754_sinh, sinh) +__inline_mathop (__ieee754_exp, etox) +__inline_mathop (__ieee754_exp2, twotox) +__inline_mathop (__ieee754_exp10, tentox) +__inline_mathop (__ieee754_log10, log10) +__inline_mathop (__ieee754_log, logn) +__inline_mathop (__ieee754_sqrt, sqrt) +__inline_mathop (__ieee754_atanh, atanh) + +__m81_defun (double, __ieee754_remainder, (double __x, double __y)) +{ + double __result; + __asm ("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (float, __ieee754_remainderf, (float __x, float __y)) +{ + float __result; + __asm ("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (long double, + __ieee754_remainderl, (long double __x, long double __y)) +{ + long double __result; + __asm ("frem%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (double, __ieee754_fmod, (double __x, double __y)) +{ + double __result; + __asm ("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (float, __ieee754_fmodf, (float __x, float __y)) +{ + float __result; + __asm ("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +__m81_defun (long double, + __ieee754_fmodl, (long double __x, long double __y)) +{ + long double __result; + __asm ("fmod%.x %1, %0" : "=f" (__result) : "f" (__y), "0" (__x)); + return __result; +} + +/* Get the m68881 condition codes, to quickly check multiple conditions. */ +static __inline__ unsigned long +__m81_test (long double __val) +{ + unsigned long __fpsr; + __asm ("ftst%.x %1; fmove%.l %/fpsr,%0" : "=dm" (__fpsr) : "f" (__val)); + return __fpsr; +} + +/* Bit values returned by __m81_test. */ +#define __M81_COND_NAN (1 << 24) +#define __M81_COND_INF (2 << 24) +#define __M81_COND_ZERO (4 << 24) +#define __M81_COND_NEG (8 << 24) diff --git a/sysdeps/m68k/fpu/s_ccos.c b/sysdeps/m68k/fpu/s_ccos.c index fbd5ef5..6f1232f 100644 --- a/sysdeps/m68k/fpu/s_ccos.c +++ b/sysdeps/m68k/fpu/s_ccos.c @@ -1,5 +1,5 @@ /* Complex cosine function. m68k fpu version - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab . @@ -20,6 +20,7 @@ #include #include +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/s_ccosh.c b/sysdeps/m68k/fpu/s_ccosh.c index af75143..437d42d 100644 --- a/sysdeps/m68k/fpu/s_ccosh.c +++ b/sysdeps/m68k/fpu/s_ccosh.c @@ -1,5 +1,5 @@ /* Complex cosine hyperbole function. m68k fpu version - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab . @@ -20,6 +20,7 @@ #include #include +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/s_cexp.c b/sysdeps/m68k/fpu/s_cexp.c index fcf87ed..899fdc4 100644 --- a/sysdeps/m68k/fpu/s_cexp.c +++ b/sysdeps/m68k/fpu/s_cexp.c @@ -1,5 +1,5 @@ /* Complex exponential function. m68k fpu version - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -20,6 +20,7 @@ #include #include +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/s_csin.c b/sysdeps/m68k/fpu/s_csin.c index 72214c4..11e217b 100644 --- a/sysdeps/m68k/fpu/s_csin.c +++ b/sysdeps/m68k/fpu/s_csin.c @@ -1,5 +1,5 @@ /* Complex sine function. m68k fpu version - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab . @@ -20,6 +20,7 @@ #include #include +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/s_csinh.c b/sysdeps/m68k/fpu/s_csinh.c index e829f4d..4dfbe12 100644 --- a/sysdeps/m68k/fpu/s_csinh.c +++ b/sysdeps/m68k/fpu/s_csinh.c @@ -1,5 +1,5 @@ /* Complex sine hyperbole function. m68k fpu version - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab . @@ -20,6 +20,7 @@ #include #include +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/s_ilogb.c b/sysdeps/m68k/fpu/s_ilogb.c index ef90946..15cff29 100644 --- a/sysdeps/m68k/fpu/s_ilogb.c +++ b/sysdeps/m68k/fpu/s_ilogb.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999 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 @@ -17,6 +17,7 @@ Boston, MA 02111-1307, USA. */ #include +#include "mathimpl.h" #ifndef SUFF #define SUFF diff --git a/sysdeps/m68k/fpu/s_llrint.c b/sysdeps/m68k/fpu/s_llrint.c index 423939a..b733d77 100644 --- a/sysdeps/m68k/fpu/s_llrint.c +++ b/sysdeps/m68k/fpu/s_llrint.c @@ -1,6 +1,6 @@ /* Round argument to nearest integral value according to current rounding direction. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -21,6 +21,7 @@ #include #include "math_private.h" +#include "mathimpl.h" long long int __llrint (double x) diff --git a/sysdeps/m68k/fpu/s_llrintf.c b/sysdeps/m68k/fpu/s_llrintf.c index 0cd12c9..b9ba5a0 100644 --- a/sysdeps/m68k/fpu/s_llrintf.c +++ b/sysdeps/m68k/fpu/s_llrintf.c @@ -1,6 +1,6 @@ /* Round argument to nearest integral value according to current rounding direction. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -21,6 +21,7 @@ #include #include "math_private.h" +#include "mathimpl.h" long long int __llrintf (float x) diff --git a/sysdeps/m68k/fpu/s_llrintl.c b/sysdeps/m68k/fpu/s_llrintl.c index 6f63e0b..c874bfd 100644 --- a/sysdeps/m68k/fpu/s_llrintl.c +++ b/sysdeps/m68k/fpu/s_llrintl.c @@ -1,6 +1,6 @@ /* Round argument to nearest integral value according to current rounding direction. - Copyright (C) 1997 Free Software Foundation, Inc. + Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Schwab @@ -21,6 +21,7 @@ #include #include "math_private.h" +#include "mathimpl.h" long long int __llrintl (long double x) diff --git a/sysdeps/m68k/fpu/s_modf.c b/sysdeps/m68k/fpu/s_modf.c index 52ee64c..d19f2a7 100644 --- a/sysdeps/m68k/fpu/s_modf.c +++ b/sysdeps/m68k/fpu/s_modf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1999 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 @@ -17,6 +17,7 @@ Boston, MA 02111-1307, USA. */ #include +#include "mathimpl.h" #ifndef SUFF #define SUFF -- 2.7.4