summaryrefslogtreecommitdiff
path: root/src/classlibnative
diff options
context:
space:
mode:
authorTanner Gooding <tagoo@outlook.com>2018-08-29 13:08:33 -0700
committerTanner Gooding <tagoo@outlook.com>2018-08-29 16:31:27 -0700
commit13c4ab0742ee7f80fb1cb98bef95e106b0f9c83a (patch)
tree2955e8870369ad7e8013da3d134379c72d19aabe /src/classlibnative
parent91eeb98c500d7d841f49eec7916d8c24d61d0eed (diff)
downloadcoreclr-13c4ab0742ee7f80fb1cb98bef95e106b0f9c83a.tar.gz
coreclr-13c4ab0742ee7f80fb1cb98bef95e106b0f9c83a.tar.bz2
coreclr-13c4ab0742ee7f80fb1cb98bef95e106b0f9c83a.zip
Update floatdouble and floatsingle to use `floatcontrol(precise, value push)` and `floatcontrol(precise, pop)`
Diffstat (limited to 'src/classlibnative')
-rw-r--r--src/classlibnative/float/floatdouble.cpp15
-rw-r--r--src/classlibnative/float/floatsingle.cpp9
2 files changed, 16 insertions, 8 deletions
diff --git a/src/classlibnative/float/floatdouble.cpp b/src/classlibnative/float/floatdouble.cpp
index abce73d9dd..b27ef61416 100644
--- a/src/classlibnative/float/floatdouble.cpp
+++ b/src/classlibnative/float/floatdouble.cpp
@@ -39,6 +39,7 @@
////////////////////////////////////////////////////////////////////////////////////
#ifdef _MSC_VER
+#pragma float_control(push)
#pragma float_control(precise, off)
#endif
@@ -125,7 +126,9 @@ FCIMPLEND
#if defined(_MSC_VER) && defined(_TARGET_AMD64_)
// The /fp:fast form of `ceil` for AMD64 does not correctly handle: `-1.0 < value <= -0.0`
-#pragma float_control(precise, on )
+// https://github.com/dotnet/coreclr/issues/19739
+#pragma float_control(push)
+#pragma float_control(precise, on)
#endif
/*====================================Ceil======================================
@@ -138,7 +141,7 @@ FCIMPL1_V(double, COMDouble::Ceil, double x)
FCIMPLEND
#if defined(_MSC_VER) && defined(_TARGET_AMD64_)
-#pragma float_control(precise, off)
+#pragma float_control(pop)
#endif
/*=====================================Cos======================================
@@ -170,7 +173,9 @@ FCIMPLEND
#if defined(_MSC_VER) && defined(_TARGET_X86_)
// The /fp:fast form of `floor` for x86 does not correctly handle: `-0.0`
-#pragma float_control(precise, on )
+// https://github.com/dotnet/coreclr/issues/19739
+#pragma float_control(push)
+#pragma float_control(precise, on)
#endif
/*====================================Floor=====================================
@@ -183,7 +188,7 @@ FCIMPL1_V(double, COMDouble::Floor, double x)
FCIMPLEND
#if defined(_MSC_VER) && defined(_TARGET_X86_)
-#pragma float_control(precise, off)
+#pragma float_control(pop)
#endif
/*=====================================FMod=====================================
@@ -277,7 +282,7 @@ FCIMPL1_V(double, COMDouble::Tanh, double x)
FCIMPLEND
#ifdef _MSC_VER
-#pragma float_control(precise, on )
+#pragma float_control(pop)
#endif
////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/classlibnative/float/floatsingle.cpp b/src/classlibnative/float/floatsingle.cpp
index 2fac42f489..3903bc9cd3 100644
--- a/src/classlibnative/float/floatsingle.cpp
+++ b/src/classlibnative/float/floatsingle.cpp
@@ -37,6 +37,7 @@
////////////////////////////////////////////////////////////////////////////////////
#ifdef _MSC_VER
+#pragma float_control(push)
#pragma float_control(precise, off)
#endif
@@ -123,7 +124,9 @@ FCIMPLEND
#if defined(_MSC_VER) && defined(_TARGET_AMD64_)
// The /fp:fast form of `ceilf` for AMD64 does not correctly handle: `-1.0 < value <= -0.0`
-#pragma float_control(precise, on )
+// https://github.com/dotnet/coreclr/issues/19739
+#pragma float_control(push)
+#pragma float_control(precise, on)
#endif
/*====================================Ceil======================================
@@ -136,7 +139,7 @@ FCIMPL1_V(float, COMSingle::Ceil, float x)
FCIMPLEND
#if defined(_MSC_VER) && defined(_TARGET_AMD64_)
-#pragma float_control(precise, off)
+#pragma float_control(pop)
#endif
/*=====================================Cos======================================
@@ -266,7 +269,7 @@ FCIMPL1_V(float, COMSingle::Tanh, float x)
FCIMPLEND
#ifdef _MSC_VER
-#pragma float_control(precise, on )
+#pragma float_control(pop)
#endif
////////////////////////////////////////////////////////////////////////////////////