|
@@ -376,28 +376,10 @@ public:
|
|
|
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 int b;
|
|
|
-
|
|
|
-#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;
|
|
|
+ // Assuming every supported compiler has `lrint()`.
|
|
|
+ return lrintf(a);
|
|
|
}
|
|
|
|
|
|
static _ALWAYS_INLINE_ uint32_t halfbits_to_floatbits(uint16_t h) {
|