From fe00e864a131820669a98273ad9523726da3ec19 Mon Sep 17 00:00:00 2001 From: "Konstantinos A. Margaritis" Date: Fri, 20 Mar 2009 17:26:50 +0000 Subject: [PATCH] ei_pnegate implemented for AltiVec --- Eigen/src/Core/arch/AltiVec/PacketMath.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/Eigen/src/Core/arch/AltiVec/PacketMath.h index 1458ddcb6..d183f048f 100644 --- a/Eigen/src/Core/arch/AltiVec/PacketMath.h +++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h @@ -103,13 +103,14 @@ template<> inline v4i ei_psub(const v4i& a, const v4i& b) { return vec_sub( template<> EIGEN_STRONG_INLINE v4f ei_pnegate(const v4f& a) { - v4i mask(0x80000000,0x80000000,0x80000000,0x80000000); + v4i mask = {0x80000000, 0x80000000, 0x80000000, 0x80000000}; return vec_xor(a,(v4f) mask); } + template<> EIGEN_STRONG_INLINE v4i ei_pnegate(const v4i& a) { - v4f zero; - return ei_psub(vec_xor(zero,zero), a); + USE_CONST_v0i; + return ei_psub(v0i, a); } template<> inline v4f ei_pmul(const v4f& a, const v4f& b) { USE_CONST_v0f; return vec_madd(a,b, v0f); }