From 414f0a17565f3c07b5c2c1a58bd1713cd3108177 Mon Sep 17 00:00:00 2001 From: Chip Kerchner Date: Tue, 31 Jan 2023 19:40:24 +0000 Subject: [PATCH] Fix pre-POWER8_VECTOR bugs in pcmp_lt and pnegate and reactivate psqrt. (cherry picked from commit 4a58f30aa083d2f5753465a36730ca7734b483be) --- Eigen/src/Core/arch/AltiVec/MathFunctions.h | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Eigen/src/Core/arch/AltiVec/MathFunctions.h b/Eigen/src/Core/arch/AltiVec/MathFunctions.h index 3b0c07fac..fac05dc35 100644 --- a/Eigen/src/Core/arch/AltiVec/MathFunctions.h +++ b/Eigen/src/Core/arch/AltiVec/MathFunctions.h @@ -69,6 +69,30 @@ Packet2d psqrt(const Packet2d& x) return vec_sqrt(x); } +#if !EIGEN_COMP_CLANG +template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS +Packet4f prsqrt(const Packet4f& x) +{ + return pset1(1.0f) / psqrt(x); +// vec_rsqrt returns different results from the generic version +// return vec_rsqrt(x); +} + +template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS +Packet2d prsqrt(const Packet2d& x) +{ + return pset1(1.0) / psqrt(x); +// vec_rsqrt returns different results from the generic version +// return vec_rsqrt(x); +} + +template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS +Packet2d patan(const Packet2d& _x) +{ + return patan_double(_x); +} +#endif + template<> EIGEN_DEFINE_FUNCTION_ALLOWING_MULTIPLE_DEFINITIONS Packet4f prsqrt(const Packet4f& x) {