From 03b645f22bfc7afadc5a8aa6d59edf0eba74a048 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Sat, 23 Aug 2025 15:16:04 +0200 Subject: cleanup & json string simd parsing --- tests/test_string.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'tests/test_string.c') diff --git a/tests/test_string.c b/tests/test_string.c index 1baab6a..8b5d0d6 100644 --- a/tests/test_string.c +++ b/tests/test_string.c @@ -1,5 +1,7 @@ #include "../include/string.h" #include "../include/testing.h" +#include "../include/types.h" +#include i32 test_string_literal_equality() { t_assert(Str_equals(S("Bonjour"), S("Bonjour"))); @@ -17,3 +19,23 @@ i32 test_string_copy() { return 0; } + +i32 test_fast_string() { + byte_32 quote_mask = _mm256_set1_epi8('"'); + byte *s = malloc(32 * sizeof(byte)); + s = "abcdefghijklmnopqrstuvwxyzabcdef"; + + byte_32 chunk = _mm256_loadu_si256((byte_32 *)s); + byte_32 cmp = _mm256_cmpeq_epi8(chunk, quote_mask); + i32 mask = _mm256_movemask_epi8(cmp); + t_assert(_mm_popcnt_u32(mask) == 0); + + s = "abcdefghijklm\"nopqrstuvwxyzabcde"; + + chunk = _mm256_loadu_si256((byte_32 *)s); + cmp = _mm256_cmpeq_epi8(chunk, quote_mask); + mask = _mm256_movemask_epi8(cmp); + t_assert(_mm_popcnt_u32(mask) == 1); + + return 0; +} -- cgit v1.3