1/* { dg-do compile { target powerpc*-*-linux* } } */
2/* { dg-require-effective-target powerpc_altivec_ok } */
3/* { dg-options "-maltivec" } */
4
5/* Valid AltiVec vector types should be accepted with no warnings.  */
6
7__vector char vc;
8__vector unsigned char vuc;
9__vector signed char vsc;
10__vector __bool char vbc;
11__vector short vh;
12__vector signed short vsh;
13__vector unsigned short vuh;
14__vector short int vhi;
15__vector signed short int vshi;
16__vector unsigned short int vuhi;
17__vector __bool short vbh;
18__vector __bool short int vbhi;
19__vector int vi;
20__vector unsigned int vui;
21__vector signed int vsi;
22__vector __bool int vbi;
23__vector unsigned vuj;
24__vector signed vsj;
25__vector __bool vbj;
26__vector float vf;
27__vector _Bool vb;
28
29/* These should be rejected as invalid AltiVec types.  */
30
31__vector long long vll;			/* { dg-error "AltiVec types" "" } */
32__vector unsigned long long vull;	/* { dg-error "AltiVec types" "" } */
33__vector signed long long vsll;		/* { dg-error "AltiVec types" "" } */
34__vector __bool long long vbll;		/* { dg-error "AltiVec types" "" } */
35__vector long long int vlli;		/* { dg-error "AltiVec types" "" } */
36__vector unsigned long long int vulli;	/* { dg-error "AltiVec types" "" } */
37__vector signed long long int vslli;	/* { dg-error "AltiVec types" "" } */
38__vector __bool long long int vblli;	/* { dg-error "AltiVec types" "" } */
39__vector double vd1;			/* { dg-error "AltiVec types" "" } */
40__vector long double vld;		/* { dg-error "AltiVec types" "" } */
41__vector _Complex float vcf;		/* { dg-error "AltiVec types" "" } */
42__vector _Complex double vcd;		/* { dg-error "AltiVec types" "" } */
43__vector _Complex long double vcld;	/* { dg-error "AltiVec types" "" } */
44__vector _Complex signed char vcsc;	/* { dg-error "AltiVec types" "" } */
45__vector _Complex unsigned char vcuc;	/* { dg-error "AltiVec types" "" } */
46__vector _Complex short vcss;		/* { dg-error "AltiVec types" "" } */
47__vector _Complex unsigned short vcus;	/* { dg-error "AltiVec types" "" } */
48__vector _Complex int vcsi;		/* { dg-error "AltiVec types" "" } */
49__vector _Complex unsigned int vcui;	/* { dg-error "AltiVec types" "" } */
50__vector _Complex long vcsl;		/* { dg-error "AltiVec types" "" } */
51__vector _Complex unsigned long vcul;	/* { dg-error "AltiVec types" "" } */
52__vector _Complex long long vcsll;	/* { dg-error "AltiVec types" "" } */
53__vector _Complex unsigned long long vcull; /* { dg-error "AltiVec types" "" } */
54__vector __complex float v_cf;		/* { dg-error "AltiVec types" "" } */
55__vector __complex double v_cd;		/* { dg-error "AltiVec types" "" } */
56__vector __complex long double v_cld;	/* { dg-error "AltiVec types" "" } */
57__vector __complex signed char v_csc;	/* { dg-error "AltiVec types" "" } */
58__vector __complex unsigned char v_cuc;	/* { dg-error "AltiVec types" "" } */
59__vector __complex short v_css;		/* { dg-error "AltiVec types" "" } */
60__vector __complex unsigned short v_cus; /* { dg-error "AltiVec types" "" } */
61__vector __complex int v_csi;		/* { dg-error "AltiVec types" "" } */
62__vector __complex unsigned int v_cui;	/* { dg-error "AltiVec types" "" } */
63__vector __complex long v_csl;		/* { dg-error "AltiVec types" "" } */
64__vector __complex unsigned long v_cul;	/* { dg-error "AltiVec types" "" } */
65__vector __complex long long v_csll;	/* { dg-error "AltiVec types" "" } */
66__vector __complex unsigned long long v_cull; /* { dg-error "AltiVec types" "" } */
67
68/* These should be rejected because the component types are invalid.  We
69   don't care about the actual error messages here.  */
70
71__vector __bool unsigned char vbuc;	/* { dg-error "" "" } */
72__vector __bool signed char vbsc;	/* { dg-error "" "" } */
73__vector __bool unsigned short vbuh;	/* { dg-error "" "" } */
74__vector __bool signed short vbsh;	/* { dg-error "" "" } */
75__vector __bool unsigned int vbui;	/* { dg-error "" "" } */
76__vector __bool signed int vbsi;	/* { dg-error "" "" } */
77__vector __bool unsigned vbuj;		/* { dg-error "" "" } */
78__vector __bool signed vbsj;		/* { dg-error "" "" } */
79__vector signed float vsf;		/* { dg-error "" "" } */
80__vector unsigned float vuf;		/* { dg-error "" "" } */
81__vector short float vsf;		/* { dg-error "" "" } */
82__vector signed double vsd;		/* { dg-error "" "" } */
83__vector unsigned double vud;		/* { dg-error "" "" } */
84__vector short double vsd;		/* { dg-error "" "" } */
85__vector __bool float vbf;		/* { dg-error "" "" } */
86__vector __bool double vbd;		/* { dg-error "" "" } */
87__vector __bool short float blf;	/* { dg-error "" "" } */
88__vector __bool short double vlbd;	/* { dg-error "" "" } */
89
90/* { dg-message "note: previous" "prev vsf" { target *-*-* } 79 } */
91/* { dg-message "note: previous" "prev vsd" { target *-*-* } 82 } */
92