From: Tanner Gooding Date: Wed, 29 Aug 2018 20:08:33 +0000 (-0700) Subject: Update floatdouble and floatsingle to use `floatcontrol(precise, value push)` and... X-Git-Tag: submit/tizen/20210909.063632~11030^2~4015 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4e2c9221da9f65535c259eb0cd4b7df5c9755b10;p=platform%2Fupstream%2Fdotnet%2Fruntime.git Update floatdouble and floatsingle to use `floatcontrol(precise, value push)` and `floatcontrol(precise, pop)` Commit migrated from https://github.com/dotnet/coreclr/commit/13c4ab0742ee7f80fb1cb98bef95e106b0f9c83a --- diff --git a/src/coreclr/src/classlibnative/float/floatdouble.cpp b/src/coreclr/src/classlibnative/float/floatdouble.cpp index abce73d..b27ef61 100644 --- a/src/coreclr/src/classlibnative/float/floatdouble.cpp +++ b/src/coreclr/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/coreclr/src/classlibnative/float/floatsingle.cpp b/src/coreclr/src/classlibnative/float/floatsingle.cpp index 2fac42f..3903bc9 100644 --- a/src/coreclr/src/classlibnative/float/floatsingle.cpp +++ b/src/coreclr/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 ////////////////////////////////////////////////////////////////////////////////////