mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-22 04:47:56 -04:00
35 lines
No EOL
744 B
Common Lisp
35 lines
No EOL
744 B
Common Lisp
__kernel void psorti (__global const int *in, __global int *out)
|
|
{
|
|
int gid = get_global_id(0);
|
|
int n = get_global_size(0);
|
|
|
|
int ref = in[gid];
|
|
|
|
int pos = 0;
|
|
for (int i = 0; i < n; ++i) {
|
|
int cur = in[i];
|
|
pos += (cur < ref) || ((cur == ref) && (i < gid));
|
|
}
|
|
out[pos] = ref;
|
|
}
|
|
|
|
__kernel void psortf (__global const float *in, __global float *out)
|
|
{
|
|
int gid = get_global_id(0);
|
|
int n = get_global_size(0);
|
|
|
|
float ref = in[gid];
|
|
|
|
int pos = 0;
|
|
for (int i = 0; i < n; ++i) {
|
|
float cur = in[i];
|
|
pos += (cur < ref) || ((cur == ref) && (i < gid));
|
|
/*int cl = (cur < ref);
|
|
int ce = (cur == ref);
|
|
int ls = (i < gid);
|
|
int x = ce && ls;
|
|
int y = cl || x;
|
|
pos += y;*/
|
|
}
|
|
out[pos] = ref;
|
|
} |