diff options
author | Konstantinos Margaritis <markos@freevec.org> | 2017-10-10 13:38:32 -0400 |
---|---|---|
committer | Konstantinos Margaritis <markos@freevec.org> | 2017-10-10 13:38:32 -0400 |
commit | c2a224648919acb27bc208dcc24797345e3a1353 (patch) | |
tree | b38192f58e3880a2a55a8631d4fc8978aef52922 /Eigen | |
parent | 374f750ad4708408a1255a98964719fd598b0659 (diff) |
fix predux_mul for z14/float
Diffstat (limited to 'Eigen')
-rwxr-xr-x | Eigen/src/Core/arch/ZVector/PacketMath.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Eigen/src/Core/arch/ZVector/PacketMath.h b/Eigen/src/Core/arch/ZVector/PacketMath.h index a3294d318..21612ba91 100755 --- a/Eigen/src/Core/arch/ZVector/PacketMath.h +++ b/Eigen/src/Core/arch/ZVector/PacketMath.h @@ -1115,7 +1115,9 @@ template<> EIGEN_STRONG_INLINE Packet4f preduxp<Packet4f>(const Packet4f* vecs) // mul template<> EIGEN_STRONG_INLINE float predux_mul<Packet4f>(const Packet4f& a) { - return pfirst(pmul(a, reinterpret_cast<Packet4f>(vec_sld(reinterpret_cast<Packet4f>(a), reinterpret_cast<Packet4f>(a), 8)))); + Packet4f prod; + prod = pmul(a, vec_sld(a, a, 8)); + return pfirst(pmul(prod, vec_sld(prod, prod, 4))); } // min |