Merge branch 'master' of https://github.com/lemire/simdjson
This commit is contained in:
commit
0250352139
|
@ -98,7 +98,6 @@ really_inline bool parse_string(UNUSED const uint8_t *buf, UNUSED size_t len,
|
||||||
auto quote_mask = _mm256_cmpeq_epi8(v, _mm256_set1_epi8('"'));
|
auto quote_mask = _mm256_cmpeq_epi8(v, _mm256_set1_epi8('"'));
|
||||||
auto quote_bits =
|
auto quote_bits =
|
||||||
static_cast<uint32_t>(_mm256_movemask_epi8(quote_mask));
|
static_cast<uint32_t>(_mm256_movemask_epi8(quote_mask));
|
||||||
const size_t LOOP_SIZE = 32;
|
|
||||||
#else
|
#else
|
||||||
uint8x16_t v0 = vld1q_u8(src);
|
uint8x16_t v0 = vld1q_u8(src);
|
||||||
uint8x16_t v1 = vld1q_u8(src+16);
|
uint8x16_t v1 = vld1q_u8(src+16);
|
||||||
|
|
|
@ -84,6 +84,7 @@ really_inline void check_utf8(simd_input in,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __ARM_NEON
|
||||||
uint16_t neonmovemask(uint8x16_t input) {
|
uint16_t neonmovemask(uint8x16_t input) {
|
||||||
const uint8x16_t bitmask = { 0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
|
const uint8x16_t bitmask = { 0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80,
|
||||||
0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
|
0x01, 0x02, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
|
||||||
|
@ -133,6 +134,7 @@ uint64_t neonmovemask_bulk(uint8x16_t p0, uint8x16_t p1, uint8x16_t p2, uint8x16
|
||||||
return vgetq_lane_u64(vreinterpretq_u64_u8(sum), 0);
|
return vgetq_lane_u64(vreinterpretq_u64_u8(sum), 0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// a straightforward comparison of a mask against input. 5 uops; would be
|
// a straightforward comparison of a mask against input. 5 uops; would be
|
||||||
// cheaper in AVX512.
|
// cheaper in AVX512.
|
||||||
|
|
Loading…
Reference in New Issue