From 349557db9a57a3ac24cca066b19ab47d3800d194 Mon Sep 17 00:00:00 2001 From: "Konstantinos A. Margaritis" Date: Thu, 12 Feb 2009 22:03:30 +0000 Subject: [PATCH] no reason for 3 vec_mins, 2 are enough apparently in ei_predux_min --- Eigen/src/Core/arch/AltiVec/PacketMath.h | 28 ++++++++++-------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/Eigen/src/Core/arch/AltiVec/PacketMath.h b/Eigen/src/Core/arch/AltiVec/PacketMath.h index 25d961f73..2f7aaf6b6 100644 --- a/Eigen/src/Core/arch/AltiVec/PacketMath.h +++ b/Eigen/src/Core/arch/AltiVec/PacketMath.h @@ -363,37 +363,33 @@ inline int ei_predux_mul(const v4i& a) inline float ei_predux_min(const v4f& a) { - v4f b, c, res; - b = vec_min(a, vec_sld(a, a, 4)); - c = vec_min(a, vec_sld(b, b, 4)); - res = vec_min(a, vec_sld(c, c, 4)); + v4f b, res; + b = vec_min(a, vec_sld(a, a, 8)); + res = vec_min(b, vec_sld(b, b, 4)); return ei_pfirst(res); } inline int ei_predux_min(const v4i& a) { - v4i b, c, res; - b = vec_min(a, vec_sld(a, a, 4)); - c = vec_min(a, vec_sld(b, b, 4)); - res = vec_min(a, vec_sld(c, c, 4)); + v4i b, res; + b = vec_min(a, vec_sld(a, a, 8)); + res = vec_min(b, vec_sld(b, b, 4)); return ei_pfirst(res); } inline float ei_predux_max(const v4f& a) { - v4f b, c, res; - b = vec_max(a, vec_sld(a, a, 4)); - c = vec_max(a, vec_sld(b, b, 4)); - res = vec_max(a, vec_sld(c, c, 4)); + v4f b, res; + b = vec_max(a, vec_sld(a, a, 8)); + res = vec_max(b, vec_sld(b, b, 4)); return ei_pfirst(res); } inline int ei_predux_max(const v4i& a) { - v4i b, c, res; - b = vec_max(a, vec_sld(a, a, 4)); - c = vec_max(a, vec_sld(b, b, 4)); - res = vec_max(a, vec_sld(c, c, 4)); + v4i b, res; + b = vec_max(a, vec_sld(a, a, 8)); + res = vec_max(b, vec_sld(b, b, 4)); return ei_pfirst(res); }