Remove #ifdef catering to MSVC 2012 and earlier in math_funcs.h

For the `master` branch, the minimum supported MSVC version is now
MSVC 2017 (with MSVC 2019 being recommended).

(cherry picked from commit b57d9c8005)
This commit is contained in:
Hugo Locurcio 2021-05-20 22:25:58 +02:00 committed by Rémi Verschelde
parent d5b6cb4639
commit 66a8654963
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

@ -376,28 +376,10 @@ public:
return u.d; return u.d;
} }
//this function should be as fast as possible and rounding mode should not matter // This function should be as fast as possible and rounding mode should not matter.
static _ALWAYS_INLINE_ int fast_ftoi(float a) { static _ALWAYS_INLINE_ int fast_ftoi(float a) {
static int b; // Assuming every supported compiler has `lrint()`.
return lrintf(a);
#if (defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0603) || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP // windows 8 phone?
b = (int)((a > 0.0) ? (a + 0.5) : (a - 0.5));
#elif defined(_MSC_VER) && _MSC_VER < 1800
__asm fld a __asm fistp b
/*#elif defined( __GNUC__ ) && ( defined( __i386__ ) || defined( __x86_64__ ) )
// use AT&T inline assembly style, document that
// we use memory as output (=m) and input (m)
__asm__ __volatile__ (
"flds %1 \n\t"
"fistpl %0 \n\t"
: "=m" (b)
: "m" (a));*/
#else
b = lrintf(a); //assuming everything but msvc 2012 or earlier has lrint
#endif
return b;
} }
static _ALWAYS_INLINE_ uint32_t halfbits_to_floatbits(uint16_t h) { static _ALWAYS_INLINE_ uint32_t halfbits_to_floatbits(uint16_t h) {