diff options
author | Junyan He <junyan.he@linux.intel.com> | 2015-01-06 18:03:14 +0800 |
---|---|---|
committer | Zhigang Gong <zhigang.gong@intel.com> | 2015-01-20 16:31:18 +0800 |
commit | f5d5963af851bdb9d044bf87738fb8409dff1b2a (patch) | |
tree | 31e2ff121633ed45d6748226159e76032969c203 | |
parent | a994a275d05a6e1064ff3404e12b8267da77b5ee (diff) |
Add long NOT test case.
Signed-off-by: Junyan He <junyan.he@linux.intel.com>
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
-rw-r--r-- | kernels/compiler_long_not.cl | 6 | ||||
-rw-r--r-- | utests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | utests/compiler_long_not.cpp | 52 |
3 files changed, 59 insertions, 0 deletions
diff --git a/kernels/compiler_long_not.cl b/kernels/compiler_long_not.cl new file mode 100644 index 00000000..39ce77b8 --- /dev/null +++ b/kernels/compiler_long_not.cl @@ -0,0 +1,6 @@ +__kernel void compiler_long_not_vec8(__global ulong8 *src, __global long8 *dst) +{ + int tid = get_global_id(0); + dst[tid] = !src[tid]; +} + diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt index 9a572531..0f56c6c9 100644 --- a/utests/CMakeLists.txt +++ b/utests/CMakeLists.txt @@ -173,6 +173,7 @@ set (utests_sources runtime_compile_link.cpp compiler_long.cpp compiler_long_2.cpp + compiler_long_not.cpp compiler_long_hi_sat.cpp compiler_long_div.cpp compiler_long_convert.cpp diff --git a/utests/compiler_long_not.cpp b/utests/compiler_long_not.cpp new file mode 100644 index 00000000..64e42537 --- /dev/null +++ b/utests/compiler_long_not.cpp @@ -0,0 +1,52 @@ +#include <cstdint> +#include <cstring> +#include <iostream> +#include "utest_helper.hpp" + +void compiler_long_not_vec8(void) +{ + const size_t n = 64; + const int v = 8; + int64_t src[n * v]; + + // Setup kernel and buffers + OCL_CREATE_KERNEL_FROM_FILE("compiler_long_not", "compiler_long_not_vec8"); + OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(int64_t) * v, NULL); + OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(int64_t) * v, NULL); + OCL_CREATE_BUFFER(buf[2], 0, n * sizeof(int64_t) * v, NULL); + OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]); + OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]); + globals[0] = n; + locals[0] = 16; + + for (int32_t i = 0; i < (int32_t) n*v; ++i) { + if (i % 3 == 0) + src[i] = 0x0UL; + else + src[i] = ((int64_t)rand() << 32) + rand(); + + // printf(" 0x%lx", src[i]); + } + + OCL_MAP_BUFFER(0); + memcpy(buf_data[0], src, sizeof(int64_t) * n * v); + OCL_UNMAP_BUFFER(0); + + // Run the kernel on GPU + OCL_NDRANGE(1); + uint64_t res; + + // Compare + OCL_MAP_BUFFER(1); + for (int32_t i = 0; i < (int32_t) n*v; ++i) { + res = 0xffffffffffffffffUL; + if (src[i]) + res = 0x0; + + OCL_ASSERT(((uint64_t *)(buf_data[1]))[i] == res); + //printf("ref is 0x%lx, result is 0x%lx\n", res, ((int64_t *)(buf_data[1]))[i]); + } + OCL_UNMAP_BUFFER(1); +} + +MAKE_UTEST_FROM_FUNCTION(compiler_long_not_vec8); |