diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2025-08-23 15:16:04 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2025-08-27 11:44:07 +0200 |
| commit | 03b645f22bfc7afadc5a8aa6d59edf0eba74a048 (patch) | |
| tree | dda64286a408e104879be2544f9c7dc8aa8e333a /tests/test_string.c | |
| parent | 6836db9b00d4f13a78a53cc5bdb0b63028188b55 (diff) | |
cleanup & json string simd parsing
Diffstat (limited to 'tests/test_string.c')
| -rw-r--r-- | tests/test_string.c | 22 |
1 files changed, 22 insertions, 0 deletions
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 <stdio.h> 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; +} |
