diff --git a/Makefile b/Makefile index 89c3b7ef..58cd8592 100644 --- a/Makefile +++ b/Makefile @@ -104,6 +104,11 @@ ifeq ($(UNAME_M),$(filter $(UNAME_M),x86_64 i686)) ifneq (,$(findstring sse3,$(SSE3_M))) CFLAGS += -msse3 endif + + SSSE3_M := $(shell $(CPUINFO_CMD) | grep -m 1 "ssse3 ") + ifneq (,$(findstring ssse3,$(SSSE3_M))) + CFLAGS += -mssse3 + endif endif endif ifeq ($(UNAME_M),amd64) diff --git a/ggml.c b/ggml.c index 5149a157..70bbbad4 100644 --- a/ggml.c +++ b/ggml.c @@ -18721,6 +18721,14 @@ int ggml_cpu_has_sse3(void) { #endif } +int ggml_cpu_has_ssse3(void) { +#if defined(__SSSE3__) + return 1; +#else + return 0; +#endif +} + int ggml_cpu_has_vsx(void) { #if defined(__POWER9_VECTOR__) return 1; diff --git a/ggml.h b/ggml.h index 0af96c76..29884166 100644 --- a/ggml.h +++ b/ggml.h @@ -1508,6 +1508,7 @@ extern "C" { GGML_API int ggml_cpu_has_clblast (void); GGML_API int ggml_cpu_has_gpublas (void); GGML_API int ggml_cpu_has_sse3 (void); + GGML_API int ggml_cpu_has_ssse3 (void); GGML_API int ggml_cpu_has_vsx (void); // diff --git a/whisper.cpp b/whisper.cpp index e7f760b6..1a74a7b5 100644 --- a/whisper.cpp +++ b/whisper.cpp @@ -3480,6 +3480,7 @@ const char * whisper_print_system_info(void) { s += "WASM_SIMD = " + std::to_string(ggml_cpu_has_wasm_simd()) + " | "; s += "BLAS = " + std::to_string(ggml_cpu_has_blas()) + " | "; s += "SSE3 = " + std::to_string(ggml_cpu_has_sse3()) + " | "; + s += "SSSE3 = " + std::to_string(ggml_cpu_has_ssse3()) + " | "; s += "VSX = " + std::to_string(ggml_cpu_has_vsx()) + " | "; s += "COREML = " + std::to_string(whisper_has_coreml()) + " | "; s += "OPENVINO = " + std::to_string(whisper_has_openvino()) + " | ";