mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-20 11:54:27 +08:00
Explicitly use the packet trait HasPow to control whether Pow is vectorized.
This commit is contained in:
parent
efe5b6979d
commit
97c7cc6200
@ -118,6 +118,7 @@ struct packet_traits<float> : default_packet_traits {
|
||||
HasLog1p = 1,
|
||||
HasExpm1 = 1,
|
||||
HasExp = 1,
|
||||
HasPow = 1,
|
||||
HasNdtri = 1,
|
||||
HasBessel = 1,
|
||||
HasSqrt = 1,
|
||||
@ -149,6 +150,7 @@ struct packet_traits<double> : default_packet_traits {
|
||||
HasErf = 1,
|
||||
HasErfc = 1,
|
||||
HasExp = 1,
|
||||
HasPow = 1,
|
||||
HasSqrt = 1,
|
||||
HasRsqrt = 1,
|
||||
HasCbrt = 1,
|
||||
|
@ -135,6 +135,7 @@ struct packet_traits<float> : default_packet_traits {
|
||||
HasNdtri = 1,
|
||||
HasBessel = 1,
|
||||
HasExp = 1,
|
||||
HasPow = 1,
|
||||
HasReciprocal = EIGEN_FAST_MATH,
|
||||
HasTanh = EIGEN_FAST_MATH,
|
||||
HasErf = EIGEN_FAST_MATH,
|
||||
@ -159,6 +160,7 @@ struct packet_traits<double> : default_packet_traits {
|
||||
HasCos = EIGEN_FAST_MATH,
|
||||
HasLog = 1,
|
||||
HasExp = 1,
|
||||
HasPow = 1,
|
||||
HasATan = 1,
|
||||
HasTanh = EIGEN_FAST_MATH,
|
||||
HasErf = EIGEN_FAST_MATH,
|
||||
|
@ -185,6 +185,8 @@ struct packet_traits<float> : default_packet_traits {
|
||||
HasLog = 1,
|
||||
HasExp = 1,
|
||||
#ifdef EIGEN_VECTORIZE_VSX
|
||||
HasCmp = 1,
|
||||
HasPow = 1,
|
||||
HasSqrt = 1,
|
||||
HasCbrt = 1,
|
||||
#if !EIGEN_COMP_CLANG
|
||||
@ -3175,6 +3177,7 @@ struct packet_traits<double> : default_packet_traits {
|
||||
HasATanh = 1,
|
||||
HasATan = 0,
|
||||
HasLog = 0,
|
||||
HasCmp = 1,
|
||||
HasExp = 1,
|
||||
HasSqrt = 1,
|
||||
HasCbrt = 1,
|
||||
|
@ -205,6 +205,7 @@ struct packet_traits<float> : default_packet_traits {
|
||||
HasATanh = 1,
|
||||
HasLog = 1,
|
||||
HasExp = 1,
|
||||
HasPow = 1,
|
||||
HasSqrt = 1,
|
||||
HasRsqrt = 1,
|
||||
HasCbrt = 1,
|
||||
@ -5060,6 +5061,7 @@ struct packet_traits<double> : default_packet_traits {
|
||||
#if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG
|
||||
HasExp = 1,
|
||||
HasLog = 1,
|
||||
HasPow = 1,
|
||||
HasATan = 1,
|
||||
HasATanh = 1,
|
||||
#endif
|
||||
|
@ -192,6 +192,7 @@ struct packet_traits<float> : default_packet_traits {
|
||||
HasExpm1 = 1,
|
||||
HasNdtri = 1,
|
||||
HasExp = 1,
|
||||
HasPow = 1,
|
||||
HasBessel = 1,
|
||||
HasSqrt = 1,
|
||||
HasRsqrt = 1,
|
||||
@ -221,6 +222,7 @@ struct packet_traits<double> : default_packet_traits {
|
||||
HasErf = EIGEN_FAST_MATH,
|
||||
HasErfc = EIGEN_FAST_MATH,
|
||||
HasExp = 1,
|
||||
HasPow = 1,
|
||||
HasSqrt = 1,
|
||||
HasRsqrt = 1,
|
||||
HasCbrt = 1,
|
||||
|
@ -354,10 +354,12 @@ struct packet_traits<float> : default_packet_traits {
|
||||
|
||||
HasDiv = 1,
|
||||
|
||||
HasCmp = 1,
|
||||
HasSin = EIGEN_FAST_MATH,
|
||||
HasCos = EIGEN_FAST_MATH,
|
||||
HasLog = 1,
|
||||
HasExp = 1,
|
||||
HasPow = 1,
|
||||
HasSqrt = 1,
|
||||
HasTanh = EIGEN_FAST_MATH,
|
||||
HasErf = EIGEN_FAST_MATH,
|
||||
|
@ -180,6 +180,7 @@ struct packet_traits<float> : default_packet_traits {
|
||||
AlignedOnScalar = 1,
|
||||
size = 4,
|
||||
|
||||
HasCmp = 1,
|
||||
HasAdd = 1,
|
||||
HasSub = 1,
|
||||
HasMul = 1,
|
||||
|
@ -362,11 +362,7 @@ template <typename Scalar, typename Exponent>
|
||||
struct functor_traits<scalar_pow_op<Scalar, Exponent>> {
|
||||
enum {
|
||||
Cost = 5 * NumTraits<Scalar>::MulCost,
|
||||
PacketAccess = (!NumTraits<Scalar>::IsComplex && !NumTraits<Scalar>::IsInteger && packet_traits<Scalar>::HasExp &&
|
||||
packet_traits<Scalar>::HasLog && packet_traits<Scalar>::HasRound && packet_traits<Scalar>::HasCmp &&
|
||||
// Temporarily disable packet access for half/bfloat16 until
|
||||
// accuracy is improved.
|
||||
!is_same<Scalar, half>::value && !is_same<Scalar, bfloat16>::value)
|
||||
PacketAccess = (!NumTraits<Scalar>::IsComplex && !NumTraits<Scalar>::IsInteger && packet_traits<Scalar>::HasPow)
|
||||
};
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user