aboutsummaryrefslogtreecommitdiff
path: root/tests/test_string.c
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2025-08-23 15:16:04 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2025-08-27 11:44:07 +0200
commit03b645f22bfc7afadc5a8aa6d59edf0eba74a048 (patch)
treedda64286a408e104879be2544f9c7dc8aa8e333a /tests/test_string.c
parent6836db9b00d4f13a78a53cc5bdb0b63028188b55 (diff)
cleanup & json string simd parsing
Diffstat (limited to 'tests/test_string.c')
-rw-r--r--tests/test_string.c22
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;
+}