mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-05-06 10:44:05 +08:00
add ei_predux_mul for AltiVec
This commit is contained in:
parent
cbbc6d940b
commit
7954f7709a
@ -298,16 +298,6 @@ inline v4f ei_preduxp(const v4f* vecs)
|
|||||||
return sum[0];
|
return sum[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
inline float ei_predux(const v4f& a)
|
|
||||||
{
|
|
||||||
v4f b, sum;
|
|
||||||
b = (v4f)vec_sld(a, a, 8);
|
|
||||||
sum = vec_add(a, b);
|
|
||||||
b = (v4f)vec_sld(sum, sum, 4);
|
|
||||||
sum = vec_add(sum, b);
|
|
||||||
return ei_pfirst(sum);
|
|
||||||
}
|
|
||||||
|
|
||||||
inline v4i ei_preduxp(const v4i* vecs)
|
inline v4i ei_preduxp(const v4i* vecs)
|
||||||
{
|
{
|
||||||
v4i v[4], sum[4];
|
v4i v[4], sum[4];
|
||||||
@ -335,6 +325,16 @@ inline v4i ei_preduxp(const v4i* vecs)
|
|||||||
return sum[0];
|
return sum[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline float ei_predux(const v4f& a)
|
||||||
|
{
|
||||||
|
v4f b, sum;
|
||||||
|
b = (v4f)vec_sld(a, a, 8);
|
||||||
|
sum = vec_add(a, b);
|
||||||
|
b = (v4f)vec_sld(sum, sum, 4);
|
||||||
|
sum = vec_add(sum, b);
|
||||||
|
return ei_pfirst(sum);
|
||||||
|
}
|
||||||
|
|
||||||
inline int ei_predux(const v4i& a)
|
inline int ei_predux(const v4i& a)
|
||||||
{
|
{
|
||||||
USE_CONST_v0i;
|
USE_CONST_v0i;
|
||||||
@ -344,6 +344,26 @@ inline int ei_predux(const v4i& a)
|
|||||||
return ei_pfirst(sum);
|
return ei_pfirst(sum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline float ei_predux_mul(const v4f& a)
|
||||||
|
{
|
||||||
|
v4f b, sum;
|
||||||
|
b = (v4f)vec_sld(a, a, 8);
|
||||||
|
sum = ei_pmul(a, b);
|
||||||
|
b = (v4f)vec_sld(sum, sum, 4);
|
||||||
|
sum = ei_pmul(sum, b);
|
||||||
|
return ei_pfirst(sum);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int ei_predux_mul(const v4i& a)
|
||||||
|
{
|
||||||
|
v4i b, sum;
|
||||||
|
b = (v4i)vec_sld(a, a, 8);
|
||||||
|
sum = ei_pmul(a, b);
|
||||||
|
b = (v4i)vec_sld(sum, sum, 4);
|
||||||
|
sum = ei_pmul(sum, b);
|
||||||
|
return ei_pfirst(sum);
|
||||||
|
}
|
||||||
|
|
||||||
template<int Offset>
|
template<int Offset>
|
||||||
struct ei_palign_impl<Offset, v4f>
|
struct ei_palign_impl<Offset, v4f>
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user