@@ -269,17 +269,23 @@ endfunction()
269269function (ggml_add_cpu_backend_variant tag_name)
270270 set (GGML_CPU_TAG_NAME ${tag_name} )
271271 # other: OPENMP LLAMAFILE CPU_HBM
272- foreach (feat NATIVE
273- SSE42
274- AVX AVX2 BMI2 AVX_VNNI FMA F16C
275- AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16
276- AMX_TILE AMX_INT8 AMX_BF16)
277- set (GGML_${feat} OFF )
278- endforeach ()
279-
280- foreach (feat ${ARGN} )
281- set (GGML_${feat} ON )
282- endforeach ()
272+ if (GGML_SYSTEM_ARCH STREQUAL "x86" )
273+ foreach (feat NATIVE
274+ SSE42
275+ AVX AVX2 BMI2 AVX_VNNI FMA F16C
276+ AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16
277+ AMX_TILE AMX_INT8 AMX_BF16)
278+ set (GGML_${feat} OFF )
279+ endforeach ()
280+
281+ foreach (feat ${ARGN} )
282+ set (GGML_${feat} ON )
283+ endforeach ()
284+ elseif (GGML_SYSTEM_ARCH STREQUAL "ARM" )
285+ foreach (feat ${ARGN} )
286+ set (GGML_INTERNAL_${feat} ON )
287+ endforeach ()
288+ endif ()
283289
284290 ggml_add_cpu_backend_variant_impl(${tag_name} )
285291endfunction ()
@@ -302,6 +308,21 @@ if (GGML_CPU_ALL_VARIANTS)
302308 # MSVC doesn't support AMX
303309 ggml_add_cpu_backend_variant(sapphirerapids SSE42 AVX F16C AVX2 BMI2 FMA AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16 AMX_TILE AMX_INT8)
304310 endif ()
311+ elseif (GGML_SYSTEM_ARCH STREQUAL "ARM" )
312+ if (GGML_CPU_ARM_ARCH)
313+ message (FATAL_ERROR "Cannot use both GGML_CPU_ARM_ARCH and GGML_CPU_ALL_VARIANTS" )
314+ endif ()
315+ # Many of these features are optional so we build versions with popular
316+ # combinations and name the backends based on the version they were
317+ # first released with
318+ ggml_add_cpu_backend_variant(armv8.0_1)
319+ ggml_add_cpu_backend_variant(armv8.2_1 DOTPROD)
320+ ggml_add_cpu_backend_variant(armv8.2_2 DOTPROD FP16_VECTOR_ARITHMETIC)
321+ ggml_add_cpu_backend_variant(armv8.2_3 DOTPROD FP16_VECTOR_ARITHMETIC SVE)
322+ ggml_add_cpu_backend_variant(armv8.6_1 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8)
323+ ggml_add_cpu_backend_variant(armv8.6_2 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SVE2)
324+ ggml_add_cpu_backend_variant(armv9.2_1 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SME)
325+ ggml_add_cpu_backend_variant(armv9.2_2 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SVE2 SME)
305326 else ()
306327 message (FATAL_ERROR "GGML_CPU_ALL_VARIANTS not yet supported on ${GGML_SYSTEM_ARCH} " )
307328 endif ()
0 commit comments