From 9f7caa7e7dcd195922133e129ce8ef296ff48d13 Mon Sep 17 00:00:00 2001 From: Konstantinos Margaritis Date: Sun, 10 Jul 2016 07:05:10 -0300 Subject: [PATCH] minor fixes for big endian altivec/vsx --- Eigen/src/Core/arch/AltiVec/Complex.h | 8 ++++++-- Eigen/src/Core/arch/AltiVec/MathFunctions.h | 4 ++-- Eigen/src/Core/arch/AltiVec/PacketMath.h | 7 ++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Eigen/src/Core/arch/AltiVec/Complex.h b/Eigen/src/Core/arch/AltiVec/Complex.h index ca8eee3ca..45213f791 100644 --- a/Eigen/src/Core/arch/AltiVec/Complex.h +++ b/Eigen/src/Core/arch/AltiVec/Complex.h @@ -53,8 +53,10 @@ template<> struct packet_traits > : default_packet_traits HasAbs2 = 0, HasMin = 0, HasMax = 0, - HasSetLinear = 0, - HasBlend = 1 +#ifdef __VSX__ + HasBlend = 1, +#endif + HasSetLinear = 0 }; }; @@ -260,11 +262,13 @@ EIGEN_STRONG_INLINE void ptranspose(PacketBlock& kernel) kernel.packet[0].v = tmp; } +#ifdef __VSX__ template<> EIGEN_STRONG_INLINE Packet2cf pblend(const Selector<2>& ifPacket, const Packet2cf& thenPacket, const Packet2cf& elsePacket) { Packet2cf result; result.v = reinterpret_cast(pblend(ifPacket, reinterpret_cast(thenPacket.v), reinterpret_cast(elsePacket.v))); return result; } +#endif //---------- double ---------- #ifdef __VSX__ diff --git a/Eigen/src/Core/arch/AltiVec/MathFunctions.h b/Eigen/src/Core/arch/AltiVec/MathFunctions.h index d92ec240e..5511245dd 100644 --- a/Eigen/src/Core/arch/AltiVec/MathFunctions.h +++ b/Eigen/src/Core/arch/AltiVec/MathFunctions.h @@ -159,9 +159,9 @@ Packet4f pexp(const Packet4f& _x) Packet4i emm0; // clamp x - x = vec_max(vec_min(x, p4f_exp_hi), p4f_exp_lo); + x = pmax(pmin(x, p4f_exp_hi), p4f_exp_lo); - /* express exp(x) as exp(g + n*log(2)) */ + // express exp(x) as exp(g + n*log(2)) fx = pmadd(x, p4f_cephes_LOG2EF, p4f_half); fx = pfloor(fx); diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/Eigen/src/Core/arch/AltiVec/PacketMath.h index 3f4243995..cbfef3503 100755 --- a/Eigen/src/Core/arch/AltiVec/PacketMath.h +++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h @@ -152,13 +152,14 @@ template<> struct packet_traits : default_packet_traits HasExp = 1, #ifdef __VSX__ HasSqrt = 1, -#else - HasSqrt = 0, -#endif #if !EIGEN_COMP_CLANG HasRsqrt = 1, #else HasRsqrt = 0, +#endif +#else + HasSqrt = 0, + HasRsqrt = 0, #endif HasRound = 1, HasFloor = 1,