diff options
author | Grigore Lupescu <grigore.lupescu at intel.com> | 2016-04-11 17:40:00 +0300 |
---|---|---|
committer | Yang Rong <rong.r.yang@intel.com> | 2016-05-18 15:10:36 +0800 |
commit | 2fb94e3ad11a410885808bb8f7cf1b04e2abc7a9 (patch) | |
tree | 80c88b85b8fe98efafacc58bf52cf04d70ebc00a /kernels | |
parent | 4bf8346d24970ba5d950f7e04131a8b633ff1fda (diff) |
Utest: Add workgroup scan exclusive tests
Added the following unit tests:
compiler_workgroup_scan_exclusive_add_int
compiler_workgroup_scan_exclusive_add_uint
compiler_workgroup_scan_exclusive_add_long
compiler_workgroup_scan_exclusive_add_ulong
compiler_workgroup_scan_exclusive_add_float
compiler_workgroup_scan_exclusive_max_int
compiler_workgroup_scan_exclusive_max_uint
compiler_workgroup_scan_exclusive_max_long
compiler_workgroup_scan_exclusive_max_ulong
compiler_workgroup_scan_exclusive_max_float
compiler_workgroup_scan_exclusive_min_int
compiler_workgroup_scan_exclusive_min_uint
compiler_workgroup_scan_exclusive_min_long
compiler_workgroup_scan_exclusive_min_ulong
compiler_workgroup_scan_exclusive_min_float
Signed-off-by: Grigore Lupescu <grigore.lupescu at intel.com>
Reviewed-by: Pan Xiuli <xiuli.pan@intel.com>
Diffstat (limited to 'kernels')
-rw-r--r-- | kernels/compiler_workgroup_scan_exclusive.cl | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/kernels/compiler_workgroup_scan_exclusive.cl b/kernels/compiler_workgroup_scan_exclusive.cl new file mode 100644 index 00000000..14c1c618 --- /dev/null +++ b/kernels/compiler_workgroup_scan_exclusive.cl @@ -0,0 +1,98 @@ +/* + * Workgroup scan exclusive add functions + */ +kernel void compiler_workgroup_scan_exclusive_add_int(global int *src, global int *dst) { + int val = src[get_global_id(0)]; + int sum = work_group_scan_exclusive_add(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_add_uint(global uint *src, global uint *dst) { + uint val = src[get_global_id(0)]; + uint sum = work_group_scan_exclusive_add(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_add_long(global long *src, global long *dst) { + long val = src[get_global_id(0)]; + long sum = work_group_scan_exclusive_add(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_add_ulong(global ulong *src, global ulong *dst) { + ulong val = src[get_global_id(0)]; + ulong sum = work_group_scan_exclusive_add(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_add_float(global float *src, global float *dst) { + float val = src[get_global_id(0)]; + float sum = work_group_scan_exclusive_add(val); + dst[get_global_id(0)] = sum; +} + +/* + * Workgroup scan exclusive max functions + */ +kernel void compiler_workgroup_scan_exclusive_max_int(global int *src, global int *dst) { + int val = src[get_global_id(0)]; + int sum = work_group_scan_exclusive_max(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_max_uint(global uint *src, global uint *dst) { + uint val = src[get_global_id(0)]; + uint sum = work_group_scan_exclusive_max(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_max_long(global long *src, global long *dst) { + long val = src[get_global_id(0)]; + long sum = work_group_scan_exclusive_max(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_max_ulong(global ulong *src, global ulong *dst) { + ulong val = src[get_global_id(0)]; + ulong sum = work_group_scan_exclusive_max(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_max_float(global float *src, global float *dst) { + float val = src[get_global_id(0)]; + float sum = work_group_scan_exclusive_max(val); + dst[get_global_id(0)] = sum; +} + +/* + * Workgroup scan exclusive min functions + */ +kernel void compiler_workgroup_scan_exclusive_min_int(global int *src, global int *dst) { + int val = src[get_global_id(0)]; + int sum = work_group_scan_exclusive_min(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_min_uint(global uint *src, global uint *dst) { + uint val = src[get_global_id(0)]; + uint sum = work_group_scan_exclusive_min(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_min_long(global long *src, global long *dst) { + long val = src[get_global_id(0)]; + long sum = work_group_scan_exclusive_min(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_min_ulong(global ulong *src, global ulong *dst) { + ulong val = src[get_global_id(0)]; + ulong sum = work_group_scan_exclusive_min(val); + dst[get_global_id(0)] = sum; +} + +kernel void compiler_workgroup_scan_exclusive_min_float(global float *src, global float *dst) { + float val = src[get_global_id(0)]; + float sum = work_group_scan_exclusive_min(val); + dst[get_global_id(0)] = sum; +} |