AVX512 (r)sqrt(double) was mistakenly disabled with clang and others

This commit is contained in:
Gael Guennebaud 2019-01-14 17:28:47 +01:00
parent ccddeaad90
commit 61b6eb05fe
2 changed files with 3 additions and 2 deletions

View File

@ -57,7 +57,7 @@ template<> struct packet_traits<float> : default_packet_traits
HasBlend = 0, HasBlend = 0,
HasSin = EIGEN_FAST_MATH, HasSin = EIGEN_FAST_MATH,
HasCos = EIGEN_FAST_MATH, HasCos = EIGEN_FAST_MATH,
#if EIGEN_GNUC_AT_LEAST(5, 3) || EIGEN_COMP_CLANG #if EIGEN_GNUC_AT_LEAST(5, 3) || (!EIGEN_COMP_GNUC_STRICT)
#ifdef EIGEN_VECTORIZE_AVX512DQ #ifdef EIGEN_VECTORIZE_AVX512DQ
HasLog = 1, HasLog = 1,
#endif #endif
@ -77,7 +77,7 @@ template<> struct packet_traits<double> : default_packet_traits
AlignedOnScalar = 1, AlignedOnScalar = 1,
size = 8, size = 8,
HasHalfPacket = 1, HasHalfPacket = 1,
#if EIGEN_GNUC_AT_LEAST(5, 3) #if EIGEN_GNUC_AT_LEAST(5, 3) || (!EIGEN_COMP_GNUC_STRICT)
HasSqrt = EIGEN_FAST_MATH, HasSqrt = EIGEN_FAST_MATH,
HasRsqrt = EIGEN_FAST_MATH, HasRsqrt = EIGEN_FAST_MATH,
#endif #endif

View File

@ -568,6 +568,7 @@ template<typename Scalar,typename Packet> void packetmath_real()
h.store(data2, internal::plog(h.load(data1))); h.store(data2, internal::plog(h.load(data1)));
VERIFY((numext::isinf)(data2[0])); VERIFY((numext::isinf)(data2[0]));
} }
if(PacketTraits::HasSqrt)
{ {
packet_helper<PacketTraits::HasSqrt,Packet> h; packet_helper<PacketTraits::HasSqrt,Packet> h;
data1[0] = Scalar(-1.0f); data1[0] = Scalar(-1.0f);