forked from weaselab/conflict-set
Remove obsolete optimizations
These are a relic of when we used forEachInRange for checkMaxBetween
This commit is contained in:
+17
-35
@@ -145,36 +145,24 @@ struct BitSet {
|
||||
// Check begin partial word
|
||||
if (begin & 63) {
|
||||
uint64_t word = words[begin >> 6] & (uint64_t(-1) << (begin & 63));
|
||||
if (std::popcount(word) + (begin & 63) == 64) {
|
||||
while (begin & 63) {
|
||||
f(begin++);
|
||||
}
|
||||
} else {
|
||||
while (word) {
|
||||
uint64_t temp = word & -word;
|
||||
int index = (begin & ~63) + std::countr_zero(word);
|
||||
f(index);
|
||||
word ^= temp;
|
||||
}
|
||||
begin &= ~63;
|
||||
begin += 64;
|
||||
while (word) {
|
||||
uint64_t temp = word & -word;
|
||||
int index = (begin & ~63) + std::countr_zero(word);
|
||||
f(index);
|
||||
word ^= temp;
|
||||
}
|
||||
begin &= ~63;
|
||||
begin += 64;
|
||||
}
|
||||
|
||||
// Check inner, full words
|
||||
while (begin != (end & ~63)) {
|
||||
uint64_t word = words[begin >> 6];
|
||||
if (word == uint64_t(-1)) {
|
||||
for (int i = 0; i < 64; ++i) {
|
||||
f(begin + i);
|
||||
}
|
||||
} else {
|
||||
while (word) {
|
||||
uint64_t temp = word & -word;
|
||||
int index = begin + std::countr_zero(word);
|
||||
f(index);
|
||||
word ^= temp;
|
||||
}
|
||||
while (word) {
|
||||
uint64_t temp = word & -word;
|
||||
int index = begin + std::countr_zero(word);
|
||||
f(index);
|
||||
word ^= temp;
|
||||
}
|
||||
begin += 64;
|
||||
}
|
||||
@@ -182,17 +170,11 @@ struct BitSet {
|
||||
if (end & 63) {
|
||||
// Check end partial word
|
||||
uint64_t word = words[end >> 6] & ~(uint64_t(-1) << (end & 63));
|
||||
if (std::popcount(word) == (end & 63)) {
|
||||
while (begin < end) {
|
||||
f(begin++);
|
||||
}
|
||||
} else {
|
||||
while (word) {
|
||||
uint64_t temp = word & -word;
|
||||
int index = begin + std::countr_zero(word);
|
||||
f(index);
|
||||
word ^= temp;
|
||||
}
|
||||
while (word) {
|
||||
uint64_t temp = word & -word;
|
||||
int index = begin + std::countr_zero(word);
|
||||
f(index);
|
||||
word ^= temp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user