xref: /aosp_15_r20/external/clang/test/SemaOpenCL/vec_step.cl (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
2*67e74705SXin Li
3*67e74705SXin Litypedef int int2 __attribute__((ext_vector_type(2)));
4*67e74705SXin Litypedef int int3 __attribute__((ext_vector_type(3)));
5*67e74705SXin Litypedef int int4 __attribute__((ext_vector_type(4)));
6*67e74705SXin Litypedef int int8 __attribute__((ext_vector_type(8)));
7*67e74705SXin Litypedef int int16 __attribute__((ext_vector_type(16)));
8*67e74705SXin Li
9*67e74705SXin Livoid foo(int3 arg1, int8 arg2) {
10*67e74705SXin Li  int4 auto1;
11*67e74705SXin Li  int16 *auto2;
12*67e74705SXin Li  int auto3;
13*67e74705SXin Li  int2 auto4;
14*67e74705SXin Li  struct S *incomplete1;
15*67e74705SXin Li
16*67e74705SXin Li  int res1[vec_step(arg1) == 4 ? 1 : -1];
17*67e74705SXin Li  int res2[vec_step(arg2) == 8 ? 1 : -1];
18*67e74705SXin Li  int res3[vec_step(auto1) == 4 ? 1 : -1];
19*67e74705SXin Li  int res4[vec_step(*auto2) == 16 ? 1 : -1];
20*67e74705SXin Li  int res5[vec_step(auto3) == 1 ? 1 : -1];
21*67e74705SXin Li  int res6[vec_step(auto4) == 2 ? 1 : -1];
22*67e74705SXin Li  int res7[vec_step(int2) == 2 ? 1 : -1];
23*67e74705SXin Li  int res8[vec_step(int3) == 4 ? 1 : -1];
24*67e74705SXin Li  int res9[vec_step(int4) == 4 ? 1 : -1];
25*67e74705SXin Li  int res10[vec_step(int8) == 8 ? 1 : -1];
26*67e74705SXin Li  int res11[vec_step(int16) == 16 ? 1 : -1];
27*67e74705SXin Li  int res12[vec_step(void) == 1 ? 1 : -1];
28*67e74705SXin Li
29*67e74705SXin Li  int res13 = vec_step(*incomplete1); // expected-error {{'vec_step' requires built-in scalar or vector type, 'struct S' invalid}}
30*67e74705SXin Li  int res14 = vec_step(int16*); // expected-error {{'vec_step' requires built-in scalar or vector type, 'int16 *' invalid}}
31*67e74705SXin Li  int res15 = vec_step(void(void)); // expected-error {{'vec_step' requires built-in scalar or vector type, 'void (void)' invalid}}
32*67e74705SXin Li}
33