summaryrefslogtreecommitdiff
path: root/utests/compiler_switch.cpp
diff options
context:
space:
mode:
authorBenjamin Segovia <bsegovia@bsegovia-i70.sc.intel.com>2012-10-09 20:47:50 +0000
committerBenjamin Segovia <bsegovia@bsegovia-i70.sc.intel.com>2012-10-09 20:47:50 +0000
commit05af153d375c6c539e6359ce21b28c5bd1a3ca4c (patch)
treeaa0fa71cddd717963bad0e1407b764276c2f7c15 /utests/compiler_switch.cpp
parent1c449dbd24614fd59f20764d66b4e502464bf2bd (diff)
downloadbeignet-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.cpp48
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)
+