aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/mesa/main/bitset.h
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-12-05 08:05:28 +0100
committermarha <marha@users.sourceforge.net>2011-12-05 08:05:28 +0100
commitfab1dd1d0549bbb52c3598e57aad4f0bfa5e55cf (patch)
treec59c3e084f79bd1f6060f9a5cedb5c48d4da14ee /mesalib/src/mesa/main/bitset.h
parent5d6e342b3c2d0d3607b184b1472b816228839e3f (diff)
parent528f5bd58a139174170c4130c67dca30193c9057 (diff)
downloadvcxsrv-fab1dd1d0549bbb52c3598e57aad4f0bfa5e55cf.tar.gz
vcxsrv-fab1dd1d0549bbb52c3598e57aad4f0bfa5e55cf.tar.bz2
vcxsrv-fab1dd1d0549bbb52c3598e57aad4f0bfa5e55cf.zip
Merge remote-tracking branch 'origin/released'
Conflicts: xorg-server/dix/dispatch.c
Diffstat (limited to 'mesalib/src/mesa/main/bitset.h')
-rw-r--r--mesalib/src/mesa/main/bitset.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/mesalib/src/mesa/main/bitset.h b/mesalib/src/mesa/main/bitset.h
index 7a0704b14..c27b4c474 100644
--- a/mesalib/src/mesa/main/bitset.h
+++ b/mesalib/src/mesa/main/bitset.h
@@ -129,17 +129,32 @@ __bitset_ffs(const BITSET_WORD *x, int n)
/* bit range operations
*/
-#define BITSET64_TEST_RANGE(x, b, e) \
+#define BITSET64_TEST_SUBRANGE(x, b, e) \
(BITSET64_BITWORD(b) == BITSET64_BITWORD(e) ? \
((x)[BITSET64_BITWORD(b)] & BITSET64_RANGE(b, e)) : \
(assert (!"BITSET64_TEST_RANGE: bit range crosses word boundary"), 0))
-#define BITSET64_SET_RANGE(x, b, e) \
+#define BITSET64_TEST_RANGE(x, b, e) \
+ (BITSET64_BITWORD(b) == BITSET64_BITWORD(e) ? \
+ (BITSET64_TEST_SUBRANGE(x, b, e)) : \
+ (BITSET64_TEST_SUBRANGE(x, b, BITSET64_WORDBITS - 1) | \
+ BITSET64_TEST_SUBRANGE(x, BITSET64_WORDBITS, e)))
+#define BITSET64_SET_SUBRANGE(x, b, e) \
(BITSET64_BITWORD(b) == BITSET64_BITWORD(e) ? \
((x)[BITSET64_BITWORD(b)] |= BITSET64_RANGE(b, e)) : \
(assert (!"BITSET64_SET_RANGE: bit range crosses word boundary"), 0))
-#define BITSET64_CLEAR_RANGE(x, b, e) \
+#define BITSET64_SET_RANGE(x, b, e) \
+ (BITSET64_BITWORD(b) == BITSET64_BITWORD(e) ? \
+ (BITSET64_SET_SUBRANGE(x, b, e)) : \
+ (BITSET64_SET_SUBRANGE(x, b, BITSET64_WORDBITS - 1) | \
+ BITSET64_SET_SUBRANGE(x, BITSET64_WORDBITS, e)))
+#define BITSET64_CLEAR_SUBRANGE(x, b, e) \
(BITSET64_BITWORD(b) == BITSET64_BITWORD(e) ? \
((x)[BITSET64_BITWORD(b)] &= ~BITSET64_RANGE(b, e)) : \
(assert (!"BITSET64_CLEAR_RANGE: bit range crosses word boundary"), 0))
+#define BITSET64_CLEAR_RANGE(x, b, e) \
+ (BITSET64_BITWORD(b) == BITSET64_BITWORD(e) ? \
+ (BITSET64_CLEAR_SUBRANGE(x, b, e)) : \
+ (BITSET64_CLEAR_SUBRANGE(x, b, BITSET64_WORDBITS - 1) | \
+ BITSET64_CLEAR_SUBRANGE(x, BITSET64_WORDBITS, e)))
#endif