aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-11-22 21:57:52 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-11-22 21:57:52 +0100
commit74637fa4e39afc0c6784588e9545b454bb5ea407 (patch)
treecc2f72d895da1b3ccb256ead1e46186594f5172d /Eigen
parent178c084856003f1cfd3020615ab98230d9520a80 (diff)
Optimize predux<Packet8f> (AVX)
Diffstat (limited to 'Eigen')
-rw-r--r--Eigen/src/Core/arch/AVX/PacketMath.h4
1 files changed, 1 insertions, 3 deletions
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<Packet4d>(const Packet4d* vecs)
template<> EIGEN_STRONG_INLINE float predux<Packet8f>(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<Packet4d>(const Packet4d& a)
{