]> git.ipfire.org Git - thirdparty/vectorscan.git/commitdiff
fix cflags detection for x86
authorKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Sun, 8 Oct 2023 21:23:08 +0000 (00:23 +0300)
committerKonstantinos Margaritis <konstantinos@vectorcamp.gr>
Sun, 8 Oct 2023 21:23:08 +0000 (00:23 +0300)
cmake/cflags-x86.cmake

index b35ba5b562c52d5b599c4128ebb480763a46ccde..95485ba76acf0507bd9f0f4b5d0e117501b51fe6 100644 (file)
@@ -1,38 +1,36 @@
 option(BUILD_AVX512 "Enabling support for AVX512" OFF)
 option(BUILD_AVX512VBMI "Enabling support for AVX512VBMI" OFF)
 
+set(SKYLAKE_FLAG "-march=skylake-avx512")
+set(ICELAKE_FLAG "-march=icelake-server")
+
 if (NOT FAT_RUNTIME)
     if (BUILD_AVX512VBMI)
         message (STATUS "AVX512VBMI implies AVX512, enabling BUILD_AVX512")
         set(BUILD_AVX512 ON)
+        set(ARCH_C_FLAGS "${ICELAKE_FLAG}")
+        set(ARCH_CXX_FLAGS "${ICELAKE_FLAG}")
     endif ()
     if (BUILD_AVX512)
         message (STATUS "AVX512 implies AVX2, enabling BUILD_AVX2")
         set(BUILD_AVX2 ON)
+        set(ARCH_C_FLAGS "${SKYLAKE_FLAG}")
+        set(ARCH_CXX_FLAGS "${SKYLAKE_FLAG}")
     endif ()
-endif()
-
-set(SKYLAKE_FLAG "-march=skylake-avx512")
-set(ICELAKE_FLAG "-march=icelake-server")
-
-if (ARCH_IA32 OR ARCH_X86_64)
-    if (NOT FAT_RUNTIME)
-        if (BUILD_AVX512)
-            set(ARCH_C_FLAGS "${SKYLAKE_FLAG}")
-            set(ARCH_CXX_FLAGS "${SKYLAKE_FLAG}")
-        elseif (BUILD_AVX2)
-            set(ARCH_C_FLAGS "-mavx2")
-            set(ARCH_CXX_FLAGS "-mavx2")
-        else()
-            set(ARCH_C_FLAGS "-msse4.2")
-            set(ARCH_CXX_FLAGS "-msse4.2")
-        endif()
+    if (BUILD_AVX2)
+        message (STATUS "Enabling BUILD_AVX2")
+        set(ARCH_C_FLAGS "-mavx2")
+        set(ARCH_CXX_FLAGS "-mavx2")
     else()
-       set(ARCH_C_FLAGS "-msse4.2")
-       set(ARCH_CXX_FLAGS "-msse4.2")
+        set(ARCH_C_FLAGS "-msse4.2")
+        set(ARCH_CXX_FLAGS "-msse4.2")
     endif()
+else()
+    set(ARCH_C_FLAGS "-msse4.2")
+    set(ARCH_CXX_FLAGS "-msse4.2")
 endif()
 
+set(CMAKE_REQUIRED_FLAGS "${ARCH_C_FLAGS}")
 CHECK_INCLUDE_FILES(intrin.h HAVE_C_INTRIN_H)
 CHECK_INCLUDE_FILE_CXX(intrin.h HAVE_CXX_INTRIN_H)
 CHECK_INCLUDE_FILES(x86intrin.h HAVE_C_X86INTRIN_H)
@@ -60,16 +58,15 @@ if (BUILD_AVX512VBMI)
     endif ()
 endif ()
 
-if (ARCH_IA32 OR ARCH_X86_64)
-    # ensure we have the minimum of SSE4.2 - call a SSE4.2 intrinsic
-    CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
+# ensure we have the minimum of SSE4.2 - call a SSE4.2 intrinsic
+CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
 int main() {
     __m128i a = _mm_set1_epi8(1);
     (void)_mm_shuffle_epi8(a, a);
 }" HAVE_SSE42)
 
-    # now look for AVX2
-    CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
+# now look for AVX2
+CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
 #if !defined(__AVX2__)
 #error no avx2
 #endif
@@ -79,8 +76,8 @@ int main(){
     (void)_mm256_xor_si256(z, z);
 }" HAVE_AVX2)
 
-    # and now for AVX512
-    CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
+# and now for AVX512
+CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
 #if !defined(__AVX512BW__)
 #error no avx512bw
 #endif
@@ -90,8 +87,8 @@ int main(){
     (void)_mm512_abs_epi8(z);
 }" HAVE_AVX512)
 
-    # and now for AVX512VBMI
-    CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
+# and now for AVX512VBMI
+CHECK_C_SOURCE_COMPILES("#include <${INTRIN_INC_H}>
 #if !defined(__AVX512VBMI__)
 #error no avx512vbmi
 #endif
@@ -103,29 +100,29 @@ int main(){
 }" HAVE_AVX512VBMI)
 
 if (FAT_RUNTIME)
-    if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSE42)
+    if (NOT HAVE_SSE42)
         message(FATAL_ERROR "SSE4.2 support required to build fat runtime")
     endif ()
-    if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX2 AND NOT HAVE_AVX2)
+    if (BUILD_AVX2 AND NOT HAVE_AVX2)
         message(FATAL_ERROR "AVX2 support required to build fat runtime")
     endif ()
-    if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX512 AND NOT HAVE_AVX512)
+    if (BUILD_AVX512 AND NOT HAVE_AVX512)
         message(FATAL_ERROR "AVX512 support requested but not supported")
     endif ()
-    if ((ARCH_IA32 OR ARCH_X86_64) AND BUILD_AVX512VBMI AND NOT HAVE_AVX512VBMI)
+    if (BUILD_AVX512VBMI AND NOT HAVE_AVX512VBMI)
         message(FATAL_ERROR "AVX512VBMI support requested but not supported")
     endif ()
 else (NOT FAT_RUNTIME)
-    if ((ARCH_IA32 OR ARCH_X86_64) AND NOT BUILD_AVX2)
+    if (NOT BUILD_AVX2)
         message(STATUS "Building without AVX2 support")
     endif ()
-    if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX512)
+    if (NOT HAVE_AVX512)
         message(STATUS "Building without AVX512 support")
     endif ()
-    if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_AVX512VBMI)
+    if (NOT HAVE_AVX512VBMI)
         message(STATUS "Building without AVX512VBMI support")
     endif ()
-    if ((ARCH_IA32 OR ARCH_X86_64) AND NOT HAVE_SSE42)
+    if (NOT HAVE_SSE42)
         message(FATAL_ERROR "A minimum of SSE4.2 compiler support is required")
     endif ()
 endif ()