diff --git a/include/simdjson/stage1_find_marks_flatten_haswell.h b/include/simdjson/stage1_find_marks_flatten_haswell.h index 4d1a9c36e..a54eb712a 100644 --- a/include/simdjson/stage1_find_marks_flatten_haswell.h +++ b/include/simdjson/stage1_find_marks_flatten_haswell.h @@ -24,46 +24,46 @@ really_inline void flatten_bits(uint32_t *base_ptr, uint32_t &base, // Unfortunately, in other cases, // it helps tremendously. if(bits == 0) return; - uint32_t cnt = _popcnt64(bits); + uint32_t cnt = _mm_popcnt_u64(bits); uint32_t next_base = base + cnt; idx -= 64; base_ptr += base; { - base_ptr[0] = idx + __tzcnt_u64(bits); + base_ptr[0] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[1] = idx + __tzcnt_u64(bits); + base_ptr[1] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[2] = idx + __tzcnt_u64(bits); + base_ptr[2] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[3] = idx + __tzcnt_u64(bits); + base_ptr[3] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[4] = idx + __tzcnt_u64(bits); + base_ptr[4] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[5] = idx + __tzcnt_u64(bits); + base_ptr[5] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[6] = idx + __tzcnt_u64(bits); + base_ptr[6] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[7] = idx + __tzcnt_u64(bits); + base_ptr[7] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); base_ptr += 8; } // We hope that the next branch is easily predicted. if (cnt > 8) { - base_ptr[0] = idx + __tzcnt_u64(bits); + base_ptr[0] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[1] = idx + __tzcnt_u64(bits); + base_ptr[1] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[2] = idx + __tzcnt_u64(bits); + base_ptr[2] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[3] = idx + __tzcnt_u64(bits); + base_ptr[3] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[4] = idx + __tzcnt_u64(bits); + base_ptr[4] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[5] = idx + __tzcnt_u64(bits); + base_ptr[5] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[6] = idx + __tzcnt_u64(bits); + base_ptr[6] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); - base_ptr[7] = idx + __tzcnt_u64(bits); + base_ptr[7] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); base_ptr += 8; } @@ -71,7 +71,7 @@ really_inline void flatten_bits(uint32_t *base_ptr, uint32_t &base, // since it means having one structural or pseudo-structral element // every 4 characters (possible with inputs like "","","",...). do { - base_ptr[0] = idx + __tzcnt_u64(bits); + base_ptr[0] = idx + _tzcnt_u64(bits); bits = _blsr_u64(bits); base_ptr++; } while(bits != 0); diff --git a/include/simdjson/stage1_find_marks_haswell.h b/include/simdjson/stage1_find_marks_haswell.h index a2e707614..6cb979160 100644 --- a/include/simdjson/stage1_find_marks_haswell.h +++ b/include/simdjson/stage1_find_marks_haswell.h @@ -3,7 +3,7 @@ #include "simdjson/stage1_find_marks.h" #include "simdjson/stage1_find_marks_macros.h" -#include "simdjson/stage1_find_marks_flatten.h" +#include "simdjson/stage1_find_marks_flatten_haswell.h" #include "simdjson/simdutf8check_haswell.h" #ifdef IS_X86_64 diff --git a/src/stage1_find_marks.cpp b/src/stage1_find_marks.cpp index 38a500063..605dbc976 100644 --- a/src/stage1_find_marks.cpp +++ b/src/stage1_find_marks.cpp @@ -9,7 +9,7 @@ TARGET_HASWELL namespace simdjson { template<> int find_structural_bits(const uint8_t *buf, size_t len, ParsedJson &pj) { - FIND_STRUCTURAL_BITS(architecture::haswell, buf, len, pj, simdjson::flatten_bits); + FIND_STRUCTURAL_BITS(architecture::haswell, buf, len, pj, simdjson::haswell::flatten_bits); } } // simdjson UNTARGET_REGION