Mercurial > vec
diff CMakeLists.txt @ 28:c6c99ab1088a
*: add min/max functions and a big big refactor (again)
agh, this time I added a few more implementations (and generally
made the code just a little faster...)
author | Paper <paper@tflc.us> |
---|---|
date | Thu, 24 Apr 2025 00:54:02 -0400 |
parents | d00b95f95dd1 |
children | e59c91d050c0 |
line wrap: on
line diff
--- a/CMakeLists.txt Mon Nov 25 00:33:02 2024 -0500 +++ b/CMakeLists.txt Thu Apr 24 00:54:02 2025 -0400 @@ -2,7 +2,13 @@ project(vec VERSION 3.0.0 DESCRIPTION "a tiny C99 SIMD vector library" LANGUAGES C) -add_library(vec SHARED "src/vec.c;src/cpu.c;src/impl/generic.c;src/impl/fallback.c") +add_library(vec "src/vec.c") + +target_sources(vec PRIVATE + "src/cpu.c" + "src/impl/generic.c" + # "src/impl/fallback.c" -- deadcode +) include(CheckCCompilerFlag) @@ -49,10 +55,18 @@ if(COMPILER_HAS_SSE2) set(COMPILER_SSE2_FLAGS "-msse2") endif() + check_c_compiler_flag("-msse3" COMPILER_HAS_SSE3) + if(COMPILER_HAS_SSE3) + set(COMPILER_SSE3_FLAGS "-msse3") + endif() check_c_compiler_flag("-msse4.1" COMPILER_HAS_SSE41) if(COMPILER_HAS_SSE41) set(COMPILER_SSE41_FLAGS "-msse4.1") endif() + check_c_compiler_flag("-msse4.2" COMPILER_HAS_SSE42) + if(COMPILER_HAS_SSE42) + set(COMPILER_SSE42_FLAGS "-msse4.2") + endif() check_c_compiler_flag("-mavx2" COMPILER_HAS_AVX2) if(COMPILER_HAS_AVX2) set(COMPILER_AVX2_FLAGS "-mavx2") @@ -61,6 +75,14 @@ if(COMPILER_HAS_AVX512F) set(COMPILER_AVX512F_FLAGS "-mavx512f") endif() + check_c_compiler_flag("-mavx512bw" COMPILER_HAS_AVX512BW) + if(COMPILER_HAS_AVX512BW) + set(COMPILER_AVX512BW_FLAGS "-mavx512bw") + endif() + check_c_compiler_flag("-mavx512dq" COMPILER_HAS_AVX512DQ) + if(COMPILER_HAS_AVX512DQ) + set(COMPILER_AVX512DQ_FLAGS "-mavx512dq") + endif() endif() if(COMPILER_HAS_ALTIVEC) @@ -87,12 +109,24 @@ target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE2") endif() +if(COMPILER_HAS_SSE3) + target_sources(vec PRIVATE "src/impl/x86/sse3.c") + set_source_files_properties("src/impl/x86/sse3.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE3_FLAGS}") + target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE3") +endif() + if(COMPILER_HAS_SSE41) target_sources(vec PRIVATE "src/impl/x86/sse41.c") set_source_files_properties("src/impl/x86/sse41.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE41_FLAGS}") target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE41") endif() +if(COMPILER_HAS_SSE42) + target_sources(vec PRIVATE "src/impl/x86/sse42.c") + set_source_files_properties("src/impl/x86/sse42.c" PROPERTIES COMPILE_FLAGS "${COMPILER_SSE42_FLAGS}") + target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_SSE42") +endif() + if(COMPILER_HAS_AVX2) target_sources(vec PRIVATE "src/impl/x86/avx2.c") set_source_files_properties("src/impl/x86/avx2.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX2_FLAGS}") @@ -105,6 +139,17 @@ target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX512F") endif() +if(COMPILER_HAS_AVX512BW) + target_sources(vec PRIVATE "src/impl/x86/avx512bw.c") + set_source_files_properties("src/impl/x86/avx512bw.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX512BW_FLAGS}") + target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX512BW") +endif() + +if(COMPILER_HAS_AVX512DQ) + target_sources(vec PRIVATE "src/impl/x86/avx512dq.c") + set_source_files_properties("src/impl/x86/avx512dq.c" PROPERTIES COMPILE_FLAGS "${COMPILER_AVX512DQ_FLAGS}") + target_compile_definitions(vec PRIVATE "-DVEC_COMPILER_HAS_AVX512DQ") +endif() ######################################################################### # integer types; it's nice to accommodate for older broken systems that