diff --git a/CMakeLists.txt b/CMakeLists.txt index 202f26049..5a126a9ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,7 @@ option(LLAMA_AVX512 "llama: enable AVX512" option(LLAMA_AVX512_VBMI "llama: enable AVX512-VBMI" OFF) option(LLAMA_AVX512_VNNI "llama: enable AVX512-VNNI" OFF) option(LLAMA_FMA "llama: enable FMA" ${INS_ENB}) +option(LLAMA_AMX "llama: enable AMX" OFF) # in MSVC F16C is implied with AVX2/AVX512 if (NOT MSVC) option(LLAMA_F16C "llama: enable F16C" ${INS_ENB}) @@ -542,7 +543,7 @@ if ((${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") OR (${CMAKE_SYSTEM_PROCESSOR} MATC elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GENERATOR_PLATFORM_LWR}" MATCHES "^(x86_64|i686|amd64|x64)$" ) message(STATUS "x86 detected") if (MSVC) - if (LLAMA_AVX512) + if (LLAMA_AVX512 OR LLAMA_AMX) add_compile_options($<$:/arch:AVX512>) add_compile_options($<$:/arch:AVX512>) # MSVC has no compile-time flags enabling specific @@ -590,6 +591,13 @@ elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "^(x86_64|i686|AMD64)$" OR "${CMAKE_GE if (LLAMA_AVX512_VNNI) add_compile_options(-mavx512vnni) endif() + if (LLAMA_AMX) + add_compile_options(-mavx512vl) + add_compile_options(-mavx512dq) + add_compile_options(-mamx-tile) + add_compile_options(-mamx-int8) + add_compile_options(-mamx-bf16) + endif() endif() elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64") message(STATUS "PowerPC detected")