From 56852e925e262c9a10454ed59a42ce12fb9c801c Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 1 Sep 2015 16:29:17 -0600 Subject: util: added ffsll() function v2: fix errant _GNU_SOURCE test, per Matt Turner. Reviewed-by: Matt Turner Reviewed-by: Jason Ekstrand --- src/gallium/auxiliary/util/u_math.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/gallium') diff --git a/src/gallium/auxiliary/util/u_math.h b/src/gallium/auxiliary/util/u_math.h index 7175d1d4ee8..e92f83a8109 100644 --- a/src/gallium/auxiliary/util/u_math.h +++ b/src/gallium/auxiliary/util/u_math.h @@ -389,6 +389,26 @@ unsigned ffs( unsigned u ) #define ffs __builtin_ffs #endif +#ifdef HAVE___BUILTIN_FFSLL +#define ffsll __builtin_ffsll +#else +static inline int +ffsll(long long int val) +{ + int bit; + + bit = ffs((unsigned) (val & 0xffffffff)); + if (bit != 0) + return bit; + + bit = ffs((unsigned) (val >> 32)); + if (bit != 0) + return 32 + bit; + + return 0; +} +#endif + #endif /* FFS_DEFINED */ /** -- cgit v1.2.3