diff options
author | 2009-02-12 22:03:30 +0000 | |
---|---|---|
committer | 2009-02-12 22:03:30 +0000 | |
commit | 349557db9a57a3ac24cca066b19ab47d3800d194 (patch) | |
tree | 6df20e7170e6451cec7455fd0a35e5d34db46f29 /Eigen | |
parent | ad2bf14dbb734439dfb15bd77b7e673f965a68fb (diff) |
no reason for 3 vec_mins, 2 are enough apparently in ei_predux_min
Diffstat (limited to 'Eigen')
-rw-r--r-- | Eigen/src/Core/arch/AltiVec/PacketMath.h | 28 |
1 files 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); } |