aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Eigen/src/Core/arch/AltiVec/Complex.h8
-rw-r--r--Eigen/src/Core/arch/AltiVec/MathFunctions.h4
-rwxr-xr-xEigen/src/Core/arch/AltiVec/PacketMath.h7
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<std::complex<float> > : 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<Packet2cf,2>& 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<Packet4f>(pblend<Packet2d>(ifPacket, reinterpret_cast<Packet2d>(thenPacket.v), reinterpret_cast<Packet2d>(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<Packet4f>(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,14 +152,15 @@ template<> struct packet_traits<float> : 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,
HasCeil = 1,