This bugzilla service is closed. All entries have been migrated to https://gitlab.com/libeigen/eigen
View | Details | Raw Unified | Return to bug 1411
Collapse All | Expand All

(-)a/Eigen/src/Geometry/arch/Geometry_SSE.h (-6 / +6 lines)
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
};

Return to bug 1411