diff --git a/Eigen/src/Core/arch/AVX/PacketMath.h b/Eigen/src/Core/arch/AVX/PacketMath.h index eb5da53d0..0cd9e6cd6 100644 --- a/Eigen/src/Core/arch/AVX/PacketMath.h +++ b/Eigen/src/Core/arch/AVX/PacketMath.h @@ -118,6 +118,7 @@ struct packet_traits : default_packet_traits { HasLog1p = 1, HasExpm1 = 1, HasExp = 1, + HasPow = 1, HasNdtri = 1, HasBessel = 1, HasSqrt = 1, @@ -149,6 +150,7 @@ struct packet_traits : default_packet_traits { HasErf = 1, HasErfc = 1, HasExp = 1, + HasPow = 1, HasSqrt = 1, HasRsqrt = 1, HasCbrt = 1, diff --git a/Eigen/src/Core/arch/AVX512/PacketMath.h b/Eigen/src/Core/arch/AVX512/PacketMath.h index 932b0568d..b76c8a77f 100644 --- a/Eigen/src/Core/arch/AVX512/PacketMath.h +++ b/Eigen/src/Core/arch/AVX512/PacketMath.h @@ -135,6 +135,7 @@ struct packet_traits : 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 : default_packet_traits { HasCos = EIGEN_FAST_MATH, HasLog = 1, HasExp = 1, + HasPow = 1, HasATan = 1, HasTanh = EIGEN_FAST_MATH, HasErf = EIGEN_FAST_MATH, diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/Eigen/src/Core/arch/AltiVec/PacketMath.h index d7bd9bee4..eefe326b0 100644 --- a/Eigen/src/Core/arch/AltiVec/PacketMath.h +++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h @@ -185,6 +185,8 @@ struct packet_traits : 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 : default_packet_traits { HasATanh = 1, HasATan = 0, HasLog = 0, + HasCmp = 1, HasExp = 1, HasSqrt = 1, HasCbrt = 1, diff --git a/Eigen/src/Core/arch/NEON/PacketMath.h b/Eigen/src/Core/arch/NEON/PacketMath.h index 135b7e4e4..bea50a3ef 100644 --- a/Eigen/src/Core/arch/NEON/PacketMath.h +++ b/Eigen/src/Core/arch/NEON/PacketMath.h @@ -205,6 +205,7 @@ struct packet_traits : default_packet_traits { HasATanh = 1, HasLog = 1, HasExp = 1, + HasPow = 1, HasSqrt = 1, HasRsqrt = 1, HasCbrt = 1, @@ -5060,6 +5061,7 @@ struct packet_traits : default_packet_traits { #if EIGEN_ARCH_ARM64 && !EIGEN_APPLE_DOUBLE_NEON_BUG HasExp = 1, HasLog = 1, + HasPow = 1, HasATan = 1, HasATanh = 1, #endif diff --git a/Eigen/src/Core/arch/SSE/PacketMath.h b/Eigen/src/Core/arch/SSE/PacketMath.h index e8902cff6..64ba7ba3a 100644 --- a/Eigen/src/Core/arch/SSE/PacketMath.h +++ b/Eigen/src/Core/arch/SSE/PacketMath.h @@ -192,6 +192,7 @@ struct packet_traits : default_packet_traits { HasExpm1 = 1, HasNdtri = 1, HasExp = 1, + HasPow = 1, HasBessel = 1, HasSqrt = 1, HasRsqrt = 1, @@ -221,6 +222,7 @@ struct packet_traits : default_packet_traits { HasErf = EIGEN_FAST_MATH, HasErfc = EIGEN_FAST_MATH, HasExp = 1, + HasPow = 1, HasSqrt = 1, HasRsqrt = 1, HasCbrt = 1, diff --git a/Eigen/src/Core/arch/SVE/PacketMath.h b/Eigen/src/Core/arch/SVE/PacketMath.h index 952d7561b..6115d1d35 100644 --- a/Eigen/src/Core/arch/SVE/PacketMath.h +++ b/Eigen/src/Core/arch/SVE/PacketMath.h @@ -354,10 +354,12 @@ struct packet_traits : 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, diff --git a/Eigen/src/Core/arch/ZVector/PacketMath.h b/Eigen/src/Core/arch/ZVector/PacketMath.h index b45681320..4d18af0c0 100644 --- a/Eigen/src/Core/arch/ZVector/PacketMath.h +++ b/Eigen/src/Core/arch/ZVector/PacketMath.h @@ -180,6 +180,7 @@ struct packet_traits : default_packet_traits { AlignedOnScalar = 1, size = 4, + HasCmp = 1, HasAdd = 1, HasSub = 1, HasMul = 1, diff --git a/Eigen/src/Core/functors/BinaryFunctors.h b/Eigen/src/Core/functors/BinaryFunctors.h index a93b998b9..b6ecfb5d5 100644 --- a/Eigen/src/Core/functors/BinaryFunctors.h +++ b/Eigen/src/Core/functors/BinaryFunctors.h @@ -362,11 +362,7 @@ template struct functor_traits> { enum { Cost = 5 * NumTraits::MulCost, - PacketAccess = (!NumTraits::IsComplex && !NumTraits::IsInteger && packet_traits::HasExp && - packet_traits::HasLog && packet_traits::HasRound && packet_traits::HasCmp && - // Temporarily disable packet access for half/bfloat16 until - // accuracy is improved. - !is_same::value && !is_same::value) + PacketAccess = (!NumTraits::IsComplex && !NumTraits::IsInteger && packet_traits::HasPow) }; };