diff options
author | Gael Guennebaud <g.gael@free.fr> | 2019-01-16 22:26:38 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2019-01-16 22:26:38 +0100 |
commit | 0f028f61cb4d7731512fff861d8228945c5d965c (patch) | |
tree | 94d3673f8a57666e07f0b0756db0c0b2cfd46f1c /Eigen/src/Core/products | |
parent | e118ce86fdbb83fdce8f64baaabb1ed93dd8f070 (diff) |
GEBP: fix swapped kernel mode with AVX512 and complex scalars
Diffstat (limited to 'Eigen/src/Core/products')
-rw-r--r-- | Eigen/src/Core/products/GeneralBlockPanelKernel.h | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h index fdc050e05..c5d77763a 100644 --- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h +++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h @@ -600,8 +600,8 @@ public: dest = ploadu<LhsPacketType>(a); } - template <typename LhsPacketType, typename AccPacketType, typename LaneIdType> - EIGEN_STRONG_INLINE void madd(const LhsPacketType& a, const RhsPacket& b, AccPacketType& c, RhsPacket& tmp, const LaneIdType&) const + template <typename LhsPacketType, typename RhsPacketType, typename AccPacketType, typename LaneIdType> + EIGEN_STRONG_INLINE void madd(const LhsPacketType& a, const RhsPacketType& b, AccPacketType& c, RhsPacketType& tmp, const LaneIdType&) const { madd_impl(a, b, c, tmp, typename conditional<Vectorizable,true_type,false_type>::type()); } @@ -820,8 +820,10 @@ public: dest = ploadu<LhsPacketType>((const typename unpacket_traits<LhsPacketType>::type*)(a)); } - template<typename LhsPacketType, typename ResPacketType, typename TmpType, typename LaneIdType> - EIGEN_STRONG_INLINE void madd(const LhsPacketType& a, const RhsPacket& b, DoublePacket<ResPacketType>& c, TmpType& /*tmp*/, const LaneIdType&) const + template<typename LhsPacketType, typename RhsPacketType, typename ResPacketType, typename TmpType, typename LaneIdType> + EIGEN_STRONG_INLINE + typename enable_if<!is_same<RhsPacketType,RhsPacketx4>::value>::type + madd(const LhsPacketType& a, const RhsPacketType& b, DoublePacket<ResPacketType>& c, TmpType& /*tmp*/, const LaneIdType&) const { c.first = padd(pmul(a,b.first), c.first); c.second = padd(pmul(a,b.second),c.second); @@ -953,8 +955,8 @@ public: dest = ploaddup<LhsPacketType>(a); } - template <typename LhsPacketType, typename AccPacketType, typename LaneIdType> - EIGEN_STRONG_INLINE void madd(const LhsPacketType& a, const RhsPacket& b, AccPacketType& c, RhsPacket& tmp, const LaneIdType&) const + template <typename LhsPacketType, typename RhsPacketType, typename AccPacketType, typename LaneIdType> + EIGEN_STRONG_INLINE void madd(const LhsPacketType& a, const RhsPacketType& b, AccPacketType& c, RhsPacketType& tmp, const LaneIdType&) const { madd_impl(a, b, c, tmp, typename conditional<Vectorizable,true_type,false_type>::type()); } |