From cdd24b71a33622993b65ce208073b3d11faa7910 Mon Sep 17 00:00:00 2001 From: Willy Scheibel <willy.scheibel@hpi.de> Date: Mon, 26 Feb 2018 22:39:16 +0100 Subject: [PATCH 1/2] Use cppintrinsics to determine vectorization capabilities --- source/cppassist/CMakeLists.txt | 8 ++++++++ source/cppassist/include/cppassist/simd/simd.h | 6 +++--- source/examples/simd/CMakeLists.txt | 1 - 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/source/cppassist/CMakeLists.txt b/source/cppassist/CMakeLists.txt index f6bcd40..c1d2163 100644 --- a/source/cppassist/CMakeLists.txt +++ b/source/cppassist/CMakeLists.txt @@ -3,6 +3,10 @@ # External dependencies # + +find_package(cppintrinsics REQUIRED) + + set(ADDITIONAL_LIBRARIES) set(ADDITIONAL_INCLUDES) if(NOT OPTION_BUILD_WITH_STD_REGEX) @@ -224,6 +228,10 @@ target_link_libraries(${target} ${DEFAULT_LIBRARIES} INTERFACE + cppintrinsics::SSE + cppintrinsics::AVX + cppintrinsics::AVX2 + cppintrinsics::AVX512 ) diff --git a/source/cppassist/include/cppassist/simd/simd.h b/source/cppassist/include/cppassist/simd/simd.h index 1fcef62..98e762d 100644 --- a/source/cppassist/include/cppassist/simd/simd.h +++ b/source/cppassist/include/cppassist/simd/simd.h @@ -2,13 +2,13 @@ #pragma once -#ifdef AVX512_ENABLED +#if defined(CPPINTRINSICS_AVX512_ENABLED) #include <zmmintrin.h> #define CPPASSIST_SIMD_SIZE 16 -#elif defined(AVX2_ENABLED) +#elif defined(CPPINTRINSICS_AVX2_ENABLED) #include <immintrin.h> #define CPPASSIST_SIMD_SIZE 8 -#elif defined(SSE_ENABLED) +#elif defined(CPPINTRINSICS_SSE_ENABLED) #include <xmmintrin.h> #define CPPASSIST_SIMD_SIZE 4 #else diff --git a/source/examples/simd/CMakeLists.txt b/source/examples/simd/CMakeLists.txt index f4ee332..60399bd 100644 --- a/source/examples/simd/CMakeLists.txt +++ b/source/examples/simd/CMakeLists.txt @@ -78,7 +78,6 @@ target_link_libraries(${target} target_compile_definitions(${target} PRIVATE ${DEFAULT_COMPILE_DEFINITIONS} - SSE_ENABLED ) From 1a7f98a3ec40be2352a049df35ba3b3b6791eb69 Mon Sep 17 00:00:00 2001 From: Willy Scheibel <willyscheibel@gmx.de> Date: Tue, 27 Feb 2018 14:07:32 +0100 Subject: [PATCH 2/2] Adjust to inverted target existence policy in cppintrinsics --- source/cppassist/CMakeLists.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/cppassist/CMakeLists.txt b/source/cppassist/CMakeLists.txt index c1d2163..a6fb1b0 100644 --- a/source/cppassist/CMakeLists.txt +++ b/source/cppassist/CMakeLists.txt @@ -228,11 +228,17 @@ target_link_libraries(${target} ${DEFAULT_LIBRARIES} INTERFACE - cppintrinsics::SSE +) + +foreach (intrinsic_target + cppintrinsics::SSE cppintrinsics::AVX cppintrinsics::AVX2 - cppintrinsics::AVX512 -) + cppintrinsics::AVX512) + if (TARGET ${intrinsic_target}) + target_link_libraries(${target} INTERFACE ${intrinsic_target}) + endif() +endforeach() #