Module: wine Branch: master Commit: c7454eef0bf577545225c7c236a3f3b03daf31d3 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c7454eef0bf577545225c7c23...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Oct 26 10:33:25 2021 +0200
ntdll: Move math functions to a separate file.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/Makefile.in | 1 + dlls/ntdll/math.c | 177 +++++++++++++++++++++++++++++++++++++++++++++++++ dlls/ntdll/misc.c | 153 ------------------------------------------ 3 files changed, 178 insertions(+), 153 deletions(-)
diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in index aac7f8eead7..ba23e397545 100644 --- a/dlls/ntdll/Makefile.in +++ b/dlls/ntdll/Makefile.in @@ -22,6 +22,7 @@ C_SRCS = \ large_int.c \ loader.c \ locale.c \ + math.c \ misc.c \ path.c \ printf.c \ diff --git a/dlls/ntdll/math.c b/dlls/ntdll/math.c new file mode 100644 index 00000000000..8241e5077c2 --- /dev/null +++ b/dlls/ntdll/math.c @@ -0,0 +1,177 @@ +/* + * Math functions + * + * Copyright 2021 Alexandre Julliard + * + * This 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. + * + * This 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 this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include <math.h> + +#include "ntstatus.h" +#define WIN32_NO_STATUS +#include "ntdll_misc.h" + +/********************************************************************* + * abs (NTDLL.@) + */ +int CDECL abs( int i ) +{ + return i >= 0 ? i : -i; +} + +/********************************************************************* + * atan (NTDLL.@) + */ +double CDECL atan( double d ) +{ + return unix_funcs->atan( d ); +} + +/********************************************************************* + * ceil (NTDLL.@) + */ +double CDECL ceil( double d ) +{ + return unix_funcs->ceil( d ); +} + +/********************************************************************* + * cos (NTDLL.@) + */ +double CDECL cos( double d ) +{ + return unix_funcs->cos( d ); +} + +/********************************************************************* + * fabs (NTDLL.@) + */ +double CDECL fabs( double d ) +{ + return unix_funcs->fabs( d ); +} + +/********************************************************************* + * floor (NTDLL.@) + */ +double CDECL floor( double d ) +{ + return unix_funcs->floor( d ); +} + +/********************************************************************* + * log (NTDLL.@) + */ +double CDECL log( double d ) +{ + return unix_funcs->log( d ); +} + +/********************************************************************* + * pow (NTDLL.@) + */ +double CDECL pow( double x, double y ) +{ + return unix_funcs->pow( x, y ); +} + +/********************************************************************* + * sin (NTDLL.@) + */ +double CDECL sin( double d ) +{ + return unix_funcs->sin( d ); +} + +/********************************************************************* + * sqrt (NTDLL.@) + */ +double CDECL sqrt( double d ) +{ + return unix_funcs->sqrt( d ); +} + +/********************************************************************* + * tan (NTDLL.@) + */ +double CDECL tan( double d ) +{ + return unix_funcs->tan( d ); +} + +#if (defined(__GNUC__) || defined(__clang__)) && defined(__i386__) + +#define FPU_DOUBLE(var) double var; \ + __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var) : ) +#define FPU_DOUBLES(var1,var2) double var1,var2; \ + __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var2) : ); \ + __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var1) : ) + +/********************************************************************* + * _CIcos (NTDLL.@) + */ +double CDECL _CIcos(void) +{ + FPU_DOUBLE(x); + return cos(x); +} + +/********************************************************************* + * _CIlog (NTDLL.@) + */ +double CDECL _CIlog(void) +{ + FPU_DOUBLE(x); + return log(x); +} + +/********************************************************************* + * _CIpow (NTDLL.@) + */ +double CDECL _CIpow(void) +{ + FPU_DOUBLES(x,y); + return pow(x,y); +} + +/********************************************************************* + * _CIsin (NTDLL.@) + */ +double CDECL _CIsin(void) +{ + FPU_DOUBLE(x); + return sin(x); +} + +/********************************************************************* + * _CIsqrt (NTDLL.@) + */ +double CDECL _CIsqrt(void) +{ + FPU_DOUBLE(x); + return sqrt(x); +} + +/********************************************************************* + * _ftol (NTDLL.@) + */ +LONGLONG CDECL _ftol(void) +{ + FPU_DOUBLE(x); + return (LONGLONG)x; +} + +#endif /* (defined(__GNUC__) || defined(__clang__)) && defined(__i386__) */ diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c index 092900b289b..3bef5a561c8 100644 --- a/dlls/ntdll/misc.c +++ b/dlls/ntdll/misc.c @@ -20,7 +20,6 @@ */
#include <time.h> -#include <math.h>
#include "ntstatus.h" #define WIN32_NO_STATUS @@ -38,158 +37,6 @@ LPCSTR debugstr_us( const UNICODE_STRING *us ) return debugstr_wn(us->Buffer, us->Length / sizeof(WCHAR)); }
-/********************************************************************* - * abs (NTDLL.@) - */ -int CDECL abs( int i ) -{ - return i >= 0 ? i : -i; -} - -/********************************************************************* - * atan (NTDLL.@) - */ -double CDECL atan( double d ) -{ - return unix_funcs->atan( d ); -} - -/********************************************************************* - * ceil (NTDLL.@) - */ -double CDECL ceil( double d ) -{ - return unix_funcs->ceil( d ); -} - -/********************************************************************* - * cos (NTDLL.@) - */ -double CDECL cos( double d ) -{ - return unix_funcs->cos( d ); -} - -/********************************************************************* - * fabs (NTDLL.@) - */ -double CDECL fabs( double d ) -{ - return unix_funcs->fabs( d ); -} - -/********************************************************************* - * floor (NTDLL.@) - */ -double CDECL floor( double d ) -{ - return unix_funcs->floor( d ); -} - -/********************************************************************* - * log (NTDLL.@) - */ -double CDECL log( double d ) -{ - return unix_funcs->log( d ); -} - -/********************************************************************* - * pow (NTDLL.@) - */ -double CDECL pow( double x, double y ) -{ - return unix_funcs->pow( x, y ); -} - -/********************************************************************* - * sin (NTDLL.@) - */ -double CDECL sin( double d ) -{ - return unix_funcs->sin( d ); -} - -/********************************************************************* - * sqrt (NTDLL.@) - */ -double CDECL sqrt( double d ) -{ - return unix_funcs->sqrt( d ); -} - -/********************************************************************* - * tan (NTDLL.@) - */ -double CDECL tan( double d ) -{ - return unix_funcs->tan( d ); -} - -#if (defined(__GNUC__) || defined(__clang__)) && defined(__i386__) - -#define FPU_DOUBLE(var) double var; \ - __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var) : ) -#define FPU_DOUBLES(var1,var2) double var1,var2; \ - __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var2) : ); \ - __asm__ __volatile__( "fstpl %0;fwait" : "=m" (var1) : ) - -/********************************************************************* - * _CIcos (NTDLL.@) - */ -double CDECL _CIcos(void) -{ - FPU_DOUBLE(x); - return cos(x); -} - -/********************************************************************* - * _CIlog (NTDLL.@) - */ -double CDECL _CIlog(void) -{ - FPU_DOUBLE(x); - return log(x); -} - -/********************************************************************* - * _CIpow (NTDLL.@) - */ -double CDECL _CIpow(void) -{ - FPU_DOUBLES(x,y); - return pow(x,y); -} - -/********************************************************************* - * _CIsin (NTDLL.@) - */ -double CDECL _CIsin(void) -{ - FPU_DOUBLE(x); - return sin(x); -} - -/********************************************************************* - * _CIsqrt (NTDLL.@) - */ -double CDECL _CIsqrt(void) -{ - FPU_DOUBLE(x); - return sqrt(x); -} - -/********************************************************************* - * _ftol (NTDLL.@) - */ -LONGLONG CDECL _ftol(void) -{ - FPU_DOUBLE(x); - return (LONGLONG)x; -} - -#endif /* (defined(__GNUC__) || defined(__clang__)) && defined(__i386__) */ - static void NTDLL_mergesort( void *arr, void *barr, size_t elemsize, int(__cdecl *compar)(const void *, const void *), size_t left, size_t right )