mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-22 21:04:28 +08:00
Fix clang6 failures.
This commit is contained in:
parent
9e962d9c54
commit
dd4c2805d9
@ -1230,13 +1230,13 @@ EIGEN_STRONG_INLINE Packet4ui plogical_shift_left(const Packet4ui& a) {
|
|||||||
|
|
||||||
template <>
|
template <>
|
||||||
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f& a) {
|
EIGEN_STRONG_INLINE Packet4f pabs(const Packet4f& a) {
|
||||||
const Packet4f mask = _mm_castsi128_ps(_mm_setr_epi32(0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF));
|
const __m128i mask = _mm_setr_epi32(0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF);
|
||||||
return _mm_and_ps(a, mask);
|
return _mm_castsi128_ps(_mm_and_si128(mask, _mm_castps_si128(a)));
|
||||||
}
|
}
|
||||||
template <>
|
template <>
|
||||||
EIGEN_STRONG_INLINE Packet2d pabs(const Packet2d& a) {
|
EIGEN_STRONG_INLINE Packet2d pabs(const Packet2d& a) {
|
||||||
const Packet2d mask = _mm_castsi128_pd(_mm_setr_epi32(0xFFFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF));
|
const __m128i mask = _mm_setr_epi32(0xFFFFFFFF, 0x7FFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF);
|
||||||
return _mm_and_pd(a, mask);
|
return _mm_castsi128_pd(_mm_and_si128(mask, _mm_castpd_si128(a)));
|
||||||
}
|
}
|
||||||
template <>
|
template <>
|
||||||
EIGEN_STRONG_INLINE Packet2l pabs(const Packet2l& a) {
|
EIGEN_STRONG_INLINE Packet2l pabs(const Packet2l& a) {
|
||||||
|
@ -73,8 +73,12 @@ struct cross3_impl<Architecture::Target, VectorLhs, VectorRhs, float, true> {
|
|||||||
Packet4f b = rhs_eval.template packet<RhsAlignment, Packet4f>(0);
|
Packet4f b = rhs_eval.template packet<RhsAlignment, Packet4f>(0);
|
||||||
Packet4f mul1 = pmul(vec4f_swizzle1(a, 1, 2, 0, 3), vec4f_swizzle1(b, 2, 0, 1, 3));
|
Packet4f mul1 = pmul(vec4f_swizzle1(a, 1, 2, 0, 3), vec4f_swizzle1(b, 2, 0, 1, 3));
|
||||||
Packet4f mul2 = pmul(vec4f_swizzle1(a, 2, 0, 1, 3), vec4f_swizzle1(b, 1, 2, 0, 3));
|
Packet4f mul2 = pmul(vec4f_swizzle1(a, 2, 0, 1, 3), vec4f_swizzle1(b, 1, 2, 0, 3));
|
||||||
|
a = psub(mul1, mul2);
|
||||||
|
// Zero-out last component in case of inf/nan.
|
||||||
|
const __m128i mask = _mm_setr_epi32(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0);
|
||||||
|
a = _mm_castsi128_ps(_mm_and_si128(mask, _mm_castps_si128(a)));
|
||||||
DstPlainType res;
|
DstPlainType res;
|
||||||
pstoret<float, Packet4f, DstAlignment>(&res.x(), psub(mul1, mul2));
|
pstoret<float, Packet4f, DstAlignment>(res.data(), a);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -188,8 +188,10 @@ void product(const MatrixType& m) {
|
|||||||
VERIFY(areNotApprox(res2, square2 + m2.transpose() * m1, not_approx_epsilon));
|
VERIFY(areNotApprox(res2, square2 + m2.transpose() * m1, not_approx_epsilon));
|
||||||
}
|
}
|
||||||
|
|
||||||
VERIFY_IS_APPROX(res.col(r).noalias() = square.adjoint() * square.col(r), (square.adjoint() * square.col(r)).eval());
|
res.col(r).noalias() = square.adjoint() * square.col(r);
|
||||||
VERIFY_IS_APPROX(res.col(r).noalias() = square * square.col(r), (square * square.col(r)).eval());
|
VERIFY_IS_APPROX(res.col(r), (square.adjoint() * square.col(r)).eval());
|
||||||
|
res.col(r).noalias() = square * square.col(r);
|
||||||
|
VERIFY_IS_APPROX(res.col(r), (square * square.col(r)).eval());
|
||||||
|
|
||||||
// vector at runtime (see bug 1166)
|
// vector at runtime (see bug 1166)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user