1673
|
1 __kernel
|
|
2 void bitReverse(__constant long *param, __global float2 *src,__global float2 *dst)
|
|
3 {
|
|
4 unsigned long gid = (unsigned long)get_global_id(0);
|
|
5 unsigned long nid = (unsigned long)get_global_id(1);
|
|
6
|
1835
|
7 unsigned long m = (unsigned long)param[0];
|
|
8 unsigned long n = (unsigned long)param[1];
|
1673
|
9 unsigned int j = gid;
|
|
10
|
|
11 j = (j & 0x55555555) << 1 | (j & 0xAAAAAAAA) >> 1;
|
|
12 j = (j & 0x33333333) << 2 | (j & 0xCCCCCCCC) >> 2;
|
|
13 j = (j & 0x0F0F0F0F) << 4 | (j & 0xF0F0F0F0) >> 4;
|
|
14 j = (j & 0x00FF00FF) << 8 | (j & 0xFF00FF00) >> 8;
|
|
15 j = (j & 0x0000FFFF) << 16 | (j & 0xFFFF0000) >> 16;
|
|
16
|
|
17 j >>= (32-m);
|
|
18
|
|
19 dst[nid*n+j] = src[nid*n+gid];
|
|
20 }
|