10 #ifndef EIGEN_TYPE_CASTING_SSE_H
11 #define EIGEN_TYPE_CASTING_SSE_H
17 #ifndef EIGEN_VECTORIZE_AVX
19 struct type_casting_traits<float, int> {
28 struct type_casting_traits<int, float> {
37 struct type_casting_traits<double, float> {
46 struct type_casting_traits<float, double> {
55 template<> EIGEN_STRONG_INLINE Packet4i pcast<Packet4f, Packet4i>(
const Packet4f& a) {
56 return _mm_cvttps_epi32(a);
59 template<> EIGEN_STRONG_INLINE Packet4f pcast<Packet4i, Packet4f>(
const Packet4i& a) {
60 return _mm_cvtepi32_ps(a);
63 template<> EIGEN_STRONG_INLINE Packet4f pcast<Packet2d, Packet4f>(
const Packet2d& a,
const Packet2d& b) {
64 return _mm_shuffle_ps(_mm_cvtpd_ps(a), _mm_cvtpd_ps(b), (1 << 2) | (1 << 6));
67 template<> EIGEN_STRONG_INLINE Packet2d pcast<Packet4f, Packet2d>(
const Packet4f& a) {
69 return _mm_cvtps_pd(a);
Namespace containing all symbols from the Eigen library.
Definition: Core:309