summaryrefslogtreecommitdiff
path: root/kernels
diff options
context:
space:
mode:
authorLuo Xionghu <xionghu.luo@intel.com>2014-10-27 11:14:50 +0800
committerZhigang Gong <zhigang.gong@intel.com>2014-10-28 10:14:46 +0800
commit70f4cd18f52d6b7ecd1e9bae3085d1ecd57bf113 (patch)
tree87aff4a97862b9f69bf369d58bc7101274781884 /kernels
parent8a20f3e5e19ec13cc170861d25760e4d00a5d874 (diff)
add utest compiler_overflow for llvm intrinsic function.
this case only runs for uadd_with_over_flow function so far. Signed-off-by: Luo Xionghu <xionghu.luo@intel.com> Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Diffstat (limited to 'kernels')
-rw-r--r--kernels/compiler_overflow.cl20
1 files changed, 20 insertions, 0 deletions
diff --git a/kernels/compiler_overflow.cl b/kernels/compiler_overflow.cl
new file mode 100644
index 00000000..75ed5ce2
--- /dev/null
+++ b/kernels/compiler_overflow.cl
@@ -0,0 +1,20 @@
+#define COMPILER_OVERFLOW(TYPE) \
+ kernel void compiler_overflow_##TYPE (global TYPE* src, global TYPE* dst) \
+{ \
+ __global TYPE* A = &src[get_global_id(0)]; \
+ TYPE B = 1; \
+ *A += B; \
+ TYPE carry = -convert_##TYPE((*A) < B); \
+ \
+ (*A).y += carry.x; \
+ carry.y += ((*A).y < carry.x); \
+ (*A).z += carry.y; \
+ \
+ carry.z += ((*A).z < carry.y); \
+ (*A).w += carry.z; \
+ dst[get_global_id(0)] = src[get_global_id(0)]; \
+}
+
+COMPILER_OVERFLOW(uint4)
+COMPILER_OVERFLOW(ushort4)
+COMPILER_OVERFLOW(uchar4)