From: Guo Yejun Date: Fri, 18 Apr 2014 05:42:29 +0000 (+0800) Subject: add test for __gen_ocl_simd_any and __gen_ocl_simd_all X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2e49929a65f35fab799170db8a29a1ee9932f2e3;p=contrib%2Fbeignet.git add test for __gen_ocl_simd_any and __gen_ocl_simd_all Signed-off-by: Guo Yejun Reviewed-by: Zhigang Gong --- diff --git a/kernels/compiler_simd_all.cl b/kernels/compiler_simd_all.cl new file mode 100644 index 0000000..504710b --- /dev/null +++ b/kernels/compiler_simd_all.cl @@ -0,0 +1,12 @@ +__kernel void compiler_simd_all(global int *src, global int *dst) +{ + int i = get_global_id(0); + if (i % 2 == 1) { + if (__gen_ocl_simd_all((src[i] < 12) && (src[i] > 0))) + dst[i] = 1; + else + dst[i] = 2; + } + else + dst[i] = 3; +} diff --git a/kernels/compiler_simd_any.cl b/kernels/compiler_simd_any.cl new file mode 100644 index 0000000..6cc287f --- /dev/null +++ b/kernels/compiler_simd_any.cl @@ -0,0 +1,15 @@ +__kernel void compiler_simd_any(global int *src, global int *dst) +{ + int i = get_global_id(0); + + if (i % 2 == 1) { + if (__gen_ocl_simd_any(src[i] == 5)) + dst[i] = 1; + else if (__gen_ocl_simd_any(src[i] == 6)) + dst[i] = 0; + else + dst[i] = 2; + } + else + dst[i] = 3; +} diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt index aa7efa6..704438d 100644 --- a/utests/CMakeLists.txt +++ b/utests/CMakeLists.txt @@ -169,6 +169,8 @@ set (utests_sources compiler_bool_cross_basic_block.cpp compiler_private_data_overflow.cpp compiler_getelementptr_bitcast.cpp + compiler_simd_any.cpp + compiler_simd_all.cpp load_program_from_bin.cpp profiling_exec.cpp enqueue_copy_buf.cpp diff --git a/utests/compiler_simd_all.cpp b/utests/compiler_simd_all.cpp new file mode 100644 index 0000000..086c54f --- /dev/null +++ b/utests/compiler_simd_all.cpp @@ -0,0 +1,43 @@ +#include "utest_helper.hpp" + +void compiler_simd_all(void) +{ + const size_t n = 40; + + // Setup kernel and buffers + OCL_CREATE_KERNEL("compiler_simd_all"); + OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(int), NULL); + OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(int), NULL); + OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]); + OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]); + + globals[0] = n; + locals[0] = 10; + + OCL_MAP_BUFFER(0); + for (int32_t i = 0; i < (int32_t) n; ++i) + ((int*)buf_data[0])[i] = i; + OCL_UNMAP_BUFFER(0); + + // Run the kernel on GPU + OCL_NDRANGE(1); + + // Run on CPU + + // Compare + OCL_MAP_BUFFER(1); + for (int32_t i = 0; i < (int32_t) n; ++i) { + //printf("%d %d\n", i, ((int *)buf_data[1])[i]); + if (i % 2 == 1) { + if (i < (int32_t)locals[0]) + OCL_ASSERT(((int *)buf_data[1])[i] == 1); + else + OCL_ASSERT(((int *)buf_data[1])[i] == 2); + } + else + OCL_ASSERT(((int *)buf_data[1])[i] == 3); + } + OCL_UNMAP_BUFFER(1); +} + +MAKE_UTEST_FROM_FUNCTION(compiler_simd_all); diff --git a/utests/compiler_simd_any.cpp b/utests/compiler_simd_any.cpp new file mode 100644 index 0000000..dcc5ef1 --- /dev/null +++ b/utests/compiler_simd_any.cpp @@ -0,0 +1,43 @@ +#include "utest_helper.hpp" + +void compiler_simd_any(void) +{ + const size_t n = 40; + + // Setup kernel and buffers + OCL_CREATE_KERNEL("compiler_simd_any"); + OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(int), NULL); + OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(int), NULL); + OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]); + OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]); + + globals[0] = n; + locals[0] = 10; + + OCL_MAP_BUFFER(0); + for (int32_t i = 0; i < (int32_t) n; ++i) + ((int*)buf_data[0])[i] = i; + OCL_UNMAP_BUFFER(0); + + // Run the kernel on GPU + OCL_NDRANGE(1); + + // Run on CPU + + // Compare + OCL_MAP_BUFFER(1); + for (int32_t i = 0; i < (int32_t) n; ++i){ + //printf("%d %d\n", i, ((int *)buf_data[1])[i]); + if (i % 2 == 1) { + if (i < (int32_t)locals[0]) + OCL_ASSERT(((int *)buf_data[1])[i] == 1); + else + OCL_ASSERT(((int *)buf_data[1])[i] == 2); + } + else + OCL_ASSERT(((int *)buf_data[1])[i] == 3); + } + OCL_UNMAP_BUFFER(1); +} + +MAKE_UTEST_FROM_FUNCTION(compiler_simd_any);