diff options
author | Benjamin Segovia <bsegovia@bsegovia-i70.sc.intel.com> | 2012-10-09 20:47:50 +0000 |
---|---|---|
committer | Benjamin Segovia <bsegovia@bsegovia-i70.sc.intel.com> | 2012-10-09 20:47:50 +0000 |
commit | 05af153d375c6c539e6359ce21b28c5bd1a3ca4c (patch) | |
tree | aa0fa71cddd717963bad0e1407b764276c2f7c15 /utests/compiler_switch.cpp | |
parent | 1c449dbd24614fd59f20764d66b4e502464bf2bd (diff) | |
download | beignet-05af153d375c6c539e6359ce21b28c5bd1a3ca4c.tar.gz |
Fixed a bug in the flag register allocator
Started to add more brutal test to improve functional regressions. Kind of
needed for big modifications that are going to come
Check switch case lowering functionality
Diffstat (limited to 'utests/compiler_switch.cpp')
-rw-r--r-- | utests/compiler_switch.cpp | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/utests/compiler_switch.cpp b/utests/compiler_switch.cpp new file mode 100644 index 00000000..6e933098 --- /dev/null +++ b/utests/compiler_switch.cpp @@ -0,0 +1,48 @@ +#include "utest_helper.hpp" + +static void cpu_compiler_switch(int *dst, int *src, int get_global_id0) +{ + switch (get_global_id0) { + case 0: dst[get_global_id0] = src[get_global_id0 + 4]; break; + case 1: dst[get_global_id0] = src[get_global_id0 + 14]; break; + case 2: dst[get_global_id0] = src[get_global_id0 + 13]; break; + case 6: dst[get_global_id0] = src[get_global_id0 + 11]; break; + case 7: dst[get_global_id0] = src[get_global_id0 + 10]; break; + case 10: dst[get_global_id0] = src[get_global_id0 + 9]; break; + case 12: dst[get_global_id0] = src[get_global_id0 + 6]; break; + default: dst[get_global_id0] = src[get_global_id0 + 8]; break; + } +} + +static void compiler_switch(void) +{ + const size_t n = 32; + int cpu_dst[32], cpu_src[32]; + + // Setup kernel and buffers + OCL_CREATE_KERNEL("compiler_switch"); + OCL_CREATE_BUFFER(buf[0], 0, n * sizeof(uint32_t), NULL); + OCL_CREATE_BUFFER(buf[1], 0, n * sizeof(uint32_t), NULL); + OCL_SET_ARG(0, sizeof(cl_mem), &buf[0]); + OCL_SET_ARG(1, sizeof(cl_mem), &buf[1]); + globals[0] = 16; + locals[0] = 16; + + OCL_MAP_BUFFER(1); + for (uint32_t i = 0; i < 32; ++i) + cpu_src[i] = ((int32_t*)buf_data[1])[i] = i; + OCL_UNMAP_BUFFER(1); + OCL_NDRANGE(1); + + OCL_MAP_BUFFER(0); + OCL_MAP_BUFFER(1); + for (int i = 0; i < 16; ++i) + cpu_compiler_switch(cpu_dst, cpu_src, i); + for (int i = 0; i < 16; ++i) + OCL_ASSERT(((int32_t*)buf_data[0])[i] == cpu_dst[i]); + OCL_UNMAP_BUFFER(0); + OCL_UNMAP_BUFFER(1); +} + +MAKE_UTEST_FROM_FUNCTION(compiler_switch) + |