2
0
mirror of https://gitlab.com/libeigen/eigen.git synced 2025-02-23 18:20:47 +08:00

no reason for 3 vec_mins, 2 are enough apparently in ei_predux_min

This commit is contained in:
Konstantinos A. Margaritis 2009-02-12 22:03:30 +00:00
parent ad2bf14dbb
commit 349557db9a

View File

@ -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);
}