aboutsummaryrefslogtreecommitdiff
path: root/tests/test_string.c
diff options
context:
space:
mode:
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;
+}