1 // RUN: %clang_cc1 -faltivec -fno-lax-vector-conversions -triple powerpc-unknown-unknown -fcxx-exceptions -verify %s 2 3 typedef int V4i __attribute__((vector_size(16))); 4 test_vec_step(vector short arg1)5void test_vec_step(vector short arg1) { 6 vector bool char vbc; 7 vector signed char vsc; 8 vector unsigned char vuc; 9 vector bool short vbs; 10 vector short vs; 11 vector unsigned short vus; 12 vector pixel vp; 13 vector bool int vbi; 14 vector int vi; 15 vector unsigned int vui; 16 vector float vf; 17 18 vector int *pvi; 19 20 int res1[vec_step(arg1) == 8 ? 1 : -1]; 21 int res2[vec_step(vbc) == 16 ? 1 : -1]; 22 int res3[vec_step(vsc) == 16 ? 1 : -1]; 23 int res4[vec_step(vuc) == 16 ? 1 : -1]; 24 int res5[vec_step(vbs) == 8 ? 1 : -1]; 25 int res6[vec_step(vs) == 8 ? 1 : -1]; 26 int res7[vec_step(vus) == 8 ? 1 : -1]; 27 int res8[vec_step(vp) == 8 ? 1 : -1]; 28 int res9[vec_step(vbi) == 4 ? 1 : -1]; 29 int res10[vec_step(vi) == 4 ? 1 : -1]; 30 int res11[vec_step(vui) == 4 ? 1 : -1]; 31 int res12[vec_step(vf) == 4 ? 1 : -1]; 32 int res13[vec_step(*pvi) == 4 ? 1 : -1]; 33 } 34 f(V4i a)35void f(V4i a) 36 { 37 } 38 test1()39void test1() 40 { 41 V4i vGCC; 42 vector int vAltiVec; 43 44 f(vAltiVec); 45 vGCC = vAltiVec; 46 bool res = vGCC > vAltiVec; 47 vAltiVec = 0 ? vGCC : vGCC; 48 } 49 50 template<typename T> template_f(T param)51void template_f(T param) { 52 param++; 53 } 54 test2()55void test2() 56 { 57 vector int vi; 58 ++vi; 59 vi++; 60 --vi; 61 vi--; 62 vector float vf; 63 vf++; 64 65 ++vi=vi; // expected-warning {{unsequenced}} 66 (++vi)[1]=1; 67 template_f(vi); 68 } 69 70 namespace LValueToRValueConversions { 71 struct Struct { 72 float f(); 73 int n(); 74 }; 75 76 vector float initFloat = (vector float)(Struct().f); // expected-error {{did you mean to call it}} 77 vector int initInt = (vector int)(Struct().n); // expected-error {{did you mean to call it}} 78 } 79 f()80void f() { 81 try {} 82 catch (vector pixel px) {} 83 }; 84