Piotr Caban : msvcr120: Add fesetround implementation.
Alexandre Julliard
julliard at winehq.org
Thu Jul 20 12:11:28 CDT 2017
Module: wine
Branch: stable
Commit: ef3621ba6f6a06b8e69a390fc31591b5688d62cd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ef3621ba6f6a06b8e69a390fc31591b5688d62cd
Author: Piotr Caban <piotr at codeweavers.com>
Date: Fri Mar 31 16:05:35 2017 +0200
msvcr120: Add fesetround implementation.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 92651b9850a4d030a675e7c5b6809235f831f9d7)
Signed-off-by: Michael Stefaniuc <mstefani at 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 2a9c42c..b6fafbb 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 ae200c7..0799aca 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 857561b..437aa15 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 e57b6d6..a3dcf9c 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
More information about the wine-cvs
mailing list