111
|
1 #include <stdarg.h>
|
|
2
|
|
3 #include "compat-common.h"
|
|
4
|
|
5 #ifdef SKIP_VA
|
|
6 const int test_va = 0;
|
|
7 #else
|
|
8 const int test_va = 1;
|
|
9 #endif
|
|
10
|
|
11 #define T(N, NAME, TYPE) \
|
|
12 struct S##NAME##N { TYPE i[N]; }; \
|
|
13 \
|
|
14 extern struct S##NAME##N g1s##NAME##N, g2s##NAME##N; \
|
|
15 extern struct S##NAME##N g3s##NAME##N, g4s##NAME##N; \
|
|
16 extern struct S##NAME##N g5s##NAME##N, g6s##NAME##N; \
|
|
17 extern struct S##NAME##N g7s##NAME##N, g8s##NAME##N; \
|
|
18 extern struct S##NAME##N g9s##NAME##N, g10s##NAME##N; \
|
|
19 extern struct S##NAME##N g11s##NAME##N, g12s##NAME##N; \
|
|
20 extern struct S##NAME##N g13s##NAME##N, g14s##NAME##N; \
|
|
21 extern struct S##NAME##N g15s##NAME##N, g16s##NAME##N; \
|
|
22 \
|
|
23 extern void check##NAME##N (struct S##NAME##N *p, int i); \
|
|
24 extern void \
|
|
25 test2_##NAME##N (struct S##NAME##N s1, struct S##NAME##N s2, \
|
|
26 struct S##NAME##N s3, struct S##NAME##N s4, \
|
|
27 struct S##NAME##N s5, struct S##NAME##N s6, \
|
|
28 struct S##NAME##N s7, struct S##NAME##N s8); \
|
|
29 \
|
|
30 void \
|
|
31 init##NAME##N (struct S##NAME##N *p, int i) \
|
|
32 { \
|
|
33 int j; \
|
|
34 for (j = 0; j < N; j++) \
|
|
35 p->i[j] = i + j; \
|
|
36 } \
|
|
37 \
|
|
38 void \
|
|
39 checkg##NAME##N (void) \
|
|
40 { \
|
|
41 check##NAME##N ( &g1s##NAME##N, 1*16); \
|
|
42 check##NAME##N ( &g2s##NAME##N, 2*16); \
|
|
43 check##NAME##N ( &g3s##NAME##N, 3*16); \
|
|
44 check##NAME##N ( &g4s##NAME##N, 4*16); \
|
|
45 check##NAME##N ( &g5s##NAME##N, 5*16); \
|
|
46 check##NAME##N ( &g6s##NAME##N, 6*16); \
|
|
47 check##NAME##N ( &g7s##NAME##N, 7*16); \
|
|
48 check##NAME##N ( &g8s##NAME##N, 8*16); \
|
|
49 check##NAME##N ( &g9s##NAME##N, 9*16); \
|
|
50 check##NAME##N (&g10s##NAME##N, 10*16); \
|
|
51 check##NAME##N (&g11s##NAME##N, 11*16); \
|
|
52 check##NAME##N (&g12s##NAME##N, 12*16); \
|
|
53 check##NAME##N (&g13s##NAME##N, 13*16); \
|
|
54 check##NAME##N (&g14s##NAME##N, 14*16); \
|
|
55 check##NAME##N (&g15s##NAME##N, 15*16); \
|
|
56 check##NAME##N (&g16s##NAME##N, 16*16); \
|
|
57 } \
|
|
58 \
|
|
59 void \
|
|
60 test##NAME##N (struct S##NAME##N s1, struct S##NAME##N s2, \
|
|
61 struct S##NAME##N s3, struct S##NAME##N s4, \
|
|
62 struct S##NAME##N s5, struct S##NAME##N s6, \
|
|
63 struct S##NAME##N s7, struct S##NAME##N s8, \
|
|
64 struct S##NAME##N s9, struct S##NAME##N s10, \
|
|
65 struct S##NAME##N s11, struct S##NAME##N s12, \
|
|
66 struct S##NAME##N s13, struct S##NAME##N s14, \
|
|
67 struct S##NAME##N s15, struct S##NAME##N s16) \
|
|
68 { \
|
|
69 check##NAME##N (&s1, 1*16); \
|
|
70 check##NAME##N (&s2, 2*16); \
|
|
71 check##NAME##N (&s3, 3*16); \
|
|
72 check##NAME##N (&s4, 4*16); \
|
|
73 check##NAME##N (&s5, 5*16); \
|
|
74 check##NAME##N (&s6, 6*16); \
|
|
75 check##NAME##N (&s7, 7*16); \
|
|
76 check##NAME##N (&s8, 8*16); \
|
|
77 check##NAME##N (&s9, 9*16); \
|
|
78 check##NAME##N (&s10, 10*16); \
|
|
79 check##NAME##N (&s11, 11*16); \
|
|
80 check##NAME##N (&s12, 12*16); \
|
|
81 check##NAME##N (&s13, 13*16); \
|
|
82 check##NAME##N (&s14, 14*16); \
|
|
83 check##NAME##N (&s15, 15*16); \
|
|
84 check##NAME##N (&s16, 16*16); \
|
|
85 } \
|
|
86 \
|
|
87 void \
|
|
88 testva##NAME##N (int n, ...) \
|
|
89 { \
|
|
90 int i; \
|
|
91 va_list ap; \
|
|
92 if (test_va) \
|
|
93 { \
|
|
94 va_start (ap, n); \
|
|
95 for (i = 0; i < n; i++) \
|
|
96 { \
|
|
97 struct S##NAME##N t = va_arg (ap, struct S##NAME##N); \
|
|
98 check##NAME##N (&t, (i+1)*16); \
|
|
99 } \
|
|
100 va_end (ap); \
|
|
101 } \
|
|
102 }
|
|
103
|
|
104 #ifndef SKIP_ZERO_ARRAY
|
|
105 T(0, uc, unsigned char)
|
|
106 #endif
|
|
107 T(1, uc, unsigned char)
|
|
108 T(2, uc, unsigned char)
|
|
109 T(3, uc, unsigned char)
|
|
110 T(4, uc, unsigned char)
|
|
111 T(5, uc, unsigned char)
|
|
112 T(6, uc, unsigned char)
|
|
113 T(7, uc, unsigned char)
|
|
114 T(8, uc, unsigned char)
|
|
115 T(9, uc, unsigned char)
|
|
116 T(10, uc, unsigned char)
|
|
117 T(11, uc, unsigned char)
|
|
118 T(12, uc, unsigned char)
|
|
119 T(13, uc, unsigned char)
|
|
120 T(14, uc, unsigned char)
|
|
121 T(15, uc, unsigned char)
|
|
122 #ifndef SKIP_ZERO_ARRAY
|
|
123 T(0, us, unsigned short)
|
|
124 #endif
|
|
125 T(1, us, unsigned short)
|
|
126 T(2, us, unsigned short)
|
|
127 T(3, us, unsigned short)
|
|
128 T(4, us, unsigned short)
|
|
129 T(5, us, unsigned short)
|
|
130 T(6, us, unsigned short)
|
|
131 T(7, us, unsigned short)
|
|
132 T(8, us, unsigned short)
|
|
133 T(9, us, unsigned short)
|
|
134 T(10, us, unsigned short)
|
|
135 T(11, us, unsigned short)
|
|
136 T(12, us, unsigned short)
|
|
137 T(13, us, unsigned short)
|
|
138 T(14, us, unsigned short)
|
|
139 T(15, us, unsigned short)
|
|
140 #ifndef SKIP_ZERO_ARRAY
|
|
141 T(0, ui, unsigned int)
|
|
142 #endif
|
|
143 T(1, ui, unsigned int)
|
|
144 T(2, ui, unsigned int)
|
|
145 T(3, ui, unsigned int)
|
|
146 T(4, ui, unsigned int)
|
|
147 T(5, ui, unsigned int)
|
|
148 T(6, ui, unsigned int)
|
|
149 T(7, ui, unsigned int)
|
|
150 T(8, ui, unsigned int)
|
|
151 T(9, ui, unsigned int)
|
|
152 T(10, ui, unsigned int)
|
|
153 T(11, ui, unsigned int)
|
|
154 T(12, ui, unsigned int)
|
|
155 T(13, ui, unsigned int)
|
|
156 T(14, ui, unsigned int)
|
|
157 T(15, ui, unsigned int)
|