Fix issue for 32 bits build due to previous modification of limb size to 64 bits.
This commit is contained in:
1 parent
7b5ae3c15b
commit
39ffe1c95a
1 file changed
+8
-8
+8
-8
@@ -150,7 +150,7 @@ bitset_set_at(bitset_t v, size_t i, bool x)
|
|||||||
const size_t offset = i / BITSET_LIMB_BIT;
|
const size_t offset = i / BITSET_LIMB_BIT;
|
||||||
const size_t index = i % BITSET_LIMB_BIT;
|
const size_t index = i % BITSET_LIMB_BIT;
|
||||||
// This is a branchless version as x can only be 0 or 1 with only one variable shift.
|
// This is a branchless version as x can only be 0 or 1 with only one variable shift.
|
||||||
const size_t mask = (bitset_limb)1<<index;
|
const bitset_limb mask = ((bitset_limb)1)<<index;
|
||||||
v->ptr[offset] = (v->ptr[offset] & ~mask) | (mask & (-(bitset_limb)x));
|
v->ptr[offset] = (v->ptr[offset] & ~mask) | (mask & (-(bitset_limb)x));
|
||||||
BITSETI_CONTRACT (v);
|
BITSETI_CONTRACT (v);
|
||||||
}
|
}
|
||||||
@@ -418,7 +418,7 @@ bitset_equal_p (const bitset_t set1, const bitset_t set2)
|
|||||||
/* Compare the last limb if needed */
|
/* Compare the last limb if needed */
|
||||||
const size_t index = set1->size % BITSET_LIMB_BIT;
|
const size_t index = set1->size % BITSET_LIMB_BIT;
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
const size_t mask = (((bitset_limb)1) << index) - 1;
|
const bitset_limb mask = (((bitset_limb)1) << index) - 1;
|
||||||
if ((set1->ptr[limbSize] & mask) != (set2->ptr[limbSize] & mask))
|
if ((set1->ptr[limbSize] & mask) != (set2->ptr[limbSize] & mask))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -573,7 +573,7 @@ bitset_and(bitset_t dest, const bitset_t src)
|
|||||||
for(size_t i = 0 ; i < n; i++)
|
for(size_t i = 0 ; i < n; i++)
|
||||||
dest->ptr[i] &= src->ptr[i];
|
dest->ptr[i] &= src->ptr[i];
|
||||||
if (m) {
|
if (m) {
|
||||||
size_t mask = (((bitset_limb)1) << m) - 1;
|
bitset_limb mask = (((bitset_limb)1) << m) - 1;
|
||||||
dest->ptr[n] = (dest->ptr[n] & src->ptr[n]) & mask;
|
dest->ptr[n] = (dest->ptr[n] & src->ptr[n]) & mask;
|
||||||
}
|
}
|
||||||
dest->size = s;
|
dest->size = s;
|
||||||
@@ -591,7 +591,7 @@ bitset_or(bitset_t dest, const bitset_t src)
|
|||||||
for(size_t i = 0 ; i < n; i++)
|
for(size_t i = 0 ; i < n; i++)
|
||||||
dest->ptr[i] |= src->ptr[i];
|
dest->ptr[i] |= src->ptr[i];
|
||||||
if (m) {
|
if (m) {
|
||||||
size_t mask = (((bitset_limb)1) << m) - 1;
|
bitset_limb mask = (((bitset_limb)1) << m) - 1;
|
||||||
dest->ptr[n] = (dest->ptr[n] | src->ptr[n]) & mask;
|
dest->ptr[n] = (dest->ptr[n] | src->ptr[n]) & mask;
|
||||||
}
|
}
|
||||||
dest->size = s;
|
dest->size = s;
|
||||||
@@ -609,7 +609,7 @@ bitset_xor(bitset_t dest, const bitset_t src)
|
|||||||
for(size_t i = 0 ; i < n; i++)
|
for(size_t i = 0 ; i < n; i++)
|
||||||
dest->ptr[i] ^= src->ptr[i];
|
dest->ptr[i] ^= src->ptr[i];
|
||||||
if (m) {
|
if (m) {
|
||||||
size_t mask = (((bitset_limb)1) << m) - 1;
|
bitset_limb mask = (((bitset_limb)1) << m) - 1;
|
||||||
dest->ptr[n] = (dest->ptr[n] ^ src->ptr[n]) & mask;
|
dest->ptr[n] = (dest->ptr[n] ^ src->ptr[n]) & mask;
|
||||||
}
|
}
|
||||||
dest->size = s;
|
dest->size = s;
|
||||||
@@ -626,7 +626,7 @@ bitset_not(bitset_t dest)
|
|||||||
for(size_t i = 0 ; i < n; i++)
|
for(size_t i = 0 ; i < n; i++)
|
||||||
dest->ptr[i] = ~ (dest->ptr[i]);
|
dest->ptr[i] = ~ (dest->ptr[i]);
|
||||||
if (m) {
|
if (m) {
|
||||||
size_t mask = (((bitset_limb)1) << m) - 1;
|
bitset_limb mask = (((bitset_limb)1) << m) - 1;
|
||||||
dest->ptr[n] = (~ dest->ptr[n]) & mask;
|
dest->ptr[n] = (~ dest->ptr[n]) & mask;
|
||||||
}
|
}
|
||||||
dest->size = s;
|
dest->size = s;
|
||||||
@@ -644,7 +644,7 @@ bitset_hash(const bitset_t set)
|
|||||||
for(size_t i = 0 ; i < n; i++)
|
for(size_t i = 0 ; i < n; i++)
|
||||||
M_HASH_UP(hash, set->ptr[i]);
|
M_HASH_UP(hash, set->ptr[i]);
|
||||||
if (m) {
|
if (m) {
|
||||||
size_t mask = (((bitset_limb)1) << m) - 1;
|
bitset_limb mask = (((bitset_limb)1) << m) - 1;
|
||||||
M_HASH_UP(hash, (set->ptr[n] & mask));
|
M_HASH_UP(hash, (set->ptr[n] & mask));
|
||||||
}
|
}
|
||||||
return M_HASH_FINAL (hash);
|
return M_HASH_FINAL (hash);
|
||||||
@@ -660,7 +660,7 @@ bitset_clz(const bitset_t set)
|
|||||||
size_t m = s % BITSET_LIMB_BIT;
|
size_t m = s % BITSET_LIMB_BIT;
|
||||||
bitset_limb limb = set->ptr[n];
|
bitset_limb limb = set->ptr[n];
|
||||||
if (m) {
|
if (m) {
|
||||||
size_t mask = (((bitset_limb)1) << m) - 1;
|
bitset_limb mask = (((bitset_limb)1) << m) - 1;
|
||||||
limb &= mask;
|
limb &= mask;
|
||||||
} else {
|
} else {
|
||||||
m = BITSET_LIMB_BIT;
|
m = BITSET_LIMB_BIT;
|
||||||
|
|||||||
Reference in new issue
Block a user