4 ms·
The name SWAR is sometimes used (https://en.wikipedia.org/wiki/SWAR https://en.wikipedia.org/wiki/SWAR). Indeed, even 8-bit fields can be added in parallel, us
by hairtuq 6y ago
The name SWAR is sometimes used (https://en.wikipedia.org/wiki/SWAR https://en.wikipedia.org/wiki/SWAR).
Indeed, even 8-bit fields can be added in parallel, using the fact that ^ is like a + that does not produce a carry:
uint64_t signmask = 0x8080808080808080;
uint64_t sum_without_sign_bits = ((x & ~signmask) + (y & ~signmask));
uint64_t sum_of_sign_bits = (x ^ y) & signmask;
return sum_without_sign_bits ^ sum_of_sign_bits;