Faster bit selection
This commit is contained in:
parent
dc6e49b289
commit
c17448ed71
@ -100,8 +100,7 @@ B select_c2(B t, B w, B x) {
|
|||||||
for (usz i = wia; ; ) { \
|
for (usz i = wia; ; ) { \
|
||||||
i--; \
|
i--; \
|
||||||
usz n = WRAP(wp[i], xia, thrF("⊏: Indexing out-of-bounds (%i∊𝕨, %s≡≠𝕩)", wp[i], xia)); \
|
usz n = WRAP(wp[i], xia, thrF("⊏: Indexing out-of-bounds (%i∊𝕨, %s≡≠𝕩)", wp[i], xia)); \
|
||||||
b <<= 1; \
|
b = 2*b + ((((u8*)xp)[n/8] >> (n%8)) & 1); \
|
||||||
b |= (-(xp[n/64] & (1ull<<(n%64)))) >> 63; \
|
|
||||||
if (i%64 == 0) { rp[i/64]=b; if (!i) break; } \
|
if (i%64 == 0) { rp[i/64]=b; if (!i) break; } \
|
||||||
} \
|
} \
|
||||||
goto dec_ret; \
|
goto dec_ret; \
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user