diff --git a/Eigen/src/Core/arch/SSE/PacketMath.h b/Eigen/src/Core/arch/SSE/PacketMath.h index 64ffdf3e2..97c8ac874 100644 --- a/Eigen/src/Core/arch/SSE/PacketMath.h +++ b/Eigen/src/Core/arch/SSE/PacketMath.h @@ -1641,7 +1641,11 @@ EIGEN_STRONG_INLINE double pfirst(const Packet2d& a) { } template <> EIGEN_STRONG_INLINE int64_t pfirst(const Packet2l& a) { +#if EIGEN_ARCH_x86_64 int64_t x = _mm_cvtsi128_si64(a); +#else + int64_t x = numext::bit_cast(_mm_cvtsd_f64(_mm_castsi128_pd(a))); +#endif return x; } template <>