altivec-init.c 1.2 KB

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