123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- // RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL -fdeclare-opencl-builtins -DNO_HEADER
- // RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL -fdeclare-opencl-builtins -finclude-default-header
- // RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -DNO_HEADER
- // RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL1.2 -fdeclare-opencl-builtins -finclude-default-header
- // RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -DNO_HEADER
- // RUN: %clang_cc1 %s -triple spir -verify -pedantic -Wconversion -Werror -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
- typedef char char2 __attribute__((ext_vector_type(2)));
- typedef char char4 __attribute__((ext_vector_type(4)));
- typedef float float4 __attribute__((ext_vector_type(4)));
- 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
- kernel void test_pointers(volatile global void *global_p, global const int4 *a) {
- int i;
- unsigned int ui;
- prefetch(a, 2);
- atom_add((volatile __global int *)global_p, i);
- atom_cmpxchg((volatile __global unsigned int *)global_p, ui, ui);
- }
- kernel void basic_conversion() {
- double d;
- float f;
- char2 c2;
- long2 l2;
- float4 f4;
- int4 i4;
- f = convert_float(d);
- d = convert_double_sat_rtp(f);
- l2 = convert_long2_rtz(c2);
- i4 = convert_int4_sat(f4);
- }
- char4 test_int(char c, char4 c4) {
- char m = max(c, c);
- char4 m4 = max(c4, c4);
- return max(c4, c);
- }
- kernel void basic_image_readonly(read_only image2d_t image_read_only_image2d) {
- int2 i2;
- sampler_t sampler;
- half4 res;
- float4 resf;
- resf = read_imagef(image_read_only_image2d, i2);
- res = read_imageh(image_read_only_image2d, i2);
- res = read_imageh(image_read_only_image2d, sampler, i2);
- int imgWidth = get_image_width(image_read_only_image2d);
- }
- #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);
- int imgDepth = get_image_depth(image_read_write_image3d);
- }
- #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;
- float4 f4;
- int i;
- write_imagef(image_write_only_image1d_buffer, i, f4);
- write_imageh(image_write_only_image1d_buffer, i, h4);
- }
- 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}}
- // expected-error@-3{{implicit conversion changes signedness: 'int' to 'uint' (aka 'unsigned int')}}
- #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
- }
|