mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-01-24 14:45:14 +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;
|
||||
}
|
||||
|
||||
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) {
|
||||
return make_float4(fabsf(a.x), fabsf(a.y), fabsf(a.z), fabsf(a.w));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user