Module: wine Branch: master Commit: 530d269e0187f2d0b406f8d5e3c4de974bf553ae URL: http://source.winehq.org/git/wine.git/?a=commit;h=530d269e0187f2d0b406f8d5e3...
Author: Piotr Caban piotr@codeweavers.com Date: Tue May 26 14:54:49 2015 +0200
msvcr120: Add _dsign implementation.
---
dlls/msvcr120/msvcr120.spec | 6 +++--- dlls/msvcr120/tests/msvcr120.c | 24 ++++++++++++++++++++++++ dlls/msvcr120_app/msvcr120_app.spec | 6 +++--- dlls/msvcrt/math.c | 16 ++++++++++++++++ 4 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 7fa5f89..1d1196d 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1109,7 +1109,7 @@ @ cdecl _difftime64(long long) MSVCRT__difftime64 @ stub _dosmaperr @ stub _dpcomp -@ stub _dsign +@ cdecl _dsign(double) MSVCR120__dsign @ extern _dstbias MSVCRT__dstbias @ cdecl _dtest(ptr) MSVCR120__dtest @ cdecl _dup(long) MSVCRT__dup @@ -1143,7 +1143,7 @@ @ cdecl _fdclass(float) MSVCR120__fdclass @ cdecl _fdopen(long str) MSVCRT__fdopen @ stub _fdpcomp -@ stub _fdsign +@ cdecl _fdsign(float) MSVCR120__fdsign @ cdecl _fdtest(ptr) MSVCR120__fdtest @ cdecl _fflush_nolock(ptr) MSVCRT__fflush_nolock @ cdecl _fgetc_nolock(ptr) MSVCRT__fgetc_nolock @@ -1391,7 +1391,7 @@ @ cdecl _kbhit() @ cdecl _ldclass(double) MSVCR120__ldclass @ stub _ldpcomp -@ stub _ldsign +@ cdecl _ldsign(double) MSVCR120__dsign @ cdecl _ldtest(ptr) MSVCR120__ldtest @ cdecl _lfind(ptr ptr ptr long ptr) @ stub _lfind_s diff --git a/dlls/msvcr120/tests/msvcr120.c b/dlls/msvcr120/tests/msvcr120.c index c0a582f..e7749a6 100644 --- a/dlls/msvcr120/tests/msvcr120.c +++ b/dlls/msvcr120/tests/msvcr120.c @@ -61,6 +61,8 @@ struct MSVCRT_lconv static char* (CDECL *p_setlocale)(int category, const char* locale); static struct MSVCRT_lconv* (CDECL *p_localeconv)(void); static size_t (CDECL *p_wcstombs_s)(size_t *ret, char* dest, size_t sz, const wchar_t* src, size_t max); +static int (CDECL *p__dsign)(double); +static int (CDECL *p__fdsign)(float);
static BOOL init(void) { @@ -76,6 +78,8 @@ static BOOL init(void) p_setlocale = (void*)GetProcAddress(module, "setlocale"); p_localeconv = (void*)GetProcAddress(module, "localeconv"); p_wcstombs_s = (void*)GetProcAddress(module, "wcstombs_s"); + p__dsign = (void*)GetProcAddress(module, "_dsign"); + p__fdsign = (void*)GetProcAddress(module, "_fdsign"); return TRUE; }
@@ -148,8 +152,28 @@ static void test_lconv(void) test_lconv_helper(locstrs[i]); }
+static void test__dsign(void) +{ + int ret; + + ret = p__dsign(1); + ok(ret == 0, "p_dsign(1) = %x\n", ret); + ret = p__dsign(0); + ok(ret == 0, "p_dsign(0) = %x\n", ret); + ret = p__dsign(-1); + ok(ret == 0x8000, "p_dsign(-1) = %x\n", ret); + + ret = p__fdsign(1); + ok(ret == 0, "p_fdsign(1) = %x\n", ret); + ret = p__fdsign(0); + ok(ret == 0, "p_fdsign(0) = %x\n", ret); + ret = p__fdsign(-1); + ok(ret == 0x8000, "p_fdsign(-1) = %x\n", ret); +} + START_TEST(msvcr120) { if (!init()) return; test_lconv(); + test__dsign(); } diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 271e2f0..7f6be1d 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1050,7 +1050,7 @@ @ cdecl _difftime64(long long) msvcr120._difftime64 @ stub _dosmaperr @ stub _dpcomp -@ stub _dsign +@ cdecl _dsign(double) msvcr120._dsign @ extern _dstbias msvcr120._dstbias @ cdecl _dtest(ptr) msvcr120._dtest @ cdecl _dup(long) msvcr120._dup @@ -1073,7 +1073,7 @@ @ cdecl _fdclass(float) msvcr120._fdclass @ cdecl _fdopen(long str) msvcr120._fdopen @ stub _fdpcomp -@ stub _fdsign +@ cdecl _fdsign(float) msvcr120._fdsign @ cdecl _fdtest(ptr) msvcr120._fdtest @ cdecl _fflush_nolock(ptr) msvcr120._fflush_nolock @ cdecl _fgetc_nolock(ptr) msvcr120._fgetc_nolock @@ -1257,7 +1257,7 @@ @ cdecl _jn(long double) msvcr120._jn @ cdecl _ldclass(double) msvcr120._ldclass @ stub _ldpcomp -@ stub _ldsign +@ cdecl _ldsign(double) msvcr120._ldsign @ cdecl _ldtest(ptr) msvcr120._ldtest @ cdecl _lfind(ptr ptr ptr long ptr) msvcr120._lfind @ stub _lfind_s diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index f796dd9..6779430 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -2633,3 +2633,19 @@ double CDECL MSVCR120_fmax(double x, double y) return signbit(x) ? y : x; return x<y ? y : x; } + +/********************************************************************* + * _fdsign (MSVCR120.@) + */ +int CDECL MSVCR120__fdsign(float x) +{ + return signbit(x) ? 0x8000 : 0; +} + +/********************************************************************* + * _dsign (MSVCR120.@) + */ +int CDECL MSVCR120__dsign(double x) +{ + return signbit(x) ? 0x8000 : 0; +}