@@ -10,14 +10,14 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
1010 list (APPEND GGML_CPU_SOURCES
1111 ggml-cpu/ggml-cpu.c
1212 ggml-cpu/ggml-cpu.cpp
13- ggml-cpu/ggml-cpu-aarch64 .cpp
14- ggml-cpu/ggml-cpu-aarch64 .h
15- ggml-cpu/ggml-cpu- hbm.cpp
16- ggml-cpu/ggml-cpu- hbm.h
17- ggml-cpu/ggml-cpu- quants.c
18- ggml-cpu/ggml-cpu- quants.h
19- ggml-cpu/ggml-cpu- traits.cpp
20- ggml-cpu/ggml-cpu- traits.h
13+ ggml-cpu/repack .cpp
14+ ggml-cpu/repack .h
15+ ggml-cpu/hbm.cpp
16+ ggml-cpu/hbm.h
17+ ggml-cpu/quants.c
18+ ggml-cpu/quants.h
19+ ggml-cpu/traits.cpp
20+ ggml-cpu/traits.h
2121 ggml-cpu/amx/amx.cpp
2222 ggml-cpu/amx/amx.h
2323 ggml-cpu/amx/mmq.cpp
@@ -84,6 +84,11 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
8484
8585 if (GGML_SYSTEM_ARCH STREQUAL "ARM" )
8686 message (STATUS "ARM detected" )
87+ list (APPEND GGML_CPU_SOURCES
88+ ggml-cpu/arch/arm/quants.c
89+ ggml-cpu/arch/arm/repack.cpp
90+ )
91+
8792 if (MSVC AND NOT CMAKE_C_COMPILER_ID STREQUAL "Clang" )
8893 message (FATAL_ERROR "MSVC is not supported for ARM, use clang" )
8994 else ()
@@ -167,6 +172,11 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
167172 endif ()
168173 elseif (GGML_SYSTEM_ARCH STREQUAL "x86" )
169174 message (STATUS "x86 detected" )
175+ list (APPEND GGML_CPU_SOURCES
176+ ggml-cpu/arch/x86/quants.c
177+ ggml-cpu/arch/x86/repack.cpp
178+ )
179+
170180 if (MSVC )
171181 # instruction set detection for MSVC only
172182 if (GGML_NATIVE)
@@ -302,7 +312,7 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
302312 # Since multiple variants of the CPU backend may be included in the same
303313 # build, using set_source_files_properties() to set the arch flags is not possible
304314 set (GGML_CPU_FEATS_NAME ${GGML_CPU_NAME} -feats)
305- add_library (${GGML_CPU_FEATS_NAME} OBJECT ggml-cpu/cpu-feats-x86 .cpp)
315+ add_library (${GGML_CPU_FEATS_NAME} OBJECT ggml-cpu/arch/x86/ cpu-feats.cpp)
306316 target_include_directories (${GGML_CPU_FEATS_NAME} PRIVATE . .. ../include )
307317 target_compile_definitions (${GGML_CPU_FEATS_NAME} PRIVATE ${ARCH_DEFINITIONS} )
308318 target_compile_definitions (${GGML_CPU_FEATS_NAME} PRIVATE GGML_BACKEND_DL GGML_BACKEND_BUILD GGML_BACKEND_SHARED)
@@ -311,6 +321,7 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
311321 endif ()
312322 elseif (GGML_SYSTEM_ARCH STREQUAL "PowerPC" )
313323 message (STATUS "PowerPC detected" )
324+ list (APPEND GGML_CPU_SOURCES ggml-cpu/arch/powerpc/quants.c)
314325 if (GGML_NATIVE)
315326 if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64" )
316327 file (READ "/proc/cpuinfo" POWER10_M)
@@ -338,6 +349,8 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
338349 endif ()
339350 elseif (GGML_SYSTEM_ARCH STREQUAL "loongarch64" )
340351 message (STATUS "loongarch64 detected" )
352+ list (APPEND GGML_CPU_SOURCES ggml-cpu/arch/loongarch/quants.c)
353+
341354 list (APPEND ARCH_FLAGS -march=loongarch64)
342355 if (GGML_LASX)
343356 list (APPEND ARCH_FLAGS -mlasx)
@@ -347,6 +360,10 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
347360 endif ()
348361 elseif (GGML_SYSTEM_ARCH STREQUAL "riscv64" )
349362 message (STATUS "riscv64 detected" )
363+ list (APPEND GGML_CPU_SOURCES
364+ ggml-cpu/arch/riscv/quants.c
365+ ggml-cpu/arch/riscv/repack.cpp
366+ )
350367 if (GGML_RVV)
351368 if (GGML_XTHEADVECTOR)
352369 list (APPEND ARCH_FLAGS -march=rv64gc_xtheadvector -mabi=lp64d)
@@ -358,6 +375,7 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
358375 endif ()
359376 elseif (GGML_SYSTEM_ARCH STREQUAL "s390x" )
360377 message (STATUS "s390x detected" )
378+ list (APPEND GGML_CPU_SOURCES ggml-cpu/arch/s390/quants.c)
361379 file (READ "/proc/cpuinfo" CPUINFO_CONTENTS)
362380 string (REGEX REPLACE "machine[ \t\r\n ]*=[ \t\r\n ]*([0-9]+)" "\\ 1" S390X_M ${CPUINFO_CONTENTS} )
363381
@@ -381,12 +399,16 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
381399 if (GGML_VXE)
382400 list (APPEND ARCH_FLAGS -mvx -mzvector)
383401 endif ()
402+ elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "wasm" )
403+ message (STATUS "Wasm detected" )
404+ list (APPEND GGML_CPU_SOURCES ggml-cpu/arch/wasm/quants.c)
384405 else ()
385- message (STATUS "Unknown architecture" )
406+ message (WARNING "Unknown CPU architecture. Falling back to generic implementations." )
407+ list (APPEND ARCH_FLAGS -DGGML_CPU_GENERIC)
386408 endif ()
387409
388- if (GGML_CPU_AARCH64 )
389- target_compile_definitions (${GGML_CPU_NAME} PRIVATE GGML_USE_CPU_AARCH64 )
410+ if (GGML_CPU_REPACK )
411+ target_compile_definitions (${GGML_CPU_NAME} PRIVATE GGML_USE_CPU_REPACK )
390412 endif ()
391413
392414 if (GGML_CPU_KLEIDIAI)
0 commit comments