From: Brian Paul Date: Tue, 1 Sep 2015 22:29:17 +0000 (-0600) Subject: util: added ffsll() function X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=56852e925e262c9a10454ed59a42ce12fb9c801c;p=mesa.git util: added ffsll() function v2: fix errant _GNU_SOURCE test, per Matt Turner. Reviewed-by: Matt Turner Reviewed-by: Jason Ekstrand --- 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 */ /**