Please refer compiler_saturate to add all supported data type in one unit test case.
The first patch LGTM, will pend it to your new complete unit test case. Thanks, Zhigang Gong. On Fri, Oct 10, 2014 at 11:05:05AM +0800, xionghu....@intel.com wrote: > From: Luo Xionghu <xionghu....@intel.com> > > Signed-off-by: Luo Xionghu <xionghu....@intel.com> > --- > kernels/compiler_popcount_int.cl | 4 ++++ > kernels/compiler_popcount_short.cl | 4 ++++ > utests/CMakeLists.txt | 2 ++ > utests/compiler_popcount_int.cpp | 32 ++++++++++++++++++++++++++++++++ > utests/compiler_popcount_short.cpp | 32 ++++++++++++++++++++++++++++++++ > 5 files changed, 74 insertions(+) > create mode 100644 kernels/compiler_popcount_int.cl > create mode 100644 kernels/compiler_popcount_short.cl > create mode 100644 utests/compiler_popcount_int.cpp > create mode 100644 utests/compiler_popcount_short.cpp > > diff --git a/kernels/compiler_popcount_int.cl > b/kernels/compiler_popcount_int.cl > new file mode 100644 > index 0000000..b972dbc > --- /dev/null > +++ b/kernels/compiler_popcount_int.cl > @@ -0,0 +1,4 @@ > +kernel void compiler_popcount_int(global int *src, global int *dst) { > + int i = get_global_id(0); > + dst[i] = popcount(src[i]); > +} > diff --git a/kernels/compiler_popcount_short.cl > b/kernels/compiler_popcount_short.cl > new file mode 100644 > index 0000000..e4204c5 > --- /dev/null > +++ b/kernels/compiler_popcount_short.cl > @@ -0,0 +1,4 @@ > +kernel void compiler_popcount_short(global short *src, global short *dst) { > + int i = get_global_id(0); > + dst[i] = popcount(src[i]); > +} > diff --git a/utests/CMakeLists.txt b/utests/CMakeLists.txt > index b45ecf9..2fe6243 100644 > --- a/utests/CMakeLists.txt > +++ b/utests/CMakeLists.txt > @@ -41,6 +41,8 @@ set (utests_sources > compiler_ceil.cpp > compiler_clz_short.cpp > compiler_clz_int.cpp > + compiler_popcount_short.cpp > + compiler_popcount_int.cpp > compiler_convert_uchar_sat.cpp > compiler_copy_buffer.cpp > compiler_copy_image.cpp > diff --git a/utests/compiler_popcount_int.cpp > b/utests/compiler_popcount_int.cpp > new file mode 100644 > index 0000000..a3f675e > --- /dev/null > +++ b/utests/compiler_popcount_int.cpp > @@ -0,0 +1,32 @@ > +#include "utest_helper.hpp" > + > +void compiler_popcount_int(void) > +{ > + const int n = 32; > + > + // Setup kernel and buffers > + OCL_CREATE_KERNEL("compiler_popcount_int"); > + 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] = 16; > + > + OCL_MAP_BUFFER(0); > + ((int*)buf_data[0])[0] = 0; > + for (int32_t i = 1; i < (int32_t) n; ++i) > + ((int*)buf_data[0])[i] = 0xffffffffu >> i; > + OCL_UNMAP_BUFFER(0); > + > + OCL_NDRANGE(1); > + > + OCL_MAP_BUFFER(1); > + OCL_ASSERT(((int*)buf_data[1])[0] == 0); > + for (int i = 1; i < n; ++i){ > + OCL_ASSERT(((int*)buf_data[1])[i] == n-i); > + } > + OCL_UNMAP_BUFFER(1); > +} > + > +MAKE_UTEST_FROM_FUNCTION(compiler_popcount_int); > diff --git a/utests/compiler_popcount_short.cpp > b/utests/compiler_popcount_short.cpp > new file mode 100644 > index 0000000..7aa1ebf > --- /dev/null > +++ b/utests/compiler_popcount_short.cpp > @@ -0,0 +1,32 @@ > +#include "utest_helper.hpp" > + > +void compiler_popcount_short(void) > +{ > + const int n = 16; > + > + // Setup kernel and buffers > + OCL_CREATE_KERNEL("compiler_popcount_short"); > + OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(short), NULL); > + OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(short), 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; > + > + OCL_MAP_BUFFER(0); > + ((short*)buf_data[0])[0] = 0; > + for (int32_t i = 1; i < (int32_t) n; ++i) > + ((short*)buf_data[0])[i] = 0xffffu >> i; > + OCL_UNMAP_BUFFER(0); > + > + OCL_NDRANGE(1); > + > + OCL_MAP_BUFFER(1); > + OCL_ASSERT(((short*)buf_data[1])[0] == 0); > + for (int i = 1; i < n; ++i){ > + OCL_ASSERT(((short*)buf_data[1])[i] == short(n-i) ); > + } > + OCL_UNMAP_BUFFER(1); > +} > + > +MAKE_UTEST_FROM_FUNCTION(compiler_popcount_short); > -- > 1.7.9.5 > > _______________________________________________ > Beignet mailing list > Beignet@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/beignet