From 7dd894e40e439a6d1f4aed659d1375d65589cff3 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 22 Nov 2016 21:41:30 +0100 Subject: Optimize predux (AVX) --- Eigen/src/Core/arch/AVX/PacketMath.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'Eigen/src/Core/arch/AVX') diff --git a/Eigen/src/Core/arch/AVX/PacketMath.h b/Eigen/src/Core/arch/AVX/PacketMath.h index e60ef307b..190e9a42b 100644 --- a/Eigen/src/Core/arch/AVX/PacketMath.h +++ b/Eigen/src/Core/arch/AVX/PacketMath.h @@ -401,8 +401,7 @@ template<> EIGEN_STRONG_INLINE float predux(const Packet8f& a) } template<> EIGEN_STRONG_INLINE double predux(const Packet4d& a) { - Packet4d tmp0 = _mm256_hadd_pd(a,_mm256_permute2f128_pd(a,a,1)); - return pfirst(_mm256_hadd_pd(tmp0,tmp0)); + return predux(_mm_add_pd(_mm256_castpd256_pd128(a),_mm256_extractf128_pd(a,1))); } template<> EIGEN_STRONG_INLINE Packet4f predux_downto4(const Packet8f& a) -- cgit v1.2.3