Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / gcc.dg / vmx / varargs-1.c
blob596137464835fbeafcf7c22fc202a206e1f868d9
1 #include <altivec.h>
2 #include <stdarg.h>
3 #include <stdio.h>
5 typedef vector unsigned int T;
7 extern void f1(int, ...);
8 extern void f2(int, T, ...);
9 extern void f3(int, T, T, ...);
10 extern void f4(int, T, T, T);
12 void printx(T a)
14 union {
15 T v;
16 unsigned int a[4];
17 } u;
18 u.v = a;
19 printf("%d, %d, %d, %d\n", u.a[0], u.a[1], u.a[2], u.a[3]);
22 void f1(int a, ...)
24 va_list ap;
25 va_start (ap, a);
26 while (a-- > 0)
27 printx(va_arg(ap, T));
28 va_end (ap);
31 void f2(int a, T b, ...)
33 va_list ap;
34 printx(b);
35 a--;
36 va_start (ap, b);
37 while (a-- > 0)
38 printx(va_arg(ap, T));
39 va_end (ap);
42 void f3(int a, T b, T c, ...)
44 va_list ap;
45 printx(b);
46 a--;
47 printx(c);
48 a--;
49 va_start (ap, c);
50 while (a-- > 0)
51 printx(va_arg(ap, T));
52 va_end (ap);
55 void f4(int a, T b, T c,
56 T d)
58 printx(b);
59 a--;
60 printx(c);
61 a--;
62 printx(d);
63 a--;
66 int main()
68 f4 (3,
69 ((T){1,1,1,1}),
70 ((T){2,2,2,2}),
71 ((T){3,3,3,3}));
72 f3 (3,
73 ((T){4,4,4,4}),
74 ((T){5,5,5,5}),
75 ((T){6,6,6,6}));
76 f2 (3,
77 ((T){7,7,7,7}),
78 ((T){8,8,8,8}),
79 ((T){9,9,9,9}));
80 f1 (3,
81 ((T){10,10,10,10}),
82 ((T){11,11,11,11}),
83 ((T){12,12,12,12}));
84 return 0;
87 /* { dg-output "1, 1, 1, 1(\n|\r\n|\r)" }
88 { dg-output "2, 2, 2, 2(\n|\r\n|\r)" }
89 { dg-output "3, 3, 3, 3(\n|\r\n|\r)" }
90 { dg-output "4, 4, 4, 4(\n|\r\n|\r)" }
91 { dg-output "5, 5, 5, 5(\n|\r\n|\r)" }
92 { dg-output "6, 6, 6, 6(\n|\r\n|\r)" }
93 { dg-output "7, 7, 7, 7(\n|\r\n|\r)" }
94 { dg-output "8, 8, 8, 8(\n|\r\n|\r)" }
95 { dg-output "9, 9, 9, 9(\n|\r\n|\r)" }
96 { dg-output "10, 10, 10, 10(\n|\r\n|\r)" }
97 { dg-output "11, 11, 11, 11(\n|\r\n|\r)" }
98 { dg-output "12, 12, 12, 12(\n|\r\n|\r)" }