1 | // RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL2.0 -cl-ext=+cl_khr_subgroups |
2 | |
3 | #pragma OPENCL EXTENSION cl_khr_subgroups : enable |
4 | |
5 | void test1(read_only pipe int p, global int* ptr){ |
6 | int tmp; |
7 | reserve_id_t rid; |
8 | |
9 | // read/write_pipe |
10 | read_pipe(p, &tmp); |
11 | read_pipe(p, ptr); |
12 | read_pipe(tmp, p); // expected-error {{first argument to 'read_pipe' must be a pipe type}} |
13 | read_pipe(p); // expected-error {{invalid number of arguments to function: 'read_pipe'}} |
14 | read_pipe(p, rid, tmp, ptr); |
15 | read_pipe(p, tmp, tmp, ptr); // expected-error {{invalid argument type to function 'read_pipe' (expecting 'reserve_id_t' having 'int')}} |
16 | read_pipe(p, rid, rid, ptr); // expected-error {{invalid argument type to function 'read_pipe' (expecting 'unsigned int' having 'reserve_id_t')}} |
17 | read_pipe(p, tmp); // expected-error {{invalid argument type to function 'read_pipe' (expecting 'int *' having 'int')}} |
18 | write_pipe(p, ptr); // expected-error {{invalid pipe access modifier (expecting write_only)}} |
19 | write_pipe(p, rid, tmp, ptr); // expected-error {{invalid pipe access modifier (expecting write_only)}} |
20 | |
21 | // reserve_read/write_pipe |
22 | reserve_read_pipe(p, tmp); |
23 | reserve_read_pipe(p, ptr); // expected-error{{invalid argument type to function 'reserve_read_pipe' (expecting 'unsigned int' having '__global int *')}} |
24 | work_group_reserve_read_pipe(tmp, tmp); // expected-error{{first argument to 'work_group_reserve_read_pipe' must be a pipe type}} |
25 | sub_group_reserve_write_pipe(p, tmp); // expected-error{{invalid pipe access modifier (expecting write_only)}} |
26 | |
27 | // commit_read/write_pipe |
28 | commit_read_pipe(p, rid); |
29 | commit_read_pipe(tmp, rid); // expected-error{{first argument to 'commit_read_pipe' must be a pipe type}} |
30 | work_group_commit_read_pipe(p, tmp); // expected-error{{invalid argument type to function 'work_group_commit_read_pipe' (expecting 'reserve_id_t' having 'int')}} |
31 | sub_group_commit_write_pipe(p, tmp); // expected-error{{invalid pipe access modifier (expecting write_only)}} |
32 | } |
33 | |
34 | void test2(write_only pipe int p, global int* ptr){ |
35 | int tmp; |
36 | reserve_id_t rid; |
37 | |
38 | // read/write_pipe |
39 | write_pipe(p, &tmp); |
40 | write_pipe(p, ptr); |
41 | write_pipe(tmp, p); // expected-error {{first argument to 'write_pipe' must be a pipe type}} |
42 | write_pipe(p); // expected-error {{invalid number of arguments to function: 'write_pipe'}} |
43 | write_pipe(p, rid, tmp, ptr); |
44 | write_pipe(p, tmp, tmp, ptr); // expected-error {{invalid argument type to function 'write_pipe' (expecting 'reserve_id_t' having 'int')}} |
45 | write_pipe(p, rid, rid, ptr); // expected-error {{invalid argument type to function 'write_pipe' (expecting 'unsigned int' having 'reserve_id_t')}} |
46 | write_pipe(p, tmp); // expected-error {{invalid argument type to function 'write_pipe' (expecting 'int *' having 'int')}} |
47 | read_pipe(p, ptr); // expected-error {{invalid pipe access modifier (expecting read_only)}} |
48 | read_pipe(p, rid, tmp, ptr); // expected-error {{invalid pipe access modifier (expecting read_only)}} |
49 | |
50 | // reserve_read/write_pipe |
51 | reserve_write_pipe(p, tmp); |
52 | reserve_write_pipe(p, ptr); // expected-error{{invalid argument type to function 'reserve_write_pipe' (expecting 'unsigned int' having '__global int *')}} |
53 | work_group_reserve_write_pipe(tmp, tmp); // expected-error{{first argument to 'work_group_reserve_write_pipe' must be a pipe type}} |
54 | sub_group_reserve_read_pipe(p, tmp); // expected-error{{invalid pipe access modifier (expecting read_only)}} |
55 | |
56 | // commit_read/write_pipe |
57 | commit_write_pipe(p, rid); |
58 | commit_write_pipe(tmp, rid); // expected-error{{first argument to 'commit_write_pipe' must be a pipe type}} |
59 | work_group_commit_write_pipe(p, tmp); // expected-error{{invalid argument type to function 'work_group_commit_write_pipe' (expecting 'reserve_id_t' having 'int')}} |
60 | sub_group_commit_read_pipe(p, tmp); // expected-error{{invalid pipe access modifier (expecting read_only)}} |
61 | } |
62 | |
63 | void test3(){ |
64 | int tmp; |
65 | get_pipe_num_packets(tmp); // expected-error {{first argument to 'get_pipe_num_packets' must be a pipe type}} |
66 | get_pipe_max_packets(tmp); // expected-error {{first argument to 'get_pipe_max_packets' must be a pipe type}} |
67 | } |
68 | |