From 5d23e6dab67473f34d5814ba2c9967d19ae11dbd Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Wed, 1 Dec 2021 21:45:31 +0000 Subject: [PATCH] set -msse4.2 only on Intel --- CMakeLists.txt | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 90395329..d61b4a4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,21 +182,30 @@ if (CMAKE_COMPILER_IS_GNUCC AND NOT CROSS_COMPILE) endif() message(STATUS "gcc will tune for ${GNUCC_ARCH}") elseif (CMAKE_COMPILER_IS_CLANG AND NOT CROSS_COMPILE) - set(GNUCC_ARCH native) - set(TUNE_FLAG generic) message(STATUS "clang will tune for ${TUNE_FLAG}") - if (BUILD_AVX512) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SKYLAKE_FLAG}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SKYLAKE_FLAG}") - elseif (BUILD_AVX2) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx2") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2") + if (ARCH_IA32 OR ARCH_X86_64) + set(GNUCC_ARCH native) + set(TUNE_FLAG generic) + if (BUILD_AVX512) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SKYLAKE_FLAG}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SKYLAKE_FLAG}") + elseif (BUILD_AVX2) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mavx2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx2") + else() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2") + endif() + elseif(ARCH_AARCH64) + set(GNUCC_ARCH armv8) + set(TUNE_FLAG generic) + elseif(ARCH_ARM32) + set(GNUCC_ARCH armv7a) + set(TUNE_FLAG generic) else() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2") + set(GNUCC_ARCH native) + set(TUNE_FLAG generic) endif() - message(STATUS "${CMAKE_C_FLAGS}") - message(STATUS "${CMAKE_CXX_FLAGS}") elseif (CROSS_COMPILE) set(GNUCC_ARCH generic) set(TUNE_FLAG generic) @@ -214,10 +223,9 @@ endif(ARCH_AARCH64) if (ARCH_IA32 OR ARCH_X86_64 OR ARCH_ARM32 OR ARCH_AARCH64) if (NOT CMAKE_C_FLAGS MATCHES .*march.* AND NOT CMAKE_C_FLAGS MATCHES .*mtune.*) - set(ARCH_C_FLAGS "-march=${GNUCC_ARCH} -mtune=${TUNE_FLAG}") + set(ARCH_C_FLAGS "-march=${GNUCC_ARCH} -mtune=${TUNE_FLAG}") endif() - - if (NOT CMAKE_CXX_FLAGS MATCHES .*march.* AND NOT CMAKE_CXX_FLAGS MATCHES .*mtune.*) + if (NOT CMAKE_CXX_FLAGS MATCHES .*march.* AND NOT CMAKE_CXX_FLAGS MATCHES .*mtune.*) set(ARCH_CXX_FLAGS "-march=${GNUCC_ARCH} -mtune=${TUNE_FLAG}") endif() endif()