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