diff options
-rw-r--r-- | src/mesa/main/imports.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c index ad77373075b..be2f04c1881 100644 --- a/src/mesa/main/imports.c +++ b/src/mesa/main/imports.c @@ -574,28 +574,36 @@ _mesa_ffs(int i) #endif } + +/** + * Find position of first bit set in given value. + * XXX Warning: this function can only be used on 64-bit systems! + * \return position of lest significant bit set, starting at 1, return zero + * if no bits set. + */ int _mesa_ffsll(long long val) { #ifdef ffsll - return ffsll(val); + return ffsll(val); #else - int bit; + int bit; - assert(sizeof(val) == 8); + assert(sizeof(val) == 8); - bit = ffs(val); - if (bit != 0) - return bit; + bit = ffs(val); + if (bit != 0) + return bit; - bit = ffs(val >> 32); - if (bit != 0) - return 32 + bit; + bit = ffs(val >> 32); + if (bit != 0) + return 32 + bit; - return 0; + return 0; #endif } + /** * Return number of bits set in given GLuint. */ |