From 6e0a579edb11d75d4fe4226676e88ba56fffd4de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Pawe=C5=82czyk?= Date: Sun, 27 Aug 2023 20:36:41 +0200 Subject: [PATCH] ggml : detect SSSE3 (#1211) * ggml : add ggml_cpu_has_ssse3 * whisper : show SSSE3 in system info * make : detect SSSE3 via cpuinfo --- Makefile | 5 +++++ ggml.c | 8 ++++++++ ggml.h | 1 + whisper.cpp | 1 + 4 files changed, 15 insertions(+) diff --git a/Makefile b/Makefile index 89c3b7ef328..58cd859220b 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 5149a157235..70bbbad4d0d 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 0af96c76b6d..29884166edc 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 e7f760b6072..1a74a7b52b7 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()) + " | ";