aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/gallium/auxiliary/util/u_math.h
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib/src/gallium/auxiliary/util/u_math.h')
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_math.h21
1 files changed, 13 insertions, 8 deletions
diff --git a/mesalib/src/gallium/auxiliary/util/u_math.h b/mesalib/src/gallium/auxiliary/util/u_math.h
index 19c7343b1..d6e83f962 100644
--- a/mesalib/src/gallium/auxiliary/util/u_math.h
+++ b/mesalib/src/gallium/auxiliary/util/u_math.h
@@ -40,7 +40,6 @@
#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
#ifdef __cplusplus
@@ -530,6 +529,7 @@ unsigned ffs( unsigned u )
}
#elif defined(__MINGW32__) || defined(PIPE_OS_ANDROID)
#define ffs __builtin_ffs
+#define ffsll __builtin_ffsll
#endif
#endif /* FFS_DEFINED */
@@ -561,14 +561,10 @@ util_last_bit(unsigned u)
static INLINE unsigned
util_last_bit_signed(int i)
{
-#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 407) && !defined(__INTEL_COMPILER)
- return 31 - __builtin_clrsb(i);
-#else
if (i >= 0)
return util_last_bit(i);
else
return util_last_bit(~(unsigned)i);
-#endif
}
/* Destructively loop over all of the bits in a mask as in:
@@ -587,6 +583,15 @@ u_bit_scan(unsigned *mask)
return i;
}
+#ifndef _MSC_VER
+static INLINE int
+u_bit_scan64(uint64_t *mask)
+{
+ int i = ffsll(*mask) - 1;
+ *mask &= ~(1llu << i);
+ return i;
+}
+#endif
/**
* Return float bits.
@@ -602,9 +607,9 @@ fui( float f )
static INLINE float
uif(uint32_t ui)
{
- union fi fi;
- fi.ui = ui;
- return fi.f;
+ union fi fi;
+ fi.ui = ui;
+ return fi.f;
}