Alexandre Julliard : msvcrt: Implemented a few trivial math functions.
Alexandre Julliard
julliard at winehq.org
Mon May 2 14:16:13 CDT 2011
Module: wine
Branch: master
Commit: abe0823b727ae498ecbb05adb468f2bb418b0645
URL: http://source.winehq.org/git/wine.git/?a=commit;h=abe0823b727ae498ecbb05adb468f2bb418b0645
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sun May 1 12:52:22 2011 +0200
msvcrt: Implemented a few trivial math functions.
---
dlls/msvcr100/msvcr100.spec | 6 ++--
dlls/msvcr80/msvcr80.spec | 6 ++--
dlls/msvcr90/msvcr90.spec | 6 ++--
dlls/msvcrt/math.c | 60 ++++++++++++++++++++++++++++++++++++------
dlls/msvcrt/msvcrt.spec | 10 +++---
5 files changed, 65 insertions(+), 23 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 5c95d98..3a157bb 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -488,7 +488,7 @@
@ cdecl __wgetmainargs(ptr ptr ptr long ptr) msvcrt.__wgetmainargs
@ extern __winitenv msvcrt.__winitenv
@ cdecl _abnormal_termination() msvcrt._abnormal_termination
-@ stub _abs64
+@ cdecl -ret64 _abs64(int64) msvcrt._abs64
@ cdecl _access(str long) msvcrt._access
@ cdecl _access_s(str long) msvcrt._access_s
@ extern _acmdln msvcrt._acmdln
@@ -1049,9 +1049,9 @@
@ cdecl _rmdir(str) msvcrt._rmdir
@ cdecl _rmtmp() msvcrt._rmtmp
@ cdecl _rotl(long long) msvcrt._rotl
-@ stub _rotl64
+@ cdecl -ret64 _rotl64(int64 long) msvcrt._rotl64
@ cdecl _rotr(long long) msvcrt._rotr
-@ stub _rotr64
+@ cdecl -ret64 _rotr64(int64 long) msvcrt._rotr64
@ cdecl _scalb(double long) msvcrt._scalb
@ varargs _scanf_l(str ptr) msvcrt._scanf_l
@ varargs _scanf_s_l(str ptr) msvcrt._scanf_s_l
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index bfa87e3..dc20b56 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -312,7 +312,7 @@
@ cdecl __wgetmainargs(ptr ptr ptr long ptr) msvcrt.__wgetmainargs
@ extern __winitenv msvcrt.__winitenv
@ cdecl _abnormal_termination() msvcrt._abnormal_termination
-@ stub _abs64
+@ cdecl -ret64 _abs64(int64) msvcrt._abs64
@ cdecl _access(str long) msvcrt._access
@ cdecl _access_s(str long) msvcrt._access_s
@ extern _acmdln msvcrt._acmdln
@@ -897,9 +897,9 @@
@ cdecl _rmdir(str) msvcrt._rmdir
@ cdecl _rmtmp() msvcrt._rmtmp
@ cdecl _rotl(long long) msvcrt._rotl
-@ stub _rotl64
+@ cdecl -ret64 _rotl64(int64 long) msvcrt._rotl64
@ cdecl _rotr(long long) msvcrt._rotr
-@ stub _rotr64
+@ cdecl -ret64 _rotr64(int64 long) msvcrt._rotr64
@ cdecl -arch=i386 _safe_fdiv() msvcrt._safe_fdiv
@ cdecl -arch=i386 _safe_fdivr() msvcrt._safe_fdivr
@ cdecl -arch=i386 _safe_fprem() msvcrt._safe_fprem
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index b84e586..5e44d50 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -304,7 +304,7 @@
@ cdecl __wgetmainargs(ptr ptr ptr long ptr) msvcrt.__wgetmainargs
@ extern __winitenv msvcrt.__winitenv
@ cdecl _abnormal_termination() msvcrt._abnormal_termination
-@ stub _abs64
+@ cdecl -ret64 _abs64(int64) msvcrt._abs64
@ cdecl _access(str long) msvcrt._access
@ cdecl _access_s(str long) msvcrt._access_s
@ extern _acmdln msvcrt._acmdln
@@ -883,9 +883,9 @@
@ cdecl _rmdir(str) msvcrt._rmdir
@ cdecl _rmtmp() msvcrt._rmtmp
@ cdecl _rotl(long long) msvcrt._rotl
-@ stub _rotl64
+@ cdecl -ret64 _rotl64(int64 long) msvcrt._rotl64
@ cdecl _rotr(long long) msvcrt._rotr
-@ stub _rotr64
+@ cdecl -ret64 _rotr64(int64 long) msvcrt._rotr64
@ cdecl -arch=i386 _safe_fdiv() msvcrt._safe_fdiv
@ cdecl -arch=i386 _safe_fdivr() msvcrt._safe_fdivr
@ cdecl -arch=i386 _safe_fprem() msvcrt._safe_fprem
diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c
index 3428398..9659f17 100644
--- a/dlls/msvcrt/math.c
+++ b/dlls/msvcrt/math.c
@@ -640,15 +640,6 @@ unsigned int CDECL _rotl(unsigned int num, int shift)
}
/*********************************************************************
- * _logb (MSVCRT.@)
- */
-double CDECL _logb(double num)
-{
- if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
- return logb(num);
-}
-
-/*********************************************************************
* _lrotl (MSVCRT.@)
*/
MSVCRT_ulong CDECL MSVCRT__lrotl(MSVCRT_ulong num, int shift)
@@ -676,6 +667,57 @@ unsigned int CDECL _rotr(unsigned int num, int shift)
}
/*********************************************************************
+ * _rotl64 (MSVCRT.@)
+ */
+unsigned __int64 CDECL _rotl64(unsigned __int64 num, int shift)
+{
+ shift &= 63;
+ return (num << shift) | (num >> (64-shift));
+}
+
+/*********************************************************************
+ * _rotr64 (MSVCRT.@)
+ */
+unsigned __int64 CDECL _rotr64(unsigned __int64 num, int shift)
+{
+ shift &= 63;
+ return (num >> shift) | (num << (64-shift));
+}
+
+/*********************************************************************
+ * abs (MSVCRT.@)
+ */
+int CDECL MSVCRT_abs( int n )
+{
+ return n >= 0 ? n : -n;
+}
+
+/*********************************************************************
+ * labs (MSVCRT.@)
+ */
+MSVCRT_long CDECL MSVCRT_labs( MSVCRT_long n )
+{
+ return n >= 0 ? n : -n;
+}
+
+/*********************************************************************
+ * _abs64 (MSVCRT.@)
+ */
+__int64 CDECL _abs64( __int64 n )
+{
+ return n >= 0 ? n : -n;
+}
+
+/*********************************************************************
+ * _logb (MSVCRT.@)
+ */
+double CDECL _logb(double num)
+{
+ if (!finite(num)) *MSVCRT__errno() = MSVCRT_EDOM;
+ return logb(num);
+}
+
+/*********************************************************************
* _scalb (MSVCRT.@)
*/
double CDECL MSVCRT__scalb(double num, MSVCRT_long power)
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 7687f5c..104687b 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -269,7 +269,7 @@
@ cdecl __wgetmainargs(ptr ptr ptr long ptr)
@ extern __winitenv MSVCRT___winitenv
@ cdecl _abnormal_termination()
-# stub _abs64
+@ cdecl -ret64 _abs64(int64)
@ cdecl _access(str long) MSVCRT__access
@ cdecl _access_s(str long)
@ extern _acmdln MSVCRT__acmdln
@@ -840,9 +840,9 @@
@ cdecl _rmdir(str) MSVCRT__rmdir
@ cdecl _rmtmp()
@ cdecl _rotl(long long)
-# stub _rotl64
+@ cdecl -ret64 _rotl64(int64 long)
@ cdecl _rotr(long long)
-# stub _rotr64
+@ cdecl -ret64 _rotr64(int64 long)
@ cdecl -arch=i386 _safe_fdiv()
@ cdecl -arch=i386 _safe_fdivr()
@ cdecl -arch=i386 _safe_fprem()
@@ -1210,7 +1210,7 @@
@ cdecl _y1(double)
@ cdecl _yn(long double )
@ cdecl abort() MSVCRT_abort
-@ cdecl abs(long) ntdll.abs
+@ cdecl abs(long) MSVCRT_abs
@ cdecl acos(double) MSVCRT_acos
@ cdecl -arch=x86_64 acosf(float) MSVCRT_acosf
@ cdecl asctime(ptr) MSVCRT_asctime
@@ -1316,7 +1316,7 @@
@ cdecl iswupper(long) MSVCRT_iswupper
@ cdecl iswxdigit(long) MSVCRT_iswxdigit
@ cdecl isxdigit(long) MSVCRT_isxdigit
-@ cdecl labs(long) ntdll.labs
+@ cdecl labs(long) MSVCRT_labs
@ cdecl ldexp( double long) MSVCRT_ldexp
@ cdecl ldiv(long long) MSVCRT_ldiv
@ cdecl localeconv() MSVCRT_localeconv
More information about the wine-cvs
mailing list