/* APPLE LOCAL file AltiVec */ /* { dg-do run { target powerpc*-*-* } } */ /* { dg-options "-faltivec" } */ #include typedef vector signed int VSI; VSI VI( VSI v2, int gpr3, VSI v3, int gpr4, VSI v4, int gpr5, VSI v5, int gpr6, int gpr7, int gpr8, int gpr9, VSI v6, int gpr10, /* gpr3-gpr10 in registers */ VSI v7, VSI v8, VSI v9, VSI v10, VSI v11, VSI v12, VSI v13, /* All in v2-v13 */ volatile VSI v14, int gpr11, int gpr12, int gpr13, int gpr14, VSI v15, VSI v16, int* sum) { *sum = gpr3 + gpr4 + gpr5 + gpr6 + gpr7 + gpr8 + gpr9 + gpr10 + gpr11 + gpr12 + gpr13 + gpr14; return v2+v3+v4+v5+v6+v7+v8+v9+v10+v11+v12+v13+v14+v15+v16; } extern void abort(); int main() { union u { VSI uv; int val[4]; } union_var; int i; int sum; union_var.uv = VI((VSI){1,1,1,1},3,(VSI){1,1,1,1},4,(VSI){1,1,1,1},5,(VSI){1,1,1,1},6,7,8,9, (VSI){1,1,1,1},10,(VSI){1,1,1,1},(VSI){1,1,1,1},(VSI){1,1,1,1},(VSI){1,1,1,1}, (VSI){1,1,1,1},(VSI){1,1,1,1},(VSI){1,1,1,1},(VSI){1,1,1,1},11,12,13,14, (VSI){1,1,1,1},(VSI){1,1,1,1}, &sum); if (sum != 102) abort(); for (i=0; i < 4; i++) if (union_var.val[i] != 15) abort(); return 0; }