diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c024a5e..2cadabae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -953,8 +953,6 @@ else () endif (NOT BUILD_AVX512VBMI) if(BUILD_SSE2_SIMDE) set (DISPATCHER_DEFINE "${DISPATCHER_DEFINE} -DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2") - set_source_files_properties(src/hs.cpp PROPERTIES - COMPILE_FLAGS "-DVS_SIMDE_BACKEND -DVS_SIMDE_NATIVE -march=core2 -msse2") endif(BUILD_SSE2_SIMDE) set_source_files_properties(src/dispatcher.c PROPERTIES COMPILE_FLAGS "-Wno-unused-parameter -Wno-unused-function ${DISPATCHER_DEFINE}") diff --git a/src/hs.cpp b/src/hs.cpp index 9928a485..a1fd39ca 100644 --- a/src/hs.cpp +++ b/src/hs.cpp @@ -198,15 +198,9 @@ hs_compile_multi_int(const char *const *expressions, const unsigned *flags, return HS_COMPILER_ERROR; } -#if defined(VS_SIMDE_NATIVE) && (defined(ARCH_IA32) || defined(ARCH_X86_64)) -#define CHECK_SSE_FUNC() (1) -#else -#define CHECK_SSE_FUNC() check_ssse3() -#endif - #if defined(FAT_RUNTIME) #if defined(ARCH_IA32) || defined(ARCH_X86_64) - if (!CHECK_SSE_FUNC()) { + if (!check_ssse3()) { *db = nullptr; *comp_error = generateCompileError("Unsupported architecture", -1); return HS_ARCH_ERROR; @@ -330,7 +324,7 @@ hs_compile_lit_multi_int(const char *const *expressions, const unsigned *flags, } #if defined(FAT_RUNTIME) #if defined(ARCH_IA32) || defined(ARCH_X86_64) - if (!CHECK_SSE_FUNC()) { + if (!check_ssse3()) { *db = nullptr; *comp_error = generateCompileError("Unsupported architecture", -1); return HS_ARCH_ERROR; @@ -510,7 +504,7 @@ hs_error_t hs_expression_info_int(const char *expression, unsigned int flags, #if defined(FAT_RUNTIME) #if defined(ARCH_IA32) || defined(ARCH_X86_64) - if (!CHECK_SSE_FUNC()) { + if (!check_ssse3()) { *error = generateCompileError("Unsupported architecture", -1); return HS_ARCH_ERROR; } @@ -643,7 +637,7 @@ extern "C" HS_PUBLIC_API hs_error_t HS_CDECL hs_free_compile_error(hs_compile_error_t *error) { #if defined(FAT_RUNTIME) #if defined(ARCH_IA32) || defined(ARCH_X86_64) - if (!CHECK_SSE_FUNC()) { + if (!check_ssse3()) { return HS_ARCH_ERROR; } #endif diff --git a/src/util/arch/x86/cpuid_inline.h b/src/util/arch/x86/cpuid_inline.h index d5ff210c..fdbd893c 100644 --- a/src/util/arch/x86/cpuid_inline.h +++ b/src/util/arch/x86/cpuid_inline.h @@ -210,9 +210,13 @@ int check_avx512vbmi(void) { static inline int check_ssse3(void) { +#if defined(VS_SIMDE_NATIVE) && (defined(ARCH_IA32) || defined(ARCH_X86_64)) + return 1; +#else unsigned int eax, ebx, ecx, edx; cpuid(1, 0, &eax, &ebx, &ecx, &edx); return !!(ecx & CPUID_SSSE3); +#endif } static inline