aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/gallium/auxiliary/util/u_math.h
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-09-26 17:08:48 +0200
committermarha <marha@users.sourceforge.net>2011-09-26 17:08:48 +0200
commit95acf9816e008fa46a6c2fa2f35500deb358bb69 (patch)
treead86feed38d780515cf9da608c5ea21eed04e17d /mesalib/src/gallium/auxiliary/util/u_math.h
parent4f67039e9191d5251c39069bd791a05c5cf22022 (diff)
parent873965b49f283ad028dd4e0e5b7e93a758c84993 (diff)
downloadvcxsrv-95acf9816e008fa46a6c2fa2f35500deb358bb69.tar.gz
vcxsrv-95acf9816e008fa46a6c2fa2f35500deb358bb69.tar.bz2
vcxsrv-95acf9816e008fa46a6c2fa2f35500deb358bb69.zip
Merge remote-tracking branch 'origin/released'
Conflicts: libXmu/src/CmapAlloc.c
Diffstat (limited to 'mesalib/src/gallium/auxiliary/util/u_math.h')
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_math.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/mesalib/src/gallium/auxiliary/util/u_math.h b/mesalib/src/gallium/auxiliary/util/u_math.h
index 46d932293..c74c1da76 100644
--- a/mesalib/src/gallium/auxiliary/util/u_math.h
+++ b/mesalib/src/gallium/auxiliary/util/u_math.h
@@ -424,6 +424,22 @@ unsigned ffs( unsigned u )
#endif
+/* Destructively loop over all of the bits in a mask as in:
+ *
+ * while (mymask) {
+ * int i = u_bit_scan(&mymask);
+ * ... process element i
+ * }
+ *
+ */
+static INLINE int u_bit_scan(unsigned *mask)
+{
+ int i = ffs(*mask) - 1;
+ *mask &= ~(1 << i);
+ return i;
+}
+
+
/**
* Return float bits.
*/