LGTM, will push latter, thanks.
On Fri, Dec 05, 2014 at 03:30:28PM +0800, [email protected] wrote: > From: Luo Xionghu <[email protected]> > > the original case only tested overflow when src1 is 1, add the test of > src1 is max(this could trigger signed type uadd.with.overflow results > incorrect, the fail was fixed in backend already, just update the utest.) > > Signed-off-by: Luo Xionghu <[email protected]> > --- > utests/compiler_overflow.cpp | 52 > ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 52 insertions(+) > > diff --git a/utests/compiler_overflow.cpp b/utests/compiler_overflow.cpp > index 1404cfe..5517b5a 100644 > --- a/utests/compiler_overflow.cpp > +++ b/utests/compiler_overflow.cpp > @@ -56,6 +56,9 @@ void test(const char *kernel_name, int func_type) > > U max = get_max<U>(); > > + // test add and sub overflow when src1 is 1: > + // uadd.with.overflow: max + 1 > + // usub.with.overflow: 0 - 1 > OCL_MAP_BUFFER(0); > for (uint32_t i = 0; i < n; ++i) { > if(func_type == 0) { > @@ -101,6 +104,55 @@ void test(const char *kernel_name, int func_type) > OCL_ASSERT(0); > } > OCL_UNMAP_BUFFER(2); > + > + // test add and sub overflow when src1 is max: > + // uadd.with.overflow: max + max > + // usub.with.overflow: 0 - max > + OCL_MAP_BUFFER(0); > + for (uint32_t i = 0; i < n; ++i) { > + if(func_type == 0) { > + ((T*)buf_data[0])[i].x = max; > + ((T*)buf_data[0])[i].y = max; > + ((T*)buf_data[0])[i].z = max; > + ((T*)buf_data[0])[i].w = i; > + }else if(func_type == 1) { > + ((T*)buf_data[0])[i].x = 0; > + ((T*)buf_data[0])[i].y = 0; > + ((T*)buf_data[0])[i].z = 0; > + ((T*)buf_data[0])[i].w = n+2-i; > + }else > + OCL_ASSERT(0); > + } > + OCL_UNMAP_BUFFER(0); > + OCL_MAP_BUFFER(1); > + for (uint32_t i = 0; i < n; ++i) { > + ((T*)buf_data[1])[i].x = max; > + ((T*)buf_data[1])[i].y = max; > + ((T*)buf_data[1])[i].z = max; > + ((T*)buf_data[1])[i].w = 1; > + } > + OCL_UNMAP_BUFFER(1); > + > + globals[0] = n; > + locals[0] = 16; > + OCL_NDRANGE(1); > + OCL_MAP_BUFFER(2); > + for (uint32_t i = 0; i < 16; ++i) { > + // printf("%u,%u,%u,%u\n", > ((T*)buf_data[2])[i].x,((T*)buf_data[2])[i].y, ((T*)buf_data[2])[i].z, > ((T*)buf_data[2])[i].w ); > + if(func_type == 0) { > + OCL_ASSERT(((T*)buf_data[2])[i].x == max-1); > + OCL_ASSERT(((T*)buf_data[2])[i].y == max); > + OCL_ASSERT(((T*)buf_data[2])[i].z == max); > + OCL_ASSERT(((T*)buf_data[2])[i].w == i+2); > + }else if(func_type == 1) { > + OCL_ASSERT(((T*)buf_data[2])[i].x == 1); > + OCL_ASSERT(((T*)buf_data[2])[i].y == 0); > + OCL_ASSERT(((T*)buf_data[2])[i].z == 0); > + OCL_ASSERT(((T*)buf_data[2])[i].w == n-i); > + }else > + OCL_ASSERT(0); > + } > + OCL_UNMAP_BUFFER(2); > } > > } > -- > 1.7.9.5 > > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
