1 /* { dg-do compile { target powerpc*-*-linux* } } */ 2 /* { dg-require-effective-target powerpc_altivec_ok } */ 3 /* { dg-options "-maltivec -mno-vsx -std=c++98" } */ 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 28 /* These should be rejected as invalid AltiVec types. */ 29 30 __vector bool vb; /* { dg-error "AltiVec types" } */ 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