111
|
1 #include "compat-common.h"
|
|
2
|
|
3 #include "fp2-struct-defs.h"
|
|
4 #include "fp2-struct-check.h"
|
|
5
|
|
6 #define TEST(TYPE) \
|
|
7 TYPE g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE; \
|
|
8 TYPE g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE; \
|
|
9 TYPE g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE; \
|
|
10 TYPE g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE; \
|
|
11 \
|
|
12 extern void init##TYPE (TYPE *p, double x); \
|
|
13 extern void checkg##TYPE (void); \
|
|
14 extern void \
|
|
15 test##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \
|
|
16 TYPE s5, TYPE s6, TYPE s7, TYPE s8, \
|
|
17 TYPE s9, TYPE s10, TYPE s11, TYPE s12, \
|
|
18 TYPE s13, TYPE s14, TYPE s15, TYPE s16); \
|
|
19 extern void testva##TYPE (int n, ...); \
|
|
20 \
|
|
21 void \
|
|
22 test2_##TYPE (TYPE s1, TYPE s2, TYPE s3, TYPE s4, \
|
|
23 TYPE s5, TYPE s6, TYPE s7, TYPE s8) \
|
|
24 { \
|
|
25 test##TYPE (s1, g2s##TYPE, s2, g4s##TYPE, \
|
|
26 s3, g6s##TYPE, s4, g8s##TYPE, \
|
|
27 s5, g10s##TYPE, s6, g12s##TYPE, \
|
|
28 s7, g14s##TYPE, s8, g16s##TYPE); \
|
|
29 } \
|
|
30 \
|
|
31 void \
|
|
32 testit##TYPE (void) \
|
|
33 { \
|
|
34 DEBUG_FPUTS (#TYPE); \
|
|
35 DEBUG_FPUTS (" init: "); \
|
|
36 init##TYPE ( &g1s##TYPE, (double)1); \
|
|
37 init##TYPE ( &g2s##TYPE, (double)2); \
|
|
38 init##TYPE ( &g3s##TYPE, (double)3); \
|
|
39 init##TYPE ( &g4s##TYPE, (double)4); \
|
|
40 init##TYPE ( &g5s##TYPE, (double)5); \
|
|
41 init##TYPE ( &g6s##TYPE, (double)6); \
|
|
42 init##TYPE ( &g7s##TYPE, (double)7); \
|
|
43 init##TYPE ( &g8s##TYPE, (double)8); \
|
|
44 init##TYPE ( &g9s##TYPE, (double)9); \
|
|
45 init##TYPE (&g10s##TYPE, (double)10); \
|
|
46 init##TYPE (&g11s##TYPE, (double)11); \
|
|
47 init##TYPE (&g12s##TYPE, (double)12); \
|
|
48 init##TYPE (&g13s##TYPE, (double)13); \
|
|
49 init##TYPE (&g14s##TYPE, (double)14); \
|
|
50 init##TYPE (&g15s##TYPE, (double)15); \
|
|
51 init##TYPE (&g16s##TYPE, (double)16); \
|
|
52 checkg##TYPE (); \
|
|
53 DEBUG_NL; \
|
|
54 DEBUG_FPUTS (#TYPE); \
|
|
55 DEBUG_FPUTS (" test: "); \
|
|
56 test##TYPE (g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
57 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
58 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
|
|
59 g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \
|
|
60 DEBUG_NL; \
|
|
61 DEBUG_FPUTS (#TYPE); \
|
|
62 DEBUG_FPUTS (" testva:"); \
|
|
63 DEBUG_NL; \
|
|
64 testva##TYPE (1, \
|
|
65 g1s##TYPE); \
|
|
66 DEBUG_NL; \
|
|
67 testva##TYPE (2, \
|
|
68 g1s##TYPE, g2s##TYPE); \
|
|
69 DEBUG_NL; \
|
|
70 testva##TYPE (3, \
|
|
71 g1s##TYPE, g2s##TYPE, g3s##TYPE); \
|
|
72 DEBUG_NL; \
|
|
73 testva##TYPE (4, \
|
|
74 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE); \
|
|
75 DEBUG_NL; \
|
|
76 testva##TYPE (5, \
|
|
77 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
78 g5s##TYPE); \
|
|
79 DEBUG_NL; \
|
|
80 testva##TYPE (6, \
|
|
81 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
82 g5s##TYPE, g6s##TYPE); \
|
|
83 DEBUG_NL; \
|
|
84 testva##TYPE (7, \
|
|
85 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
86 g5s##TYPE, g6s##TYPE, g7s##TYPE); \
|
|
87 DEBUG_NL; \
|
|
88 testva##TYPE (8, \
|
|
89 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
90 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE); \
|
|
91 DEBUG_NL; \
|
|
92 testva##TYPE (9, \
|
|
93 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
94 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
95 g9s##TYPE); \
|
|
96 DEBUG_NL; \
|
|
97 testva##TYPE (10, \
|
|
98 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
99 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
100 g9s##TYPE, g10s##TYPE); \
|
|
101 DEBUG_NL; \
|
|
102 testva##TYPE (11, \
|
|
103 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
104 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
105 g9s##TYPE, g10s##TYPE, g11s##TYPE); \
|
|
106 DEBUG_NL; \
|
|
107 testva##TYPE (12, \
|
|
108 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
109 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
110 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE); \
|
|
111 DEBUG_NL; \
|
|
112 testva##TYPE (13, \
|
|
113 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
114 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
115 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
|
|
116 g13s##TYPE); \
|
|
117 DEBUG_NL; \
|
|
118 testva##TYPE (14, \
|
|
119 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
120 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
121 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
|
|
122 g13s##TYPE, g14s##TYPE); \
|
|
123 DEBUG_NL; \
|
|
124 testva##TYPE (15, \
|
|
125 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
126 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
127 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
|
|
128 g13s##TYPE, g14s##TYPE, g15s##TYPE); \
|
|
129 DEBUG_NL; \
|
|
130 testva##TYPE (16, \
|
|
131 g1s##TYPE, g2s##TYPE, g3s##TYPE, g4s##TYPE, \
|
|
132 g5s##TYPE, g6s##TYPE, g7s##TYPE, g8s##TYPE, \
|
|
133 g9s##TYPE, g10s##TYPE, g11s##TYPE, g12s##TYPE, \
|
|
134 g13s##TYPE, g14s##TYPE, g15s##TYPE, g16s##TYPE); \
|
|
135 DEBUG_NL; \
|
|
136 DEBUG_FPUTS (#TYPE); \
|
|
137 DEBUG_FPUTS (" test2: "); \
|
|
138 test2_##TYPE (g1s##TYPE, g3s##TYPE, g5s##TYPE, g7s##TYPE, \
|
|
139 g9s##TYPE, g11s##TYPE, g13s##TYPE, g15s##TYPE); \
|
|
140 DEBUG_NL; \
|
|
141 }
|
|
142
|
|
143 TEST(Sfd)
|
|
144 TEST(Sfl)
|
|
145 TEST(Sdf)
|
|
146 TEST(Sdl)
|
|
147 TEST(Slf)
|
|
148 TEST(Sld)
|
|
149 TEST(Sfdl)
|
|
150 TEST(Sfld)
|
|
151 TEST(Sdfl)
|
|
152 TEST(Sdlf)
|
|
153 TEST(Slfd)
|
|
154 TEST(Sldf)
|
|
155
|
|
156 #undef T
|
|
157
|
|
158 void
|
|
159 struct_by_value_10_x ()
|
|
160 {
|
|
161 DEBUG_INIT
|
|
162
|
|
163 #define T(TYPE) testit##TYPE ();
|
|
164
|
|
165 T(Sfd)
|
|
166 T(Sfl)
|
|
167 T(Sdf)
|
|
168 T(Sdl)
|
|
169 T(Slf)
|
|
170 T(Sld)
|
|
171 T(Sfdl)
|
|
172 T(Sfld)
|
|
173 T(Sdfl)
|
|
174 T(Sdlf)
|
|
175 T(Slfd)
|
|
176 T(Sldf)
|
|
177
|
|
178 DEBUG_FINI
|
|
179
|
|
180 if (fails != 0)
|
|
181 abort ();
|
|
182
|
|
183 #undef T
|
|
184 }
|