Module: wine Branch: master Commit: 92651b9850a4d030a675e7c5b6809235f831f9d7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=92651b9850a4d030a675e7c5b6...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Mar 31 16:05:35 2017 +0200
msvcr120: Add fesetround implementation.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
.../api-ms-win-crt-runtime-l1-1-0.spec | 4 ++-- dlls/msvcr120/msvcr120.spec | 4 ++-- dlls/msvcr120_app/msvcr120_app.spec | 4 ++-- dlls/msvcrt/math.c | 19 +++++++++++++++++++ dlls/ucrtbase/ucrtbase.spec | 4 ++-- 5 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/dlls/api-ms-win-crt-runtime-l1-1-0/api-ms-win-crt-runtime-l1-1-0.spec b/dlls/api-ms-win-crt-runtime-l1-1-0/api-ms-win-crt-runtime-l1-1-0.spec index 6cea910..57c5ecf 100644 --- a/dlls/api-ms-win-crt-runtime-l1-1-0/api-ms-win-crt-runtime-l1-1-0.spec +++ b/dlls/api-ms-win-crt-runtime-l1-1-0/api-ms-win-crt-runtime-l1-1-0.spec @@ -90,11 +90,11 @@ @ stub feclearexcept @ cdecl fegetenv(ptr) ucrtbase.fegetenv @ stub fegetexceptflag -@ stub fegetround +@ cdecl fegetround() ucrtbase.fegetround @ stub feholdexcept @ cdecl fesetenv(ptr) ucrtbase.fesetenv @ stub fesetexceptflag -@ stub fesetround +@ cdecl fesetround(long) ucrtbase.fesetround @ stub fetestexcept @ cdecl perror(str) ucrtbase.perror @ stub quick_exit diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index dc2186d..3ae8098 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -2146,14 +2146,14 @@ @ stub feclearexcept @ cdecl fegetenv(ptr) MSVCRT_fegetenv @ stub fegetexceptflag -@ stub fegetround +@ cdecl fegetround() MSVCRT_fegetround @ stub feholdexcept @ cdecl feof(ptr) MSVCRT_feof @ stub feraiseexcept @ cdecl ferror(ptr) MSVCRT_ferror @ cdecl fesetenv(ptr) MSVCRT_fesetenv @ stub fesetexceptflag -@ stub fesetround +@ cdecl fesetround(long) MSVCRT_fesetround @ stub fetestexcept @ stub feupdateenv @ cdecl fflush(ptr) MSVCRT_fflush diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 497cf08..6d48f74 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1812,14 +1812,14 @@ @ stub feclearexcept @ cdecl fegetenv(ptr) msvcr120.fegetenv @ stub fegetexceptflag -@ stub fegetround +@ cdecl fegetround() msvcr120.fegetround @ stub feholdexcept @ cdecl feof(ptr) msvcr120.feof @ stub feraiseexcept @ cdecl ferror(ptr) msvcr120.ferror @ cdecl fesetenv(ptr) msvcr120.fesetenv @ stub fesetexceptflag -@ stub fesetround +@ cdecl fesetround(long) msvcr120.fesetround @ stub fetestexcept @ stub feupdateenv @ cdecl fflush(ptr) msvcr120.fflush diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 0bb006d..ffb83a6 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -1232,6 +1232,25 @@ int CDECL __fpe_flt_rounds(void) }
/********************************************************************* + * fegetround (MSVCR120.@) + */ +int CDECL MSVCRT_fegetround(void) +{ + return _controlfp(0, 0) & MSVCRT__RC_CHOP; +} + +/********************************************************************* + * fesetround (MSVCR120.@) + */ +int CDECL MSVCRT_fesetround(int round_mode) +{ + if (round_mode & (~MSVCRT__RC_CHOP)) + return 1; + _controlfp(round_mode, MSVCRT__RC_CHOP); + return 0; +} + +/********************************************************************* * _copysign (MSVCRT.@) */ double CDECL MSVCRT__copysign(double num, double sign) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index fd55f93..d4f3d7e 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -2289,13 +2289,13 @@ @ stub feclearexcept @ cdecl fegetenv(ptr) MSVCRT_fegetenv @ stub fegetexceptflag -@ stub fegetround +@ cdecl fegetround() MSVCRT_fegetround @ stub feholdexcept @ cdecl feof(ptr) MSVCRT_feof @ cdecl ferror(ptr) MSVCRT_ferror @ cdecl fesetenv(ptr) MSVCRT_fesetenv @ stub fesetexceptflag -@ stub fesetround +@ cdecl fesetround(long) MSVCRT_fesetround @ stub fetestexcept @ cdecl fflush(ptr) MSVCRT_fflush @ cdecl fgetc(ptr) MSVCRT_fgetc