blob: 13266bc7a0585feeea74bfd9736b7974b89b2ebc [file] [log] [blame]
Sven van Haastregtaf1c2302019-06-19 12:48:22 +00001// RUN: %clang_cc1 %s -triple spir -verify -pedantic -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -DNO_HEADER
2// RUN: %clang_cc1 %s -triple spir -verify -pedantic -fsyntax-only -cl-std=CL2.0 -fdeclare-opencl-builtins -finclude-default-header
Sven van Haastregtb21a3652019-08-19 11:56:03 +00003// expected-no-diagnostics
Sven van Haastregt79a222f2019-06-03 09:39:11 +00004
5// Test the -fdeclare-opencl-builtins option.
6
Sven van Haastregtaf1c2302019-06-19 12:48:22 +00007// Provide typedefs when invoking clang without -finclude-default-header.
8#ifdef NO_HEADER
Sven van Haastregtb21a3652019-08-19 11:56:03 +00009typedef char char2 __attribute__((ext_vector_type(2)));
10typedef char char4 __attribute__((ext_vector_type(4)));
Sven van Haastregt79a222f2019-06-03 09:39:11 +000011typedef float float4 __attribute__((ext_vector_type(4)));
Sven van Haastregt79a222f2019-06-03 09:39:11 +000012typedef int int2 __attribute__((ext_vector_type(2)));
Sven van Haastregtb21a3652019-08-19 11:56:03 +000013typedef int int4 __attribute__((ext_vector_type(4)));
14typedef long long2 __attribute__((ext_vector_type(2)));
Sven van Haastregt79a222f2019-06-03 09:39:11 +000015typedef unsigned int uint;
16typedef __SIZE_TYPE__ size_t;
Sven van Haastregtaf1c2302019-06-19 12:48:22 +000017#endif
Sven van Haastregt79a222f2019-06-03 09:39:11 +000018
Sven van Haastregtcc0ba282019-08-20 12:21:03 +000019kernel void test_pointers(volatile global void *global_p, global const int4 *a) {
20 int i;
21 unsigned int ui;
22
23 prefetch(a, 2);
24
25 atom_add((volatile __global int *)global_p, i);
26 atom_cmpxchg((volatile __global unsigned int *)global_p, ui, ui);
27}
28
Sven van Haastregtb21a3652019-08-19 11:56:03 +000029kernel void basic_conversion() {
30 double d;
31 float f;
32 char2 c2;
33 long2 l2;
34 float4 f4;
35 int4 i4;
36
37 f = convert_float(d);
38 d = convert_double_sat_rtp(f);
39 l2 = convert_long2_rtz(c2);
40 i4 = convert_int4_sat(f4);
Sven van Haastregt79a222f2019-06-03 09:39:11 +000041}
42
Sven van Haastregtb21a3652019-08-19 11:56:03 +000043char4 test_int(char c, char4 c4) {
44 char m = max(c, c);
45 char4 m4 = max(c4, c4);
46 return max(c4, c);
Sven van Haastregt79a222f2019-06-03 09:39:11 +000047}
48
49kernel void basic_subgroup(global uint *out) {
50 out[0] = get_sub_group_size();
Sven van Haastregt79a222f2019-06-03 09:39:11 +000051}