diff --git a/include/stringzilla/stringzilla.h b/include/stringzilla/stringzilla.h index fd6f22e5..f5c534e3 100644 --- a/include/stringzilla/stringzilla.h +++ b/include/stringzilla/stringzilla.h @@ -778,6 +778,9 @@ SZ_PUBLIC sz_cptr_t sz_find_from_set_serial(sz_cptr_t text, sz_size_t length, sz /** @copydoc sz_find_from_set */ SZ_PUBLIC sz_cptr_t sz_find_from_set_avx512(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set); +/** @copydoc sz_find_from_set */ +SZ_PUBLIC sz_cptr_t sz_find_from_set_avx2(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set); + /** @copydoc sz_find_from_set */ SZ_PUBLIC sz_cptr_t sz_find_from_set_neon(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set); @@ -804,6 +807,9 @@ SZ_PUBLIC sz_cptr_t sz_find_last_from_set_serial(sz_cptr_t text, sz_size_t lengt /** @copydoc sz_find_last_from_set */ SZ_PUBLIC sz_cptr_t sz_find_last_from_set_avx512(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set); +/** @copydoc sz_find_last_from_set */ +SZ_PUBLIC sz_cptr_t sz_find_last_from_set_avx2(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set); + /** @copydoc sz_find_last_from_set */ SZ_PUBLIC sz_cptr_t sz_find_last_from_set_neon(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set); @@ -2807,6 +2813,14 @@ SZ_PUBLIC sz_cptr_t sz_find_last_avx2(sz_cptr_t h, sz_size_t h_length, sz_cptr_t return sz_find_last_serial(h, h_length, n, n_length); } +SZ_PUBLIC sz_cptr_t sz_find_from_set_avx2(sz_cptr_t h, sz_size_t h_length, sz_u8_set_t const *set) { + return sz_find_from_set_serial(h, h_length, set); +} + +SZ_PUBLIC sz_cptr_t sz_find_last_from_set_avx2(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set) { + return sz_find_last_from_set_serial(text, length, set); +} + #endif #pragma endregion @@ -3767,6 +3781,10 @@ SZ_PUBLIC sz_cptr_t sz_find_last(sz_cptr_t haystack, sz_size_t h_length, sz_cptr SZ_PUBLIC sz_cptr_t sz_find_from_set(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set) { #if SZ_USE_X86_AVX512 return sz_find_from_set_avx512(text, length, set); +#elif SZ_USE_X86_AVX2 + return sz_find_from_set_avx2(text, length, set); +#elif SZ_USE_ARM_NEON + return sz_find_from_set_neon(text, length, set); #else return sz_find_from_set_serial(text, length, set); #endif @@ -3775,6 +3793,10 @@ SZ_PUBLIC sz_cptr_t sz_find_from_set(sz_cptr_t text, sz_size_t length, sz_u8_set SZ_PUBLIC sz_cptr_t sz_find_last_from_set(sz_cptr_t text, sz_size_t length, sz_u8_set_t const *set) { #if SZ_USE_X86_AVX512 return sz_find_last_from_set_avx512(text, length, set); +#elif SZ_USE_X86_AVX2 + return sz_find_last_from_set_avx2(text, length, set); +#elif SZ_USE_ARM_NEON + return sz_find_last_from_set_neon(text, length, set); #else return sz_find_last_from_set_serial(text, length, set); #endif diff --git a/scripts/test.cpp b/scripts/test.cpp index 2e2686ab..2b5a8b55 100644 --- a/scripts/test.cpp +++ b/scripts/test.cpp @@ -16,10 +16,10 @@ // Those parameters must never be explicitly set during releases, // but they come handy during development, if you want to validate // different ISA-specific implementations. -// #define SZ_USE_X86_AVX2 0 -// #define SZ_USE_X86_AVX512 0 -// #define SZ_USE_ARM_NEON 0 -// #define SZ_USE_ARM_SVE 0 +#define SZ_USE_X86_AVX2 1 +#define SZ_USE_X86_AVX512 0 +#define SZ_USE_ARM_NEON 0 +#define SZ_USE_ARM_SVE 0 #define SZ_DEBUG 1 #include // Baseline