From 74637fa4e39afc0c6784588e9545b454bb5ea407 Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 22 Nov 2016 21:57:52 +0100 Subject: Optimize predux (AVX) --- Eigen/src/Core/arch/AVX/PacketMath.h | 4 +--- 1 file changed, 1 insertion(+), 3 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 190e9a42b..58b5dc5ba 100644 --- a/Eigen/src/Core/arch/AVX/PacketMath.h +++ b/Eigen/src/Core/arch/AVX/PacketMath.h @@ -395,9 +395,7 @@ template<> EIGEN_STRONG_INLINE Packet4d preduxp(const Packet4d* vecs) template<> EIGEN_STRONG_INLINE float predux(const Packet8f& a) { - Packet8f tmp0 = _mm256_hadd_ps(a,_mm256_permute2f128_ps(a,a,1)); - tmp0 = _mm256_hadd_ps(tmp0,tmp0); - return pfirst(_mm256_hadd_ps(tmp0, tmp0)); + return predux(_mm_add_ps(_mm256_castps256_ps128(a),_mm256_extractf128_ps(a,1))); } template<> EIGEN_STRONG_INLINE double predux(const Packet4d& a) { -- cgit v1.2.3