mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-20 20:04:26 +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,
|
HasLog1p = 1,
|
||||||
HasExpm1 = 1,
|
HasExpm1 = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasNdtri = 1,
|
HasNdtri = 1,
|
||||||
HasBessel = 1,
|
HasBessel = 1,
|
||||||
HasSqrt = 1,
|
HasSqrt = 1,
|
||||||
@ -149,6 +150,7 @@ struct packet_traits<double> : default_packet_traits {
|
|||||||
HasErf = 1,
|
HasErf = 1,
|
||||||
HasErfc = 1,
|
HasErfc = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasSqrt = 1,
|
HasSqrt = 1,
|
||||||
HasRsqrt = 1,
|
HasRsqrt = 1,
|
||||||
HasCbrt = 1,
|
HasCbrt = 1,
|
||||||
|
@ -135,6 +135,7 @@ struct packet_traits<float> : default_packet_traits {
|
|||||||
HasNdtri = 1,
|
HasNdtri = 1,
|
||||||
HasBessel = 1,
|
HasBessel = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasReciprocal = EIGEN_FAST_MATH,
|
HasReciprocal = EIGEN_FAST_MATH,
|
||||||
HasTanh = EIGEN_FAST_MATH,
|
HasTanh = EIGEN_FAST_MATH,
|
||||||
HasErf = EIGEN_FAST_MATH,
|
HasErf = EIGEN_FAST_MATH,
|
||||||
@ -159,6 +160,7 @@ struct packet_traits<double> : default_packet_traits {
|
|||||||
HasCos = EIGEN_FAST_MATH,
|
HasCos = EIGEN_FAST_MATH,
|
||||||
HasLog = 1,
|
HasLog = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasATan = 1,
|
HasATan = 1,
|
||||||
HasTanh = EIGEN_FAST_MATH,
|
HasTanh = EIGEN_FAST_MATH,
|
||||||
HasErf = EIGEN_FAST_MATH,
|
HasErf = EIGEN_FAST_MATH,
|
||||||
|
@ -185,6 +185,8 @@ struct packet_traits<float> : default_packet_traits {
|
|||||||
HasLog = 1,
|
HasLog = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
#ifdef EIGEN_VECTORIZE_VSX
|
#ifdef EIGEN_VECTORIZE_VSX
|
||||||
|
HasCmp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasSqrt = 1,
|
HasSqrt = 1,
|
||||||
HasCbrt = 1,
|
HasCbrt = 1,
|
||||||
#if !EIGEN_COMP_CLANG
|
#if !EIGEN_COMP_CLANG
|
||||||
@ -3175,6 +3177,7 @@ struct packet_traits<double> : default_packet_traits {
|
|||||||
HasATanh = 1,
|
HasATanh = 1,
|
||||||
HasATan = 0,
|
HasATan = 0,
|
||||||
HasLog = 0,
|
HasLog = 0,
|
||||||
|
HasCmp = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
HasSqrt = 1,
|
HasSqrt = 1,
|
||||||
HasCbrt = 1,
|
HasCbrt = 1,
|
||||||
|
@ -205,6 +205,7 @@ struct packet_traits<float> : default_packet_traits {
|
|||||||
HasATanh = 1,
|
HasATanh = 1,
|
||||||
HasLog = 1,
|
HasLog = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasSqrt = 1,
|
HasSqrt = 1,
|
||||||
HasRsqrt = 1,
|
HasRsqrt = 1,
|
||||||
HasCbrt = 1,
|
HasCbrt = 1,
|
||||||
@ -5060,6 +5061,7 @@ struct packet_traits<double> : default_packet_traits {
|
|||||||
#if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG
|
#if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
HasLog = 1,
|
HasLog = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasATan = 1,
|
HasATan = 1,
|
||||||
HasATanh = 1,
|
HasATanh = 1,
|
||||||
#endif
|
#endif
|
||||||
|
@ -192,6 +192,7 @@ struct packet_traits<float> : default_packet_traits {
|
|||||||
HasExpm1 = 1,
|
HasExpm1 = 1,
|
||||||
HasNdtri = 1,
|
HasNdtri = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasBessel = 1,
|
HasBessel = 1,
|
||||||
HasSqrt = 1,
|
HasSqrt = 1,
|
||||||
HasRsqrt = 1,
|
HasRsqrt = 1,
|
||||||
@ -221,6 +222,7 @@ struct packet_traits<double> : default_packet_traits {
|
|||||||
HasErf = EIGEN_FAST_MATH,
|
HasErf = EIGEN_FAST_MATH,
|
||||||
HasErfc = EIGEN_FAST_MATH,
|
HasErfc = EIGEN_FAST_MATH,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasSqrt = 1,
|
HasSqrt = 1,
|
||||||
HasRsqrt = 1,
|
HasRsqrt = 1,
|
||||||
HasCbrt = 1,
|
HasCbrt = 1,
|
||||||
|
@ -354,10 +354,12 @@ struct packet_traits<float> : default_packet_traits {
|
|||||||
|
|
||||||
HasDiv = 1,
|
HasDiv = 1,
|
||||||
|
|
||||||
|
HasCmp = 1,
|
||||||
HasSin = EIGEN_FAST_MATH,
|
HasSin = EIGEN_FAST_MATH,
|
||||||
HasCos = EIGEN_FAST_MATH,
|
HasCos = EIGEN_FAST_MATH,
|
||||||
HasLog = 1,
|
HasLog = 1,
|
||||||
HasExp = 1,
|
HasExp = 1,
|
||||||
|
HasPow = 1,
|
||||||
HasSqrt = 1,
|
HasSqrt = 1,
|
||||||
HasTanh = EIGEN_FAST_MATH,
|
HasTanh = EIGEN_FAST_MATH,
|
||||||
HasErf = EIGEN_FAST_MATH,
|
HasErf = EIGEN_FAST_MATH,
|
||||||
|
@ -180,6 +180,7 @@ struct packet_traits<float> : default_packet_traits {
|
|||||||
AlignedOnScalar = 1,
|
AlignedOnScalar = 1,
|
||||||
size = 4,
|
size = 4,
|
||||||
|
|
||||||
|
HasCmp = 1,
|
||||||
HasAdd = 1,
|
HasAdd = 1,
|
||||||
HasSub = 1,
|
HasSub = 1,
|
||||||
HasMul = 1,
|
HasMul = 1,
|
||||||
|
@ -362,11 +362,7 @@ template <typename Scalar, typename Exponent>
|
|||||||
struct functor_traits<scalar_pow_op<Scalar, Exponent>> {
|
struct functor_traits<scalar_pow_op<Scalar, Exponent>> {
|
||||||
enum {
|
enum {
|
||||||
Cost = 5 * NumTraits<Scalar>::MulCost,
|
Cost = 5 * NumTraits<Scalar>::MulCost,
|
||||||
PacketAccess = (!NumTraits<Scalar>::IsComplex && !NumTraits<Scalar>::IsInteger && packet_traits<Scalar>::HasExp &&
|
PacketAccess = (!NumTraits<Scalar>::IsComplex && !NumTraits<Scalar>::IsInteger && packet_traits<Scalar>::HasPow)
|
||||||
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)
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user