summaryrefslogtreecommitdiff
path: root/test/SemaOpenCL/fdeclare-opencl-builtins.cl
diff options
context:
space:
mode:
Diffstat (limited to 'test/SemaOpenCL/fdeclare-opencl-builtins.cl')
-rw-r--r--test/SemaOpenCL/fdeclare-opencl-builtins.cl50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/SemaOpenCL/fdeclare-opencl-builtins.cl b/test/SemaOpenCL/fdeclare-opencl-builtins.cl
index 590f27353d..6c32e12571 100644
--- a/test/SemaOpenCL/fdeclare-opencl-builtins.cl
+++ b/test/SemaOpenCL/fdeclare-opencl-builtins.cl
@@ -1,10 +1,20 @@
+// RUN: %clang_cc1 %s -triple spir -verify -pedantic -fsyntax-only -cl-std=CL -fdeclare-opencl-builtins -DNO_HEADER
+// RUN: %clang_cc1 %s -triple spir -verify -pedantic -fsyntax-only -cl-std=CL -fdeclare-opencl-builtins -finclude-default-header
+// RUN: %clang_cc1 %s -triple spir -verify -pedantic -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -DNO_HEADER
+// RUN: %clang_cc1 %s -triple spir -verify -pedantic -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -finclude-default-header
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -DNO_HEADER
// RUN: %clang_cc1 %s -triple spir -verify -pedantic -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -finclude-default-header
+
+#if __OPENCL_C_VERSION__ >= CL_VERSION_2_0
// expected-no-diagnostics
+#endif
// Test the -fdeclare-opencl-builtins option.
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
+#if __OPENCL_C_VERSION__ < CL_VERSION_1_2
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#endif
// Provide typedefs when invoking clang without -finclude-default-header.
#ifdef NO_HEADER
@@ -15,7 +25,10 @@ typedef half half4 __attribute__((ext_vector_type(4)));
typedef int int2 __attribute__((ext_vector_type(2)));
typedef int int4 __attribute__((ext_vector_type(4)));
typedef long long2 __attribute__((ext_vector_type(2)));
+typedef unsigned char uchar;
typedef unsigned int uint;
+typedef unsigned long ulong;
+typedef unsigned short ushort;
typedef __SIZE_TYPE__ size_t;
#endif
@@ -60,12 +73,14 @@ kernel void basic_image_readonly(read_only image2d_t image_read_only_image2d) {
res = read_imageh(image_read_only_image2d, sampler, i2);
}
+#if __OPENCL_C_VERSION__ >= CL_VERSION_2_0
kernel void basic_image_readwrite(read_write image3d_t image_read_write_image3d) {
half4 h4;
int4 i4;
write_imageh(image_read_write_image3d, i4, h4);
}
+#endif // __OPENCL_C_VERSION__ >= CL_VERSION_2_0
kernel void basic_image_writeonly(write_only image1d_buffer_t image_write_only_image1d_buffer) {
half4 h4;
@@ -78,4 +93,39 @@ kernel void basic_image_writeonly(write_only image1d_buffer_t image_write_only_i
kernel void basic_subgroup(global uint *out) {
out[0] = get_sub_group_size();
+#if __OPENCL_C_VERSION__ < CL_VERSION_2_0
+// expected-error@-2{{implicit declaration of function 'get_sub_group_size' is invalid in OpenCL}}
+#endif
+}
+
+kernel void basic_vector_data() {
+#if __OPENCL_C_VERSION__ >= CL_VERSION_2_0
+ generic void *generic_p;
+#endif
+ constant void *constant_p;
+ local void *local_p;
+ global void *global_p;
+ private void *private_p;
+ size_t s;
+
+ vload4(s, (const __constant ulong *) constant_p);
+ vload16(s, (const __constant short *) constant_p);
+
+#if __OPENCL_C_VERSION__ >= CL_VERSION_2_0
+ vload3(s, (const __generic ushort *) generic_p);
+ vload16(s, (const __generic uchar *) generic_p);
+#endif
+
+ vload8(s, (const __global long *) global_p);
+ vload2(s, (const __local uint *) local_p);
+ vload16(s, (const __private float *) private_p);
+}
+
+kernel void basic_work_item() {
+ uint ui;
+
+ get_enqueued_local_size(ui);
+#if __OPENCL_C_VERSION__ < CL_VERSION_2_0
+// expected-error@-2{{implicit declaration of function 'get_enqueued_local_size' is invalid in OpenCL}}
+#endif
}