aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/Core
diff options
context:
space:
mode:
authorGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2016-11-04 18:22:55 -0700
committerGravatar Benoit Steiner <benoit.steiner.goog@gmail.com>2016-11-04 18:22:55 -0700
commitd46a36cc845f7c6a642157f244c7009d6aa0b8e6 (patch)
treeff62d1ddea1986cd95de538021137b92538d9dff /Eigen/Core
parent0ebe3808ca8b2c96d9d77024ba8d4d0bdfb7e23c (diff)
parent47d1b4a6092b8908390e0cc385cf1f7883d724c4 (diff)
Merged eigen/eigen into default
Diffstat (limited to 'Eigen/Core')
-rw-r--r--Eigen/Core22
1 files changed, 19 insertions, 3 deletions
diff --git a/Eigen/Core b/Eigen/Core
index 8ce3d4d06..82558155e 100644
--- a/Eigen/Core
+++ b/Eigen/Core
@@ -147,6 +147,15 @@
#ifdef __FMA__
#define EIGEN_VECTORIZE_FMA
#endif
+ #if defined(__AVX512F__) && defined(EIGEN_ENABLE_AVX512)
+ #define EIGEN_VECTORIZE_AVX512
+ #define EIGEN_VECTORIZE_AVX2
+ #define EIGEN_VECTORIZE_AVX
+ #define EIGEN_VECTORIZE_FMA
+ #ifdef __AVX512DQ__
+ #define EIGEN_VECTORIZE_AVX512DQ
+ #endif
+ #endif
// include files
@@ -178,7 +187,7 @@
#ifdef EIGEN_VECTORIZE_SSE4_2
#include <nmmintrin.h>
#endif
- #ifdef EIGEN_VECTORIZE_AVX
+ #if defined(EIGEN_VECTORIZE_AVX) || defined(EIGEN_VECTORIZE_AVX512)
#include <immintrin.h>
#endif
#endif
@@ -278,7 +287,9 @@
namespace Eigen {
inline static const char *SimdInstructionSetsInUse(void) {
-#if defined(EIGEN_VECTORIZE_AVX)
+#if defined(EIGEN_VECTORIZE_AVX512)
+ return "AVX512, FMA, AVX2, AVX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
+#elif defined(EIGEN_VECTORIZE_AVX)
return "AVX SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
#elif defined(EIGEN_VECTORIZE_SSE4_2)
return "SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2";
@@ -338,7 +349,12 @@ using std::ptrdiff_t;
#include "src/Core/GenericPacketMath.h"
#include "src/Core/MathFunctionsImpl.h"
-#if defined EIGEN_VECTORIZE_AVX
+#if defined EIGEN_VECTORIZE_AVX512
+ #include "src/Core/arch/SSE/PacketMath.h"
+ #include "src/Core/arch/AVX/PacketMath.h"
+ #include "src/Core/arch/AVX512/PacketMath.h"
+ #include "src/Core/arch/AVX512/MathFunctions.h"
+#elif defined EIGEN_VECTORIZE_AVX
// Use AVX for floats and doubles, SSE for integers
#include "src/Core/arch/SSE/PacketMath.h"
#include "src/Core/arch/SSE/Complex.h"