1 /* { dg-do compile { target powerpc*-*-* } } */
2 /* { dg-require-effective-target powerpc_altivec_ok } */
3 /* { dg-options "-maltivec" } */
4 
5 /* Program to test the vector_size attribute.  This needs to run on a
6    target that has vectors, so use AltiVec.  */
7 
8 #define vector __attribute__((vector_size(16)))
9 
10 vector int foobar;
11 
12 /* Only floats and integrals allowed.  We don't care if they map to SIs.  */
13 struct X { int frances; };
14 vector struct X hotdog;	/* { dg-error "invalid vector type" } */
15 
16 /* Arrays of vectors.  */
17 vector char b[10], ouch;
18 
19 /* Pointers of vectors.  */
20 vector short *shoe, polish;
21 
22 int xxx[sizeof(foobar) == 16 ? 69 : -1];
23 
24 int nc17[sizeof(shoe) == sizeof (char *) ? 69 : -1];
25 
26 void
code()27 code ()
28 {
29   *shoe = polish;
30   b[1] = ouch;
31 }
32 
33 vector short
hoop()34 hoop ()
35 {
36   return polish;
37 }
38