summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/imports.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2007-01-20 18:06:38 -0800
committerEric Anholt <[email protected]>2007-01-26 14:18:24 -0800
commit869b8ad499717eda4a1be04de4e516134123402c (patch)
tree98ba308706e9b7ad2abcb500862c23e3d3a50930 /src/mesa/main/imports.c
parentdbb54b234cd919b8ef7e36e0603ec69f3ed3fc7f (diff)
Add _mesa_ffsll() for compatibility on OSes without ffsll(), and use it.
Diffstat (limited to 'src/mesa/main/imports.c')
-rw-r--r--src/mesa/main/imports.c21
1 files changed, 21 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.