summaryrefslogtreecommitdiffstats
path: root/src/util/rounding.h
diff options
context:
space:
mode:
authorJose Fonseca <[email protected]>2015-08-09 22:36:37 +0100
committerJose Fonseca <[email protected]>2015-08-10 00:08:55 +0100
commit1eaa29cb300e927409281ef0a9413072766eaa3d (patch)
treeddbc242cd110d7385f3af4553afab3e461737527 /src/util/rounding.h
parent497a22a727d3606c7327eb72efbf0d2c03607f0a (diff)
util: Use LONG_MAX instead of LONG_BIT.
More portable. Based on Roland Scheidegger's idea. Tested with roundevent_test on Linux, MinGW, and MSVC. https://bugs.freedesktop.org/show_bug.cgi?id=91591 Reviewed-by: Roland Scheidegger <[email protected]> Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/util/rounding.h')
-rw-r--r--src/util/rounding.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/util/rounding.h b/src/util/rounding.h
index 868e1b434db..7b5608b8a78 100644
--- a/src/util/rounding.h
+++ b/src/util/rounding.h
@@ -28,6 +28,7 @@
#include <math.h>
#include <limits.h>
+#include <stdint.h>
#ifdef __x86_64__
#include <xmmintrin.h>
@@ -96,12 +97,12 @@ static inline long
_mesa_lroundevenf(float x)
{
#ifdef __x86_64__
-#if LONG_BIT == 64
+#if LONG_MAX == INT64_MAX
return _mm_cvtss_si64(_mm_load_ss(&x));
-#elif LONG_BIT == 32 || defined(_WIN32)
+#elif LONG_MAX == INT32_MAX
return _mm_cvtss_si32(_mm_load_ss(&x));
#else
-#error "Unsupported or undefined LONG_BIT"
+#error "Unsupported long size"
#endif
#else
return lrintf(x);
@@ -116,12 +117,12 @@ static inline long
_mesa_lroundeven(double x)
{
#ifdef __x86_64__
-#if LONG_BIT == 64
+#if LONG_MAX == INT64_MAX
return _mm_cvtsd_si64(_mm_load_sd(&x));
-#elif LONG_BIT == 32 || defined(_WIN32)
+#elif LONG_MAX == INT32_MAX
return _mm_cvtsd_si32(_mm_load_sd(&x));
#else
-#error "Unsupported or undefined LONG_BIT"
+#error "Unsupported long size"
#endif
#else
return lrint(x);