From 92651b9850a4d030a675e7c5b6809235f831f9d7 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Fri, 31 Mar 2017 16:05:35 +0200 Subject: [PATCH] msvcr120: Add fesetround implementation. Signed-off-by: Piotr Caban Signed-off-by: Alexandre Julliard --- .../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 6cea9105748..57c5ecfc1ee 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 dc2186d3ebe..3ae80984828 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 497cf084ff0..6d48f74250c 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 0bb006d473b..ffb83a6b62a 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -1231,6 +1231,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.@) */ diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index fd55f93e198..d4f3d7e7d60 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