diff options
author | Gael Guennebaud <g.gael@free.fr> | 2019-01-09 16:40:42 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2019-01-09 16:40:42 +0100 |
commit | 47810cf5b7286b03084b6ec2fb488c2f3eeddbcc (patch) | |
tree | 5e7a0b8fb91c44d7a877fc17ec98de428d63a81b /Eigen/src/Core/arch/AVX512/PacketMath.h | |
parent | 3f14e0d19e44d882b21b7c6b2370a22d2b15c7b9 (diff) |
Add dedicated implementations of predux_any for AVX512, NEON, and Altivec/VSE
Diffstat (limited to 'Eigen/src/Core/arch/AVX512/PacketMath.h')
-rw-r--r-- | Eigen/src/Core/arch/AVX512/PacketMath.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/Eigen/src/Core/arch/AVX512/PacketMath.h b/Eigen/src/Core/arch/AVX512/PacketMath.h index 564eb97dc..95eb9d42f 100644 --- a/Eigen/src/Core/arch/AVX512/PacketMath.h +++ b/Eigen/src/Core/arch/AVX512/PacketMath.h @@ -969,6 +969,13 @@ EIGEN_STRONG_INLINE double predux_max<Packet8d>(const Packet8d& a) { return pfirst(_mm256_max_pd(res, _mm256_shuffle_pd(res, res, 1))); } +template<> EIGEN_STRONG_INLINE bool predux_any(const Packet16f& x) +{ + Packet16i xi = _mm512_castps_si512(x); + __mmask16 tmp = _mm512_test_epi32_mask(xi,xi); + return !_mm512_kortestz(tmp,tmp); +} + template <int Offset> struct palign_impl<Offset, Packet16f> { static EIGEN_STRONG_INLINE void run(Packet16f& first, |