aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen
diff options
context:
space:
mode:
authorGravatar Konstantinos A. Margaritis <markos@codex.gr>2009-02-12 22:03:30 +0000
committerGravatar Konstantinos A. Margaritis <markos@codex.gr>2009-02-12 22:03:30 +0000
commit349557db9a57a3ac24cca066b19ab47d3800d194 (patch)
tree6df20e7170e6451cec7455fd0a35e5d34db46f29 /Eigen
parentad2bf14dbb734439dfb15bd77b7e673f965a68fb (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.h28
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);
}