diff --git a/src/jsonminifier.cpp b/src/jsonminifier.cpp index 150b49e08..60f049999 100644 --- a/src/jsonminifier.cpp +++ b/src/jsonminifier.cpp @@ -146,10 +146,10 @@ size_t jsonminify(const uint8_t *buf, size_t len, uint8_t *out) { int mask2 = (whitespace >> 16) & 0xFFFF; int mask3 = (whitespace >> 32) & 0xFFFF; int mask4 = (whitespace >> 48) & 0xFFFF; - int pop1 = _mm_popcnt_u64((~whitespace) & 0xFFFF); - int pop2 = _mm_popcnt_u64((~whitespace) & UINT64_C(0xFFFFFFFF)); - int pop3 = _mm_popcnt_u64((~whitespace) & UINT64_C(0xFFFFFFFFFFFF)); - int pop4 = _mm_popcnt_u64((~whitespace)); + int pop1 = hamming((~whitespace) & 0xFFFF); + int pop2 = hamming((~whitespace) & UINT64_C(0xFFFFFFFF)); + int pop3 = hamming((~whitespace) & UINT64_C(0xFFFFFFFFFFFF)); + int pop4 = hamming((~whitespace)); __m256i vmask1 = _mm256_loadu2_m128i((const __m128i *)mask128_epi8 + (mask2 & 0x7FFF), (const __m128i *)mask128_epi8 + (mask1 & 0x7FFF)); @@ -225,10 +225,10 @@ size_t jsonminify(const uint8_t *buf, size_t len, uint8_t *out) { int mask2 = (whitespace >> 16) & 0xFFFF; int mask3 = (whitespace >> 32) & 0xFFFF; int mask4 = (whitespace >> 48) & 0xFFFF; - int pop1 = _mm_popcnt_u64((~whitespace) & 0xFFFF); - int pop2 = _mm_popcnt_u64((~whitespace) & UINT64_C(0xFFFFFFFF)); - int pop3 = _mm_popcnt_u64((~whitespace) & UINT64_C(0xFFFFFFFFFFFF)); - int pop4 = _mm_popcnt_u64((~whitespace)); + int pop1 = hamming((~whitespace) & 0xFFFF); + int pop2 = hamming((~whitespace) & UINT64_C(0xFFFFFFFF)); + int pop3 = hamming((~whitespace) & UINT64_C(0xFFFFFFFFFFFF)); + int pop4 = hamming((~whitespace)); __m256i vmask1 = _mm256_loadu2_m128i((const __m128i *)mask128_epi8 + (mask2 & 0x7FFF), (const __m128i *)mask128_epi8 + (mask1 & 0x7FFF)); diff --git a/src/stage2_flatten.cpp b/src/stage2_flatten.cpp index b68ccb6cd..00f8bcbeb 100644 --- a/src/stage2_flatten.cpp +++ b/src/stage2_flatten.cpp @@ -72,7 +72,7 @@ bool flatten_indexes(size_t len, ParsedJson &pj) { s &= s - 1ULL; } #elif defined(NO_PDEP_PLEASE) - uint32_t cnt = _mm_popcnt_u64(s); + uint32_t cnt = hamming(s); uint32_t next_base = base + cnt; while (s) { CALL(SET_BITLOOPN, NO_PDEP_WIDTH)