| 1 | // RUN: %clang_cc1 %s -triple=powerpc-apple-darwin8 -target-feature +altivec -verify -pedantic -fsyntax-only |
| 2 | |
| 3 | typedef int v4 __attribute((vector_size(16))); |
| 4 | typedef short v8 __attribute((vector_size(16))); |
| 5 | |
| 6 | v8 foo(void) { |
| 7 | v8 a; |
| 8 | v4 b; |
| 9 | a = (v8){4, 2}; |
| 10 | b = (v4)(5, 6, 7, 8, 9); // expected-warning {{excess elements in vector initializer}} |
| 11 | b = (v4)(5, 6, 8, 8.0f); |
| 12 | |
| 13 | vector int vi; |
| 14 | vi = (vector int)(1); |
| 15 | vi = (vector int)(1, 2); // expected-error {{number of elements must be either one or match the size of the vector}} |
| 16 | vi = (vector int)(1, 2, 3, 4); |
| 17 | vi = (vector int)(1, 2, 3, 4, 5); // expected-warning {{excess elements in vector initializer}} |
| 18 | vi = (vector int){1}; |
| 19 | vi = (vector int){1, 2}; |
| 20 | vi = (vector int){1, 2, 3, 4, 5}; // expected-warning {{excess elements in vector initializer}} |
| 21 | vector float vf; |
| 22 | vf = (vector float)(1.0); |
| 23 | |
| 24 | return (v8){0, 1, 2, 3, 1, 2, 3, 4}; |
| 25 | |
| 26 | // FIXME: test that (type)(fn)(args) still works with -maltivec |
| 27 | // FIXME: test that c++ overloaded commas still work -maltivec |
| 28 | } |
| 29 | |
| 30 | void __attribute__((__overloadable__)) f(v4 a) |
| 31 | { |
| 32 | } |
| 33 | |
| 34 | void __attribute__((__overloadable__)) f(int a) |
| 35 | { |
| 36 | } |
| 37 | |
| 38 | void test() |
| 39 | { |
| 40 | v4 vGCC; |
| 41 | vector int vAltiVec; |
| 42 | |
| 43 | f(vAltiVec); |
| 44 | vGCC = vAltiVec; |
| 45 | int res = vGCC > vAltiVec; |
| 46 | vAltiVec = 0 ? vGCC : vGCC; |
| 47 | } |
| 48 | |