@@ -269,17 +269,23 @@ endfunction()
269
269
function (ggml_add_cpu_backend_variant tag_name )
270
270
set (GGML_CPU_TAG_NAME ${tag_name} )
271
271
# 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 ()
283
289
284
290
ggml_add_cpu_backend_variant_impl (${tag_name} )
285
291
endfunction ()
@@ -302,6 +308,21 @@ if (GGML_CPU_ALL_VARIANTS)
302
308
# MSVC doesn't support AMX
303
309
ggml_add_cpu_backend_variant (sapphirerapids SSE42 AVX F16C AVX2 BMI2 FMA AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16 AMX_TILE AMX_INT8 )
304
310
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 )
305
326
else ()
306
327
message (FATAL_ERROR "GGML_CPU_ALL_VARIANTS not yet supported on ${GGML_SYSTEM_ARCH} " )
307
328
endif ()
0 commit comments