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()
 
 
 #