--- CMakeLists.txt 2026-10-05 19:56:51.000000000 +0530 +++ CMakeListsb.txt 2026-10-16 18:29:47.976155598 +0530 @@ -8,6 +8,51 @@ set(GGML_VERSION_PATCH 0) set(GGML_VERSION_BASE "${GGML_VERSION_MAJOR}.${GGML_VERSION_MINOR}.${GGML_VERSION_PATCH}") +# check cpu + +if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i586" OR + "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i686" OR + "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86") +message(STATUS "System Architecture is x86 \n") +elseif("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR + "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") +message(STATUS "System Architecture is x86_64 \n") +else() +message(FATAL_ERROR "This Program will not run on this platform, aborting... \n") +endif() + +include(CheckCCompilerFlag) + +check_c_compiler_flag("-msse4.2" GGML_COMPILER_SUPPORTS_SSE4.2) +check_c_compiler_flag("-mavx" GGML_COMPILER_SUPPORTS_AVX) +check_c_compiler_flag("-mavx2" GGML_COMPILER_SUPPORTS_AVX2) +check_c_compiler_flag("-mavx-vnni" GGML_COMPILER_SUPPORTS_AVX_VNNI) +check_c_compiler_flag("-mbmi2" GGML_COMPILER_SUPPORTS_BMI2) +check_c_compiler_flag("-mavx512f" GGML_COMPILER_SUPPORTS_AVX512) +check_c_compiler_flag("-mavx512vbmi" GGML_COMPILER_SUPPORTS_AVX512_VBMI) +check_c_compiler_flag("-mavx512vnni" GGML_COMPILER_SUPPORTS_AVX512_VNNI) +check_c_compiler_flag("-mavx512bf16" GGML_COMPILER_SUPPORTS_AVX512_BF16) +check_c_compiler_flag("-mfma" GGML_COMPILER_SUPPORTS_FMA) +check_c_compiler_flag("-mf16c" GGML_COMPILER_SUPPORTS_F16C) +check_c_compiler_flag("-mamx-tile" GGML_COMPILER_SUPPORTS_AMX_TILE) +check_c_compiler_flag("-mamx-int8" GGML_COMPILER_SUPPORTS_AMX_INT8) +check_c_compiler_flag("-mamx-bf16" GGML_COMPILER_SUPPORTS_AMX_BF16) + +set(GGML_SSE4.2_DEFAULT OFF) +set(GGML_AVX_DEFAULT OFF) +set(GGML_AVX2_DEFAULT OFF) +set(GGML_AVX_VNNI_DEFAULT OFF) +set(GGML_BMI2_DEFAULT OFF) +set(GGML_AVX512_DEFAULT OFF) +set(GGML_AVX512_VBMI DEFAULT OFF) +set(GGML_AVX512_VNNI DEFAULT OFF) +set(GGML_AVX512_BF16 DEFAULT OFF) +set(GGML_FMA_DEFAULT OFF) +set(GGML_F16C_DEFAULT OFF) +set(GGML_AMX_TILE_DEFAULT OFF) +set(GGML_AMX_INT8_DEFAULT OFF) +set(GGML_AMX_BF16_DEFAULT OFF) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") find_program(GIT_EXE NAMES git git.exe NO_CMAKE_FIND_ROOT_PATH) @@ -151,34 +196,79 @@ option(GGML_CPU_HBM "ggml: use memkind for CPU HBM" OFF) option(GGML_CPU_REPACK "ggml: use runtime weight conversion of Q4_0 to Q4_X_X" ON) option(GGML_CPU_KLEIDIAI "ggml: use KleidiAI optimized kernels if applicable" OFF) -option(GGML_SSE42 "ggml: enable SSE 4.2" ${INS_ENB}) -option(GGML_AVX "ggml: enable AVX" ${INS_ENB}) -option(GGML_AVX_VNNI "ggml: enable AVX-VNNI" OFF) -option(GGML_AVX2 "ggml: enable AVX2" ${INS_ENB}) -option(GGML_BMI2 "ggml: enable BMI2" ${INS_ENB}) -option(GGML_AVX512 "ggml: enable AVX512F" OFF) -option(GGML_AVX512_VBMI "ggml: enable AVX512-VBMI" OFF) -option(GGML_AVX512_VNNI "ggml: enable AVX512-VNNI" OFF) -option(GGML_AVX512_BF16 "ggml: enable AVX512-BF16" OFF) -if (NOT MSVC) - # in MSVC F16C and FMA is implied with AVX2/AVX512 - option(GGML_FMA "ggml: enable FMA" ${INS_ENB}) - option(GGML_F16C "ggml: enable F16C" ${INS_ENB}) - # MSVC does not seem to support AMX - option(GGML_AMX_TILE "ggml: enable AMX-TILE" OFF) - option(GGML_AMX_INT8 "ggml: enable AMX-INT8" OFF) - option(GGML_AMX_BF16 "ggml: enable AMX-BF16" OFF) -endif() -option(GGML_LASX "ggml: enable lasx" ON) -option(GGML_LSX "ggml: enable lsx" ON) -option(GGML_RVV "ggml: enable rvv" ON) -option(GGML_RV_ZFH "ggml: enable riscv zfh" ON) -option(GGML_RV_ZVFH "ggml: enable riscv zvfh" ON) -option(GGML_RV_ZICBOP "ggml: enable riscv zicbop" ON) -option(GGML_RV_ZIHINTPAUSE "ggml: enable riscv zihintpause" ON) + +if(GGML_COMPILER_SUPPORTS_SSE4.2) +set(GGML_SSE4.2_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_AVX) +set(GGML_AVX_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_AVX2) +set(GGML_AVX2_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_AVX_VNNI) +set(GGML_AVX_VNNI_DEFAULT ON) +endif() +if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND GGML_COMPILER_SUPPORTS_BMI2) +set(GGML_BMI2_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_AVX512) +set(GGML_AVX512_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_AVX512_VBMI) +set(GGML_AVX512_VBMI_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_AVX512_VNNI) +set(GGML_AVX512_VNNI_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_AVX512_BF16) +set(GGML_BF16_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_FMA) +set(GGML_FMA_DEFAULT ON) +endif() +if(GGML_COMPILER_SUPPORTS_F16C) +set(GGML_F16C_DEFAULT ON) +endif() +if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND GGML_COMPILER_SUPPORTS_AMX_TILE) +set(GGML_AMX_TILE_DEFAULT ON) +endif() +if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND GGML_COMPILER_SUPPORTS_AMX_INT8) +set(GGML_AMX_INT8_DEFAULT ON) +endif() +if(CMAKE_SIZEOF_VOID_P EQUAL 8 AND GGML_COMPILER_SUPPORTS_AMX_BF16) +set(GGML_AMX_BF16_DEFAULT ON) +endif() + +# x86 architecture options + +option(GGML_SSE42 "ggml: enable SSE 4.2" ${GGML_SSE4.2_DEFAULT}) +option(GGML_AVX "ggml: enable AVX" ${GGML_AVX_DEFAULT}) +option(GGML_AVX_VNNI "ggml: enable AVX-VNNI" ${GGML_AVX_VNNI_DEFAULT}) +option(GGML_AVX2 "ggml: enable AVX2" ${GGML_AVX2_DEFAULT}) +option(GGML_BMI2 "ggml: enable BMI2" ${GGML_BMI2_DEFAULT}) +option(GGML_AVX512 "ggml: enable AVX512F" ${GGML_AVX512_DEFAULT}) +option(GGML_AVX512_VBMI "ggml: enable AVX512-VBMI" ${GGML_AVX512_VBMI_DEFAULT}) +option(GGML_AVX512_VNNI "ggml: enable AVX512-VNNI" ${GGML_AVX512_VNNI_DEFAULT}) +option(GGML_AVX512_BF16 "ggml: enable AVX512-BF16" ${GGML_BF16_DEFAULT}) +option(GGML_FMA "ggml: enable FMA" ${GGML_FMA_DEFAULT}) +option(GGML_F16C "ggml: enable F16C" ${GGML_F16C_DEFAULT}) +option(GGML_AMX_TILE "ggml: enable AMX-TILE" ${GGML_AMX_TILE_DEFAULT}) +option(GGML_AMX_INT8 "ggml: enable AMX-INT8" ${GGML_AMX_INT8_DEFAULT}) +option(GGML_AMX_BF16 "ggml: enable AMX-BF16" ${GGML_AMX_BF16_DEFAULT}) + +# Risc-V and loongarch Architecture options + +option(GGML_LASX "ggml: enable lasx" OFF) +option(GGML_LSX "ggml: enable lsx" OFF) +option(GGML_RVV "ggml: enable rvv" OFF) +option(GGML_RV_ZFH "ggml: enable riscv zfh" OFF) +option(GGML_RV_ZVFH "ggml: enable riscv zvfh" OFF) +option(GGML_RV_ZICBOP "ggml: enable riscv zicbop" OFF) +option(GGML_RV_ZIHINTPAUSE "ggml: enable riscv zihintpause" OFF) option(GGML_RV_ZVFBFWMA "ggml: enable riscv zvfbfwma" OFF) option(GGML_XTHEADVECTOR "ggml: enable xtheadvector" OFF) -option(GGML_VXE "ggml: enable vxe" ${GGML_NATIVE}) +option(GGML_VXE "ggml: enable vxe" OFF) option(GGML_CPU_ALL_VARIANTS "ggml: build all variants of the CPU backend (requires GGML_BACKEND_DL)" OFF) set(GGML_CPU_ARM_ARCH "" CACHE STRING "ggml: CPU architecture for ARM")