Lines 97-105
Link Here
|
97 |
t2 = psub(pmul(a_zz, b_xy), pmul(a_xx, b_zw)); |
97 |
t2 = psub(pmul(a_zz, b_xy), pmul(a_xx, b_zw)); |
98 |
#ifdef EIGEN_VECTORIZE_SSE3 |
98 |
#ifdef EIGEN_VECTORIZE_SSE3 |
99 |
EIGEN_UNUSED_VARIABLE(mask) |
99 |
EIGEN_UNUSED_VARIABLE(mask) |
100 |
pstore(&res.x(), _mm_addsub_pd(t1, preverse(t2))); |
100 |
pstoret<double,Packet2d,Alignment>(&res.x(), _mm_addsub_pd(t1, preverse(t2))); |
101 |
#else |
101 |
#else |
102 |
pstore(&res.x(), padd(t1, pxor(mask,preverse(t2)))); |
102 |
pstoret<double,Packet2d,Alignment>(&res.x(), padd(t1, pxor(mask,preverse(t2)))); |
103 |
#endif |
103 |
#endif |
104 |
|
104 |
|
105 |
/* |
105 |
/* |
Lines 111-119
Link Here
|
111 |
t2 = padd(pmul(a_zz, b_zw), pmul(a_xx, b_xy)); |
111 |
t2 = padd(pmul(a_zz, b_zw), pmul(a_xx, b_xy)); |
112 |
#ifdef EIGEN_VECTORIZE_SSE3 |
112 |
#ifdef EIGEN_VECTORIZE_SSE3 |
113 |
EIGEN_UNUSED_VARIABLE(mask) |
113 |
EIGEN_UNUSED_VARIABLE(mask) |
114 |
pstore(&res.z(), preverse(_mm_addsub_pd(preverse(t1), t2))); |
114 |
pstoret<double,Packet2d,Alignment>(&res.z(), preverse(_mm_addsub_pd(preverse(t1), t2))); |
115 |
#else |
115 |
#else |
116 |
pstore(&res.z(), psub(t1, pxor(mask,preverse(t2)))); |
116 |
pstoret<double,Packet2d,Alignment>(&res.z(), psub(t1, pxor(mask,preverse(t2)))); |
117 |
#endif |
117 |
#endif |
118 |
|
118 |
|
119 |
return res; |
119 |
return res; |
Lines 128-135
Link Here
|
128 |
Quaternion<double> res; |
128 |
Quaternion<double> res; |
129 |
const __m128d mask0 = _mm_setr_pd(-0.,-0.); |
129 |
const __m128d mask0 = _mm_setr_pd(-0.,-0.); |
130 |
const __m128d mask2 = _mm_setr_pd(-0.,0.); |
130 |
const __m128d mask2 = _mm_setr_pd(-0.,0.); |
131 |
pstore(&res.x(), _mm_xor_pd(mask0, q.coeffs().template packet<Alignment>(0))); |
131 |
pstoret<double,Packet2d,Alignment>(&res.x(), _mm_xor_pd(mask0, q.coeffs().template packet<Alignment>(0))); |
132 |
pstore(&res.z(), _mm_xor_pd(mask2, q.coeffs().template packet<Alignment>(2))); |
132 |
pstoret<double,Packet2d,Alignment>(&res.z(), _mm_xor_pd(mask2, q.coeffs().template packet<Alignment>(2))); |
133 |
return res; |
133 |
return res; |
134 |
} |
134 |
} |
135 |
}; |
135 |
}; |