mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 19:59:05 +08:00
Implemented protate() for CUDA
This commit is contained in:
parent
cd042dbbfd
commit
dc26459b99
@ -272,6 +272,35 @@ template<> EIGEN_DEVICE_FUNC inline double predux_mul<double2>(const double2& a)
|
|||||||
return a.x * a.y;
|
return a.x * a.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<size_t offset>
|
||||||
|
struct protate_impl<offset, float4>
|
||||||
|
{
|
||||||
|
static float4 run(const float4& a) {
|
||||||
|
if (offset == 0) {
|
||||||
|
return make_float4(a.x, a.y, a.z, a.w);
|
||||||
|
}
|
||||||
|
if (offset == 1) {
|
||||||
|
return make_float4(a.w, a.x, a.y, a.z);
|
||||||
|
}
|
||||||
|
if (offset == 2) {
|
||||||
|
return make_float4(a.z, a.w, a.x, a.y);
|
||||||
|
}
|
||||||
|
return make_float4(a.y, a.z, a.w, a.x);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<size_t offset>
|
||||||
|
struct protate_impl<offset, double2>
|
||||||
|
{
|
||||||
|
static double2 run(const double2& a) {
|
||||||
|
if (offset == 0) {
|
||||||
|
return make_double2(a.x, a.y);
|
||||||
|
}
|
||||||
|
return make_double2(a.y, a.x);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
template<> EIGEN_DEVICE_FUNC inline float4 pabs<float4>(const float4& a) {
|
template<> EIGEN_DEVICE_FUNC inline float4 pabs<float4>(const float4& a) {
|
||||||
return make_float4(fabsf(a.x), fabsf(a.y), fabsf(a.z), fabsf(a.w));
|
return make_float4(fabsf(a.x), fabsf(a.y), fabsf(a.z), fabsf(a.w));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user