diff options
author | Eric Anholt <[email protected]> | 2007-01-20 18:06:38 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2007-01-26 14:18:24 -0800 |
commit | 869b8ad499717eda4a1be04de4e516134123402c (patch) | |
tree | 98ba308706e9b7ad2abcb500862c23e3d3a50930 /src/mesa/main | |
parent | dbb54b234cd919b8ef7e36e0603ec69f3ed3fc7f (diff) |
Add _mesa_ffsll() for compatibility on OSes without ffsll(), and use it.
Diffstat (limited to 'src/mesa/main')
-rw-r--r-- | src/mesa/main/imports.c | 21 | ||||
-rw-r--r-- | src/mesa/main/imports.h | 3 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c index 996839a20e9..ad77373075b 100644 --- a/src/mesa/main/imports.c +++ b/src/mesa/main/imports.c @@ -574,6 +574,27 @@ _mesa_ffs(int i) #endif } +int +_mesa_ffsll(long long val) +{ +#ifdef ffsll + return ffsll(val); +#else + int bit; + + assert(sizeof(val) == 8); + + bit = ffs(val); + if (bit != 0) + return bit; + + bit = ffs(val >> 32); + if (bit != 0) + return 32 + bit; + + return 0; +#endif +} /** * Return number of bits set in given GLuint. diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index 19a9478f76a..d9885dbeec4 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -688,6 +688,9 @@ _mesa_pow(double x, double y); extern int _mesa_ffs(int i); +extern int +_mesa_ffsll(long long i); + extern unsigned int _mesa_bitcount(unsigned int n); |