diff --git a/Eigen/src/Core/arch/clang/Complex.h b/Eigen/src/Core/arch/clang/Complex.h index 2a62f0b85..b109e1ef9 100644 --- a/Eigen/src/Core/arch/clang/Complex.h +++ b/Eigen/src/Core/arch/clang/Complex.h @@ -397,6 +397,9 @@ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void ptranspose(PacketBlock& detail::ptranspose_impl(kernel); } +EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet8cf, Packet16f) +EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet4cd, Packet8d) + } // end namespace internal } // end namespace Eigen diff --git a/Eigen/src/Core/products/GeneralBlockPanelKernel.h b/Eigen/src/Core/products/GeneralBlockPanelKernel.h index c2a4eab29..d962e3fdc 100644 --- a/Eigen/src/Core/products/GeneralBlockPanelKernel.h +++ b/Eigen/src/Core/products/GeneralBlockPanelKernel.h @@ -2582,7 +2582,7 @@ EIGEN_DONT_INLINE void gemm_pack_lhs= depth && offset <= stride)); - eigen_assert(((Pack1 % PacketSize) == 0 && Pack1 <= 4 * PacketSize) || (Pack1 <= 4)); + eigen_assert(((Pack1 % PacketSize) == 0 && Pack1 <= 4 * PacketSize) || (Pack1 <= 4) || (Pack1 < PacketSize)); conj_if::IsComplex && Conjugate> cj; Index count = 0; @@ -2594,7 +2594,8 @@ EIGEN_DONT_INLINE void gemm_pack_lhs= HalfPacketSize ? peeled_mc1 + ((rows - peeled_mc1) / (HalfPacketSize)) * (HalfPacketSize) : 0; const Index peeled_mc_quarter = Pack1 >= QuarterPacketSize ? (rows / (QuarterPacketSize)) * (QuarterPacketSize) : 0; - const Index last_lhs_progress = rows > peeled_mc_quarter ? (rows - peeled_mc_quarter) & ~1 : 0; + const Index last_lhs_progress = + rows > peeled_mc_quarter ? (Pack2 > 1 ? Pack2 : ((rows - peeled_mc_quarter) & ~1)) : 0; const Index peeled_mc0 = Pack2 >= PacketSize ? peeled_mc_quarter : Pack2 > 1 && last_lhs_progress ? (rows / last_lhs_progress) * last_lhs_progress : 0; @@ -2810,7 +2811,7 @@ EIGEN_DONT_INLINE void gemm_pack_lhs