From 37516080db6878bef6fb1e6c5542165f3f982792 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Sat, 23 Aug 2025 22:07:34 +0200 Subject: code upgrade --- src/json.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/json.c') diff --git a/src/json.c b/src/json.c index c299b63..f6dc4e6 100644 --- a/src/json.c +++ b/src/json.c @@ -1,5 +1,6 @@ #include #include +#include #include #include #include @@ -185,15 +186,15 @@ parse_result parse_string(byte *src, uptr start_pos, uptr max_pos) { result.pos = start_pos + 1; // SIMD optimization: process 32 bytes at a time using AVX2 - byte_32 quote_mask = _mm256_set1_epi8('"'); + bytex32 quote_mask = _mm256_set1_epi8('"'); for (; result.pos + 32 <= max_pos; result.pos += 32) { - byte_32 chunk = _mm256_loadu_si256((byte_32 *)(src + result.pos)); - byte_32 cmp = _mm256_cmpeq_epi8(chunk, quote_mask); + bytex32 chunk = _mm256_loadu_si256((bytex32 *)(src + result.pos)); + bytex32 cmp = _mm256_cmpeq_epi8(chunk, quote_mask); i32 mask = _mm256_movemask_epi8(cmp); if (mask != 0) { - result.pos += __builtin_ctz(mask); + result.pos += stdc_trailing_zeros_ui(mask); if (src[result.pos - 1] != '\\') break; }; } -- cgit v1.3