From 162330f25aeec09694fffaaa31ba9b318620eb9c Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Wed, 29 Apr 2020 21:28:15 +0200 Subject: build: rework x86 CPU variants Type: improvement Change-Id: Ief243f88e654e578ef9b8060fcf535b364aececb Signed-off-by: Damjan Marion --- src/cmake/cpu.cmake | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/cmake') diff --git a/src/cmake/cpu.cmake b/src/cmake/cpu.cmake index 0ce8bea31ec..0e47f3325cf 100644 --- a/src/cmake/cpu.cmake +++ b/src/cmake/cpu.cmake @@ -76,17 +76,21 @@ endif() ############################################################################## if(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") set(CMAKE_C_FLAGS "-march=corei7 -mtune=corei7-avx ${CMAKE_C_FLAGS}") - check_c_compiler_flag("-march=core-avx2" compiler_flag_march_core_avx2) - if(compiler_flag_march_core_avx2) - list(APPEND MARCH_VARIANTS "avx2\;-march=core-avx2 -mtune=core-avx2") + check_c_compiler_flag("-march=haswell" compiler_flag_march_haswell) + if(compiler_flag_march_haswell) + list(APPEND MARCH_VARIANTS "hsw\;-march=haswell -mtune=haswell") endif() if (GNU_ASSEMBLER_AVX512_BUG) message(WARNING "AVX-512 multiarch variant(s) disabled due to GNU Assembler bug") else() + check_c_compiler_flag("-mprefer-vector-width=256" compiler_flag_mprefer_vector_width) check_c_compiler_flag("-march=skylake-avx512" compiler_flag_march_skylake_avx512) check_c_compiler_flag("-march=icelake-client" compiler_flag_march_icelake_client) - if(compiler_flag_march_skylake_avx512) - list(APPEND MARCH_VARIANTS "avx512\;-march=skylake-avx512 -mtune=skylake-avx512") + if(compiler_flag_march_skylake_avx512 AND compiler_flag_mprefer_vector_width) + list(APPEND MARCH_VARIANTS "skx\;-march=skylake-avx512 -mtune=skylake-avx512 -mprefer-vector-width=256") + endif() + if(compiler_flag_march_icelake_client AND compiler_flag_mprefer_vector_width) + list(APPEND MARCH_VARIANTS "icl\;-march=icelake-client -mtune=icelake-client -mprefer-vector-width=512") endif() endif() elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") -- cgit 1.2.3-korg