1*1f21f64aSMarius Strobl 
2*1f21f64aSMarius Strobl /*
3*1f21f64aSMarius Strobl ===============================================================================
4*1f21f64aSMarius Strobl 
5*1f21f64aSMarius Strobl This C source file is part of TestFloat, Release 2a, a package of programs
6*1f21f64aSMarius Strobl for testing the correctness of floating-point arithmetic complying to the
7*1f21f64aSMarius Strobl IEC/IEEE Standard for Floating-Point.
8*1f21f64aSMarius Strobl 
9*1f21f64aSMarius Strobl Written by John R. Hauser.  More information is available through the Web
10*1f21f64aSMarius Strobl page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
11*1f21f64aSMarius Strobl 
12*1f21f64aSMarius Strobl THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE.  Although reasonable effort
13*1f21f64aSMarius Strobl has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
14*1f21f64aSMarius Strobl TIMES RESULT IN INCORRECT BEHAVIOR.  USE OF THIS SOFTWARE IS RESTRICTED TO
15*1f21f64aSMarius Strobl PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
16*1f21f64aSMarius Strobl AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
17*1f21f64aSMarius Strobl 
18*1f21f64aSMarius Strobl Derivative works are acceptable, even for commercial purposes, so long as
19*1f21f64aSMarius Strobl (1) they include prominent notice that the work is derivative, and (2) they
20*1f21f64aSMarius Strobl include prominent notice akin to these four paragraphs for those parts of
21*1f21f64aSMarius Strobl this code that are retained.
22*1f21f64aSMarius Strobl 
23*1f21f64aSMarius Strobl ===============================================================================
24*1f21f64aSMarius Strobl */
25*1f21f64aSMarius Strobl 
26*1f21f64aSMarius Strobl #include "milieu.h"
27*1f21f64aSMarius Strobl #include "softfloat.h"
28*1f21f64aSMarius Strobl #include "testCases.h"
29*1f21f64aSMarius Strobl #include "testLoops.h"
30*1f21f64aSMarius Strobl #include "systmodes.h"
31*1f21f64aSMarius Strobl #include "systflags.h"
32*1f21f64aSMarius Strobl #include "systfloat.h"
33*1f21f64aSMarius Strobl #include "testFunction.h"
34*1f21f64aSMarius Strobl 
35*1f21f64aSMarius Strobl const functionT functions[ NUM_FUNCTIONS ] = {
36*1f21f64aSMarius Strobl     { 0, 0, 0, 0 },
37*1f21f64aSMarius Strobl     { "int32_to_float32",                1, FALSE, TRUE  },
38*1f21f64aSMarius Strobl     { "int32_to_float64",                1, FALSE, FALSE },
39*1f21f64aSMarius Strobl     { "int32_to_floatx80",               1, FALSE, FALSE },
40*1f21f64aSMarius Strobl     { "int32_to_float128",               1, FALSE, FALSE },
41*1f21f64aSMarius Strobl     { "int64_to_float32",                1, FALSE, TRUE  },
42*1f21f64aSMarius Strobl     { "int64_to_float64",                1, FALSE, TRUE  },
43*1f21f64aSMarius Strobl     { "int64_to_floatx80",               1, FALSE, FALSE },
44*1f21f64aSMarius Strobl     { "int64_to_float128",               1, FALSE, FALSE },
45*1f21f64aSMarius Strobl     { "float32_to_int32",                1, FALSE, TRUE  },
46*1f21f64aSMarius Strobl     { "float32_to_int32_round_to_zero",  1, FALSE, FALSE },
47*1f21f64aSMarius Strobl     { "float32_to_int64",                1, FALSE, TRUE  },
48*1f21f64aSMarius Strobl     { "float32_to_int64_round_to_zero",  1, FALSE, FALSE },
49*1f21f64aSMarius Strobl     { "float32_to_float64",              1, FALSE, FALSE },
50*1f21f64aSMarius Strobl     { "float32_to_floatx80",             1, FALSE, FALSE },
51*1f21f64aSMarius Strobl     { "float32_to_float128",             1, FALSE, FALSE },
52*1f21f64aSMarius Strobl     { "float32_round_to_int",            1, FALSE, TRUE  },
53*1f21f64aSMarius Strobl     { "float32_add",                     2, FALSE, TRUE  },
54*1f21f64aSMarius Strobl     { "float32_sub",                     2, FALSE, TRUE  },
55*1f21f64aSMarius Strobl     { "float32_mul",                     2, FALSE, TRUE  },
56*1f21f64aSMarius Strobl     { "float32_div",                     2, FALSE, TRUE  },
57*1f21f64aSMarius Strobl     { "float32_rem",                     2, FALSE, FALSE },
58*1f21f64aSMarius Strobl     { "float32_sqrt",                    1, FALSE, TRUE  },
59*1f21f64aSMarius Strobl     { "float32_eq",                      2, FALSE, FALSE },
60*1f21f64aSMarius Strobl     { "float32_le",                      2, FALSE, FALSE },
61*1f21f64aSMarius Strobl     { "float32_lt",                      2, FALSE, FALSE },
62*1f21f64aSMarius Strobl     { "float32_eq_signaling",            2, FALSE, FALSE },
63*1f21f64aSMarius Strobl     { "float32_le_quiet",                2, FALSE, FALSE },
64*1f21f64aSMarius Strobl     { "float32_lt_quiet",                2, FALSE, FALSE },
65*1f21f64aSMarius Strobl     { "float64_to_int32",                1, FALSE, TRUE  },
66*1f21f64aSMarius Strobl     { "float64_to_int32_round_to_zero",  1, FALSE, FALSE },
67*1f21f64aSMarius Strobl     { "float64_to_int64",                1, FALSE, TRUE  },
68*1f21f64aSMarius Strobl     { "float64_to_int64_round_to_zero",  1, FALSE, FALSE },
69*1f21f64aSMarius Strobl     { "float64_to_float32",              1, FALSE, TRUE  },
70*1f21f64aSMarius Strobl     { "float64_to_floatx80",             1, FALSE, FALSE },
71*1f21f64aSMarius Strobl     { "float64_to_float128",             1, FALSE, FALSE },
72*1f21f64aSMarius Strobl     { "float64_round_to_int",            1, FALSE, TRUE  },
73*1f21f64aSMarius Strobl     { "float64_add",                     2, FALSE, TRUE  },
74*1f21f64aSMarius Strobl     { "float64_sub",                     2, FALSE, TRUE  },
75*1f21f64aSMarius Strobl     { "float64_mul",                     2, FALSE, TRUE  },
76*1f21f64aSMarius Strobl     { "float64_div",                     2, FALSE, TRUE  },
77*1f21f64aSMarius Strobl     { "float64_rem",                     2, FALSE, FALSE },
78*1f21f64aSMarius Strobl     { "float64_sqrt",                    1, FALSE, TRUE  },
79*1f21f64aSMarius Strobl     { "float64_eq",                      2, FALSE, FALSE },
80*1f21f64aSMarius Strobl     { "float64_le",                      2, FALSE, FALSE },
81*1f21f64aSMarius Strobl     { "float64_lt",                      2, FALSE, FALSE },
82*1f21f64aSMarius Strobl     { "float64_eq_signaling",            2, FALSE, FALSE },
83*1f21f64aSMarius Strobl     { "float64_le_quiet",                2, FALSE, FALSE },
84*1f21f64aSMarius Strobl     { "float64_lt_quiet",                2, FALSE, FALSE },
85*1f21f64aSMarius Strobl     { "floatx80_to_int32",               1, FALSE, TRUE  },
86*1f21f64aSMarius Strobl     { "floatx80_to_int32_round_to_zero", 1, FALSE, FALSE },
87*1f21f64aSMarius Strobl     { "floatx80_to_int64",               1, FALSE, TRUE  },
88*1f21f64aSMarius Strobl     { "floatx80_to_int64_round_to_zero", 1, FALSE, FALSE },
89*1f21f64aSMarius Strobl     { "floatx80_to_float32",             1, FALSE, TRUE  },
90*1f21f64aSMarius Strobl     { "floatx80_to_float64",             1, FALSE, TRUE  },
91*1f21f64aSMarius Strobl     { "floatx80_to_float128",            1, FALSE, FALSE },
92*1f21f64aSMarius Strobl     { "floatx80_round_to_int",           1, FALSE, TRUE  },
93*1f21f64aSMarius Strobl     { "floatx80_add",                    2, TRUE,  TRUE  },
94*1f21f64aSMarius Strobl     { "floatx80_sub",                    2, TRUE,  TRUE  },
95*1f21f64aSMarius Strobl     { "floatx80_mul",                    2, TRUE,  TRUE  },
96*1f21f64aSMarius Strobl     { "floatx80_div",                    2, TRUE,  TRUE  },
97*1f21f64aSMarius Strobl     { "floatx80_rem",                    2, FALSE, FALSE },
98*1f21f64aSMarius Strobl     { "floatx80_sqrt",                   1, TRUE,  TRUE  },
99*1f21f64aSMarius Strobl     { "floatx80_eq",                     2, FALSE, FALSE },
100*1f21f64aSMarius Strobl     { "floatx80_le",                     2, FALSE, FALSE },
101*1f21f64aSMarius Strobl     { "floatx80_lt",                     2, FALSE, FALSE },
102*1f21f64aSMarius Strobl     { "floatx80_eq_signaling",           2, FALSE, FALSE },
103*1f21f64aSMarius Strobl     { "floatx80_le_quiet",               2, FALSE, FALSE },
104*1f21f64aSMarius Strobl     { "floatx80_lt_quiet",               2, FALSE, FALSE },
105*1f21f64aSMarius Strobl     { "float128_to_int32",               1, FALSE, TRUE  },
106*1f21f64aSMarius Strobl     { "float128_to_int32_round_to_zero", 1, FALSE, FALSE },
107*1f21f64aSMarius Strobl     { "float128_to_int64",               1, FALSE, TRUE  },
108*1f21f64aSMarius Strobl     { "float128_to_int64_round_to_zero", 1, FALSE, FALSE },
109*1f21f64aSMarius Strobl     { "float128_to_float32",             1, FALSE, TRUE  },
110*1f21f64aSMarius Strobl     { "float128_to_float64",             1, FALSE, TRUE  },
111*1f21f64aSMarius Strobl     { "float128_to_floatx80",            1, FALSE, TRUE  },
112*1f21f64aSMarius Strobl     { "float128_round_to_int",           1, FALSE, TRUE  },
113*1f21f64aSMarius Strobl     { "float128_add",                    2, FALSE, TRUE  },
114*1f21f64aSMarius Strobl     { "float128_sub",                    2, FALSE, TRUE  },
115*1f21f64aSMarius Strobl     { "float128_mul",                    2, FALSE, TRUE  },
116*1f21f64aSMarius Strobl     { "float128_div",                    2, FALSE, TRUE  },
117*1f21f64aSMarius Strobl     { "float128_rem",                    2, FALSE, FALSE },
118*1f21f64aSMarius Strobl     { "float128_sqrt",                   1, FALSE, TRUE  },
119*1f21f64aSMarius Strobl     { "float128_eq",                     2, FALSE, FALSE },
120*1f21f64aSMarius Strobl     { "float128_le",                     2, FALSE, FALSE },
121*1f21f64aSMarius Strobl     { "float128_lt",                     2, FALSE, FALSE },
122*1f21f64aSMarius Strobl     { "float128_eq_signaling",           2, FALSE, FALSE },
123*1f21f64aSMarius Strobl     { "float128_le_quiet",               2, FALSE, FALSE },
124*1f21f64aSMarius Strobl     { "float128_lt_quiet",               2, FALSE, FALSE },
125*1f21f64aSMarius Strobl };
126*1f21f64aSMarius Strobl 
127*1f21f64aSMarius Strobl const flag functionExists[ NUM_FUNCTIONS ] = {
128*1f21f64aSMarius Strobl     0,
129*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT32
130*1f21f64aSMarius Strobl     1,
131*1f21f64aSMarius Strobl #else
132*1f21f64aSMarius Strobl     0,
133*1f21f64aSMarius Strobl #endif
134*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT64
135*1f21f64aSMarius Strobl     1,
136*1f21f64aSMarius Strobl #else
137*1f21f64aSMarius Strobl     0,
138*1f21f64aSMarius Strobl #endif
139*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOATX80
140*1f21f64aSMarius Strobl     1,
141*1f21f64aSMarius Strobl #else
142*1f21f64aSMarius Strobl     0,
143*1f21f64aSMarius Strobl #endif
144*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT128
145*1f21f64aSMarius Strobl     1,
146*1f21f64aSMarius Strobl #else
147*1f21f64aSMarius Strobl     0,
148*1f21f64aSMarius Strobl #endif
149*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT32
150*1f21f64aSMarius Strobl     1,
151*1f21f64aSMarius Strobl #else
152*1f21f64aSMarius Strobl     0,
153*1f21f64aSMarius Strobl #endif
154*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT64
155*1f21f64aSMarius Strobl     1,
156*1f21f64aSMarius Strobl #else
157*1f21f64aSMarius Strobl     0,
158*1f21f64aSMarius Strobl #endif
159*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOATX80
160*1f21f64aSMarius Strobl     1,
161*1f21f64aSMarius Strobl #else
162*1f21f64aSMarius Strobl     0,
163*1f21f64aSMarius Strobl #endif
164*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT128
165*1f21f64aSMarius Strobl     1,
166*1f21f64aSMarius Strobl #else
167*1f21f64aSMarius Strobl     0,
168*1f21f64aSMarius Strobl #endif
169*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT32
170*1f21f64aSMarius Strobl     1,
171*1f21f64aSMarius Strobl #else
172*1f21f64aSMarius Strobl     0,
173*1f21f64aSMarius Strobl #endif
174*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT32_ROUND_TO_ZERO
175*1f21f64aSMarius Strobl     1,
176*1f21f64aSMarius Strobl #else
177*1f21f64aSMarius Strobl     0,
178*1f21f64aSMarius Strobl #endif
179*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT64
180*1f21f64aSMarius Strobl     1,
181*1f21f64aSMarius Strobl #else
182*1f21f64aSMarius Strobl     0,
183*1f21f64aSMarius Strobl #endif
184*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT64_ROUND_TO_ZERO
185*1f21f64aSMarius Strobl     1,
186*1f21f64aSMarius Strobl #else
187*1f21f64aSMarius Strobl     0,
188*1f21f64aSMarius Strobl #endif
189*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOAT64
190*1f21f64aSMarius Strobl     1,
191*1f21f64aSMarius Strobl #else
192*1f21f64aSMarius Strobl     0,
193*1f21f64aSMarius Strobl #endif
194*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOATX80
195*1f21f64aSMarius Strobl     1,
196*1f21f64aSMarius Strobl #else
197*1f21f64aSMarius Strobl     0,
198*1f21f64aSMarius Strobl #endif
199*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOAT128
200*1f21f64aSMarius Strobl     1,
201*1f21f64aSMarius Strobl #else
202*1f21f64aSMarius Strobl     0,
203*1f21f64aSMarius Strobl #endif
204*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_ROUND_TO_INT
205*1f21f64aSMarius Strobl     1,
206*1f21f64aSMarius Strobl #else
207*1f21f64aSMarius Strobl     0,
208*1f21f64aSMarius Strobl #endif
209*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_ADD
210*1f21f64aSMarius Strobl     1,
211*1f21f64aSMarius Strobl #else
212*1f21f64aSMarius Strobl     0,
213*1f21f64aSMarius Strobl #endif
214*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_SUB
215*1f21f64aSMarius Strobl     1,
216*1f21f64aSMarius Strobl #else
217*1f21f64aSMarius Strobl     0,
218*1f21f64aSMarius Strobl #endif
219*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_MUL
220*1f21f64aSMarius Strobl     1,
221*1f21f64aSMarius Strobl #else
222*1f21f64aSMarius Strobl     0,
223*1f21f64aSMarius Strobl #endif
224*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_DIV
225*1f21f64aSMarius Strobl     1,
226*1f21f64aSMarius Strobl #else
227*1f21f64aSMarius Strobl     0,
228*1f21f64aSMarius Strobl #endif
229*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_REM
230*1f21f64aSMarius Strobl     1,
231*1f21f64aSMarius Strobl #else
232*1f21f64aSMarius Strobl     0,
233*1f21f64aSMarius Strobl #endif
234*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_SQRT
235*1f21f64aSMarius Strobl     1,
236*1f21f64aSMarius Strobl #else
237*1f21f64aSMarius Strobl     0,
238*1f21f64aSMarius Strobl #endif
239*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_EQ
240*1f21f64aSMarius Strobl     1,
241*1f21f64aSMarius Strobl #else
242*1f21f64aSMarius Strobl     0,
243*1f21f64aSMarius Strobl #endif
244*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LE
245*1f21f64aSMarius Strobl     1,
246*1f21f64aSMarius Strobl #else
247*1f21f64aSMarius Strobl     0,
248*1f21f64aSMarius Strobl #endif
249*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LT
250*1f21f64aSMarius Strobl     1,
251*1f21f64aSMarius Strobl #else
252*1f21f64aSMarius Strobl     0,
253*1f21f64aSMarius Strobl #endif
254*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_EQ_SIGNALING
255*1f21f64aSMarius Strobl     1,
256*1f21f64aSMarius Strobl #else
257*1f21f64aSMarius Strobl     0,
258*1f21f64aSMarius Strobl #endif
259*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LE_QUIET
260*1f21f64aSMarius Strobl     1,
261*1f21f64aSMarius Strobl #else
262*1f21f64aSMarius Strobl     0,
263*1f21f64aSMarius Strobl #endif
264*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LT_QUIET
265*1f21f64aSMarius Strobl     1,
266*1f21f64aSMarius Strobl #else
267*1f21f64aSMarius Strobl     0,
268*1f21f64aSMarius Strobl #endif
269*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT32
270*1f21f64aSMarius Strobl     1,
271*1f21f64aSMarius Strobl #else
272*1f21f64aSMarius Strobl     0,
273*1f21f64aSMarius Strobl #endif
274*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT32_ROUND_TO_ZERO
275*1f21f64aSMarius Strobl     1,
276*1f21f64aSMarius Strobl #else
277*1f21f64aSMarius Strobl     0,
278*1f21f64aSMarius Strobl #endif
279*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT64
280*1f21f64aSMarius Strobl     1,
281*1f21f64aSMarius Strobl #else
282*1f21f64aSMarius Strobl     0,
283*1f21f64aSMarius Strobl #endif
284*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT64_ROUND_TO_ZERO
285*1f21f64aSMarius Strobl     1,
286*1f21f64aSMarius Strobl #else
287*1f21f64aSMarius Strobl     0,
288*1f21f64aSMarius Strobl #endif
289*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOAT32
290*1f21f64aSMarius Strobl     1,
291*1f21f64aSMarius Strobl #else
292*1f21f64aSMarius Strobl     0,
293*1f21f64aSMarius Strobl #endif
294*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOATX80
295*1f21f64aSMarius Strobl     1,
296*1f21f64aSMarius Strobl #else
297*1f21f64aSMarius Strobl     0,
298*1f21f64aSMarius Strobl #endif
299*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOAT128
300*1f21f64aSMarius Strobl     1,
301*1f21f64aSMarius Strobl #else
302*1f21f64aSMarius Strobl     0,
303*1f21f64aSMarius Strobl #endif
304*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_ROUND_TO_INT
305*1f21f64aSMarius Strobl     1,
306*1f21f64aSMarius Strobl #else
307*1f21f64aSMarius Strobl     0,
308*1f21f64aSMarius Strobl #endif
309*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_ADD
310*1f21f64aSMarius Strobl     1,
311*1f21f64aSMarius Strobl #else
312*1f21f64aSMarius Strobl     0,
313*1f21f64aSMarius Strobl #endif
314*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_SUB
315*1f21f64aSMarius Strobl     1,
316*1f21f64aSMarius Strobl #else
317*1f21f64aSMarius Strobl     0,
318*1f21f64aSMarius Strobl #endif
319*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_MUL
320*1f21f64aSMarius Strobl     1,
321*1f21f64aSMarius Strobl #else
322*1f21f64aSMarius Strobl     0,
323*1f21f64aSMarius Strobl #endif
324*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_DIV
325*1f21f64aSMarius Strobl     1,
326*1f21f64aSMarius Strobl #else
327*1f21f64aSMarius Strobl     0,
328*1f21f64aSMarius Strobl #endif
329*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_REM
330*1f21f64aSMarius Strobl     1,
331*1f21f64aSMarius Strobl #else
332*1f21f64aSMarius Strobl     0,
333*1f21f64aSMarius Strobl #endif
334*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_SQRT
335*1f21f64aSMarius Strobl     1,
336*1f21f64aSMarius Strobl #else
337*1f21f64aSMarius Strobl     0,
338*1f21f64aSMarius Strobl #endif
339*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_EQ
340*1f21f64aSMarius Strobl     1,
341*1f21f64aSMarius Strobl #else
342*1f21f64aSMarius Strobl     0,
343*1f21f64aSMarius Strobl #endif
344*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LE
345*1f21f64aSMarius Strobl     1,
346*1f21f64aSMarius Strobl #else
347*1f21f64aSMarius Strobl     0,
348*1f21f64aSMarius Strobl #endif
349*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LT
350*1f21f64aSMarius Strobl     1,
351*1f21f64aSMarius Strobl #else
352*1f21f64aSMarius Strobl     0,
353*1f21f64aSMarius Strobl #endif
354*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_EQ_SIGNALING
355*1f21f64aSMarius Strobl     1,
356*1f21f64aSMarius Strobl #else
357*1f21f64aSMarius Strobl     0,
358*1f21f64aSMarius Strobl #endif
359*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LE_QUIET
360*1f21f64aSMarius Strobl     1,
361*1f21f64aSMarius Strobl #else
362*1f21f64aSMarius Strobl     0,
363*1f21f64aSMarius Strobl #endif
364*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LT_QUIET
365*1f21f64aSMarius Strobl     1,
366*1f21f64aSMarius Strobl #else
367*1f21f64aSMarius Strobl     0,
368*1f21f64aSMarius Strobl #endif
369*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT32
370*1f21f64aSMarius Strobl     1,
371*1f21f64aSMarius Strobl #else
372*1f21f64aSMarius Strobl     0,
373*1f21f64aSMarius Strobl #endif
374*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT32_ROUND_TO_ZERO
375*1f21f64aSMarius Strobl     1,
376*1f21f64aSMarius Strobl #else
377*1f21f64aSMarius Strobl     0,
378*1f21f64aSMarius Strobl #endif
379*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT64
380*1f21f64aSMarius Strobl     1,
381*1f21f64aSMarius Strobl #else
382*1f21f64aSMarius Strobl     0,
383*1f21f64aSMarius Strobl #endif
384*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT64_ROUND_TO_ZERO
385*1f21f64aSMarius Strobl     1,
386*1f21f64aSMarius Strobl #else
387*1f21f64aSMarius Strobl     0,
388*1f21f64aSMarius Strobl #endif
389*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT32
390*1f21f64aSMarius Strobl     1,
391*1f21f64aSMarius Strobl #else
392*1f21f64aSMarius Strobl     0,
393*1f21f64aSMarius Strobl #endif
394*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT64
395*1f21f64aSMarius Strobl     1,
396*1f21f64aSMarius Strobl #else
397*1f21f64aSMarius Strobl     0,
398*1f21f64aSMarius Strobl #endif
399*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT128
400*1f21f64aSMarius Strobl     1,
401*1f21f64aSMarius Strobl #else
402*1f21f64aSMarius Strobl     0,
403*1f21f64aSMarius Strobl #endif
404*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_ROUND_TO_INT
405*1f21f64aSMarius Strobl     1,
406*1f21f64aSMarius Strobl #else
407*1f21f64aSMarius Strobl     0,
408*1f21f64aSMarius Strobl #endif
409*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_ADD
410*1f21f64aSMarius Strobl     1,
411*1f21f64aSMarius Strobl #else
412*1f21f64aSMarius Strobl     0,
413*1f21f64aSMarius Strobl #endif
414*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_SUB
415*1f21f64aSMarius Strobl     1,
416*1f21f64aSMarius Strobl #else
417*1f21f64aSMarius Strobl     0,
418*1f21f64aSMarius Strobl #endif
419*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_MUL
420*1f21f64aSMarius Strobl     1,
421*1f21f64aSMarius Strobl #else
422*1f21f64aSMarius Strobl     0,
423*1f21f64aSMarius Strobl #endif
424*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_DIV
425*1f21f64aSMarius Strobl     1,
426*1f21f64aSMarius Strobl #else
427*1f21f64aSMarius Strobl     0,
428*1f21f64aSMarius Strobl #endif
429*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_REM
430*1f21f64aSMarius Strobl     1,
431*1f21f64aSMarius Strobl #else
432*1f21f64aSMarius Strobl     0,
433*1f21f64aSMarius Strobl #endif
434*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_SQRT
435*1f21f64aSMarius Strobl     1,
436*1f21f64aSMarius Strobl #else
437*1f21f64aSMarius Strobl     0,
438*1f21f64aSMarius Strobl #endif
439*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_EQ
440*1f21f64aSMarius Strobl     1,
441*1f21f64aSMarius Strobl #else
442*1f21f64aSMarius Strobl     0,
443*1f21f64aSMarius Strobl #endif
444*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LE
445*1f21f64aSMarius Strobl     1,
446*1f21f64aSMarius Strobl #else
447*1f21f64aSMarius Strobl     0,
448*1f21f64aSMarius Strobl #endif
449*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LT
450*1f21f64aSMarius Strobl     1,
451*1f21f64aSMarius Strobl #else
452*1f21f64aSMarius Strobl     0,
453*1f21f64aSMarius Strobl #endif
454*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_EQ_SIGNALING
455*1f21f64aSMarius Strobl     1,
456*1f21f64aSMarius Strobl #else
457*1f21f64aSMarius Strobl     0,
458*1f21f64aSMarius Strobl #endif
459*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LE_QUIET
460*1f21f64aSMarius Strobl     1,
461*1f21f64aSMarius Strobl #else
462*1f21f64aSMarius Strobl     0,
463*1f21f64aSMarius Strobl #endif
464*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LT_QUIET
465*1f21f64aSMarius Strobl     1,
466*1f21f64aSMarius Strobl #else
467*1f21f64aSMarius Strobl     0,
468*1f21f64aSMarius Strobl #endif
469*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT32
470*1f21f64aSMarius Strobl     1,
471*1f21f64aSMarius Strobl #else
472*1f21f64aSMarius Strobl     0,
473*1f21f64aSMarius Strobl #endif
474*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT32_ROUND_TO_ZERO
475*1f21f64aSMarius Strobl     1,
476*1f21f64aSMarius Strobl #else
477*1f21f64aSMarius Strobl     0,
478*1f21f64aSMarius Strobl #endif
479*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT64
480*1f21f64aSMarius Strobl     1,
481*1f21f64aSMarius Strobl #else
482*1f21f64aSMarius Strobl     0,
483*1f21f64aSMarius Strobl #endif
484*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT64_ROUND_TO_ZERO
485*1f21f64aSMarius Strobl     1,
486*1f21f64aSMarius Strobl #else
487*1f21f64aSMarius Strobl     0,
488*1f21f64aSMarius Strobl #endif
489*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOAT32
490*1f21f64aSMarius Strobl     1,
491*1f21f64aSMarius Strobl #else
492*1f21f64aSMarius Strobl     0,
493*1f21f64aSMarius Strobl #endif
494*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOAT64
495*1f21f64aSMarius Strobl     1,
496*1f21f64aSMarius Strobl #else
497*1f21f64aSMarius Strobl     0,
498*1f21f64aSMarius Strobl #endif
499*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOATX80
500*1f21f64aSMarius Strobl     1,
501*1f21f64aSMarius Strobl #else
502*1f21f64aSMarius Strobl     0,
503*1f21f64aSMarius Strobl #endif
504*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_ROUND_TO_INT
505*1f21f64aSMarius Strobl     1,
506*1f21f64aSMarius Strobl #else
507*1f21f64aSMarius Strobl     0,
508*1f21f64aSMarius Strobl #endif
509*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_ADD
510*1f21f64aSMarius Strobl     1,
511*1f21f64aSMarius Strobl #else
512*1f21f64aSMarius Strobl     0,
513*1f21f64aSMarius Strobl #endif
514*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_SUB
515*1f21f64aSMarius Strobl     1,
516*1f21f64aSMarius Strobl #else
517*1f21f64aSMarius Strobl     0,
518*1f21f64aSMarius Strobl #endif
519*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_MUL
520*1f21f64aSMarius Strobl     1,
521*1f21f64aSMarius Strobl #else
522*1f21f64aSMarius Strobl     0,
523*1f21f64aSMarius Strobl #endif
524*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_DIV
525*1f21f64aSMarius Strobl     1,
526*1f21f64aSMarius Strobl #else
527*1f21f64aSMarius Strobl     0,
528*1f21f64aSMarius Strobl #endif
529*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_REM
530*1f21f64aSMarius Strobl     1,
531*1f21f64aSMarius Strobl #else
532*1f21f64aSMarius Strobl     0,
533*1f21f64aSMarius Strobl #endif
534*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_SQRT
535*1f21f64aSMarius Strobl     1,
536*1f21f64aSMarius Strobl #else
537*1f21f64aSMarius Strobl     0,
538*1f21f64aSMarius Strobl #endif
539*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_EQ
540*1f21f64aSMarius Strobl     1,
541*1f21f64aSMarius Strobl #else
542*1f21f64aSMarius Strobl     0,
543*1f21f64aSMarius Strobl #endif
544*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LE
545*1f21f64aSMarius Strobl     1,
546*1f21f64aSMarius Strobl #else
547*1f21f64aSMarius Strobl     0,
548*1f21f64aSMarius Strobl #endif
549*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LT
550*1f21f64aSMarius Strobl     1,
551*1f21f64aSMarius Strobl #else
552*1f21f64aSMarius Strobl     0,
553*1f21f64aSMarius Strobl #endif
554*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_EQ_SIGNALING
555*1f21f64aSMarius Strobl     1,
556*1f21f64aSMarius Strobl #else
557*1f21f64aSMarius Strobl     0,
558*1f21f64aSMarius Strobl #endif
559*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LE_QUIET
560*1f21f64aSMarius Strobl     1,
561*1f21f64aSMarius Strobl #else
562*1f21f64aSMarius Strobl     0,
563*1f21f64aSMarius Strobl #endif
564*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LT_QUIET
565*1f21f64aSMarius Strobl     1,
566*1f21f64aSMarius Strobl #else
567*1f21f64aSMarius Strobl     0,
568*1f21f64aSMarius Strobl #endif
569*1f21f64aSMarius Strobl };
570*1f21f64aSMarius Strobl 
571*1f21f64aSMarius Strobl static void
testFunctionVariety(uint8 functionCode,int8 roundingPrecision,int8 roundingMode)572*1f21f64aSMarius Strobl  testFunctionVariety(
573*1f21f64aSMarius Strobl      uint8 functionCode, int8 roundingPrecision, int8 roundingMode )
574*1f21f64aSMarius Strobl {
575*1f21f64aSMarius Strobl     uint8 roundingCode;
576*1f21f64aSMarius Strobl 
577*1f21f64aSMarius Strobl     functionName = functions[ functionCode ].name;
578*1f21f64aSMarius Strobl #ifdef FLOATX80
579*1f21f64aSMarius Strobl     if ( roundingPrecision == 32 ) {
580*1f21f64aSMarius Strobl         roundingPrecisionName = "32";
581*1f21f64aSMarius Strobl     }
582*1f21f64aSMarius Strobl     else if ( roundingPrecision == 64 ) {
583*1f21f64aSMarius Strobl         roundingPrecisionName = "64";
584*1f21f64aSMarius Strobl     }
585*1f21f64aSMarius Strobl     else if ( roundingPrecision == 80 ) {
586*1f21f64aSMarius Strobl         roundingPrecisionName = "80";
587*1f21f64aSMarius Strobl     }
588*1f21f64aSMarius Strobl     else {
589*1f21f64aSMarius Strobl         roundingPrecision = 80;
590*1f21f64aSMarius Strobl         roundingPrecisionName = 0;
591*1f21f64aSMarius Strobl     }
592*1f21f64aSMarius Strobl     floatx80_rounding_precision = roundingPrecision;
593*1f21f64aSMarius Strobl     syst_float_set_rounding_precision( roundingPrecision );
594*1f21f64aSMarius Strobl #endif
595*1f21f64aSMarius Strobl     switch ( roundingMode ) {
596*1f21f64aSMarius Strobl      case 0:
597*1f21f64aSMarius Strobl         roundingModeName = 0;
598*1f21f64aSMarius Strobl         roundingCode = float_round_nearest_even;
599*1f21f64aSMarius Strobl         break;
600*1f21f64aSMarius Strobl      case ROUND_NEAREST_EVEN:
601*1f21f64aSMarius Strobl         roundingModeName = "nearest_even";
602*1f21f64aSMarius Strobl         roundingCode = float_round_nearest_even;
603*1f21f64aSMarius Strobl         break;
604*1f21f64aSMarius Strobl      case ROUND_TO_ZERO:
605*1f21f64aSMarius Strobl         roundingModeName = "to_zero";
606*1f21f64aSMarius Strobl         roundingCode = float_round_to_zero;
607*1f21f64aSMarius Strobl         break;
608*1f21f64aSMarius Strobl      case ROUND_DOWN:
609*1f21f64aSMarius Strobl         roundingModeName = "down";
610*1f21f64aSMarius Strobl         roundingCode = float_round_down;
611*1f21f64aSMarius Strobl         break;
612*1f21f64aSMarius Strobl      case ROUND_UP:
613*1f21f64aSMarius Strobl         roundingModeName = "up";
614*1f21f64aSMarius Strobl         roundingCode = float_round_up;
615*1f21f64aSMarius Strobl         break;
616*1f21f64aSMarius Strobl     }
617*1f21f64aSMarius Strobl     float_rounding_mode = roundingCode;
618*1f21f64aSMarius Strobl     syst_float_set_rounding_mode( roundingCode );
619*1f21f64aSMarius Strobl     fputs( "Testing ", stderr );
620*1f21f64aSMarius Strobl     writeFunctionName( stderr );
621*1f21f64aSMarius Strobl     fputs( ".\n", stderr );
622*1f21f64aSMarius Strobl     switch ( functionCode ) {
623*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT32
624*1f21f64aSMarius Strobl      case INT32_TO_FLOAT32:
625*1f21f64aSMarius Strobl         test_a_int32_z_float32( int32_to_float32, syst_int32_to_float32 );
626*1f21f64aSMarius Strobl         break;
627*1f21f64aSMarius Strobl #endif
628*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT64
629*1f21f64aSMarius Strobl      case INT32_TO_FLOAT64:
630*1f21f64aSMarius Strobl         test_a_int32_z_float64( int32_to_float64, syst_int32_to_float64 );
631*1f21f64aSMarius Strobl         break;
632*1f21f64aSMarius Strobl #endif
633*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOATX80
634*1f21f64aSMarius Strobl      case INT32_TO_FLOATX80:
635*1f21f64aSMarius Strobl         test_a_int32_z_floatx80( int32_to_floatx80, syst_int32_to_floatx80 );
636*1f21f64aSMarius Strobl         break;
637*1f21f64aSMarius Strobl #endif
638*1f21f64aSMarius Strobl #ifdef SYST_INT32_TO_FLOAT128
639*1f21f64aSMarius Strobl      case INT32_TO_FLOAT128:
640*1f21f64aSMarius Strobl         test_a_int32_z_float128( int32_to_float128, syst_int32_to_float128 );
641*1f21f64aSMarius Strobl         break;
642*1f21f64aSMarius Strobl #endif
643*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT32
644*1f21f64aSMarius Strobl      case INT64_TO_FLOAT32:
645*1f21f64aSMarius Strobl         test_a_int64_z_float32( int64_to_float32, syst_int64_to_float32 );
646*1f21f64aSMarius Strobl         break;
647*1f21f64aSMarius Strobl #endif
648*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT64
649*1f21f64aSMarius Strobl      case INT64_TO_FLOAT64:
650*1f21f64aSMarius Strobl         test_a_int64_z_float64( int64_to_float64, syst_int64_to_float64 );
651*1f21f64aSMarius Strobl         break;
652*1f21f64aSMarius Strobl #endif
653*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOATX80
654*1f21f64aSMarius Strobl      case INT64_TO_FLOATX80:
655*1f21f64aSMarius Strobl         test_a_int64_z_floatx80( int64_to_floatx80, syst_int64_to_floatx80 );
656*1f21f64aSMarius Strobl         break;
657*1f21f64aSMarius Strobl #endif
658*1f21f64aSMarius Strobl #ifdef SYST_INT64_TO_FLOAT128
659*1f21f64aSMarius Strobl      case INT64_TO_FLOAT128:
660*1f21f64aSMarius Strobl         test_a_int64_z_float128( int64_to_float128, syst_int64_to_float128 );
661*1f21f64aSMarius Strobl         break;
662*1f21f64aSMarius Strobl #endif
663*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT32
664*1f21f64aSMarius Strobl      case FLOAT32_TO_INT32:
665*1f21f64aSMarius Strobl         test_a_float32_z_int32( float32_to_int32, syst_float32_to_int32 );
666*1f21f64aSMarius Strobl         break;
667*1f21f64aSMarius Strobl #endif
668*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT32_ROUND_TO_ZERO
669*1f21f64aSMarius Strobl      case FLOAT32_TO_INT32_ROUND_TO_ZERO:
670*1f21f64aSMarius Strobl         test_a_float32_z_int32(
671*1f21f64aSMarius Strobl             float32_to_int32_round_to_zero,
672*1f21f64aSMarius Strobl             syst_float32_to_int32_round_to_zero
673*1f21f64aSMarius Strobl         );
674*1f21f64aSMarius Strobl         break;
675*1f21f64aSMarius Strobl #endif
676*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT64
677*1f21f64aSMarius Strobl      case FLOAT32_TO_INT64:
678*1f21f64aSMarius Strobl         test_a_float32_z_int64( float32_to_int64, syst_float32_to_int64 );
679*1f21f64aSMarius Strobl         break;
680*1f21f64aSMarius Strobl #endif
681*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_INT64_ROUND_TO_ZERO
682*1f21f64aSMarius Strobl      case FLOAT32_TO_INT64_ROUND_TO_ZERO:
683*1f21f64aSMarius Strobl         test_a_float32_z_int64(
684*1f21f64aSMarius Strobl             float32_to_int64_round_to_zero,
685*1f21f64aSMarius Strobl             syst_float32_to_int64_round_to_zero
686*1f21f64aSMarius Strobl         );
687*1f21f64aSMarius Strobl         break;
688*1f21f64aSMarius Strobl #endif
689*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOAT64
690*1f21f64aSMarius Strobl      case FLOAT32_TO_FLOAT64:
691*1f21f64aSMarius Strobl         test_a_float32_z_float64(
692*1f21f64aSMarius Strobl             float32_to_float64, syst_float32_to_float64 );
693*1f21f64aSMarius Strobl         break;
694*1f21f64aSMarius Strobl #endif
695*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOATX80
696*1f21f64aSMarius Strobl      case FLOAT32_TO_FLOATX80:
697*1f21f64aSMarius Strobl         test_a_float32_z_floatx80(
698*1f21f64aSMarius Strobl             float32_to_floatx80, syst_float32_to_floatx80 );
699*1f21f64aSMarius Strobl         break;
700*1f21f64aSMarius Strobl #endif
701*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_TO_FLOAT128
702*1f21f64aSMarius Strobl      case FLOAT32_TO_FLOAT128:
703*1f21f64aSMarius Strobl         test_a_float32_z_float128(
704*1f21f64aSMarius Strobl             float32_to_float128, syst_float32_to_float128 );
705*1f21f64aSMarius Strobl         break;
706*1f21f64aSMarius Strobl #endif
707*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_ROUND_TO_INT
708*1f21f64aSMarius Strobl      case FLOAT32_ROUND_TO_INT:
709*1f21f64aSMarius Strobl         test_az_float32( float32_round_to_int, syst_float32_round_to_int );
710*1f21f64aSMarius Strobl         break;
711*1f21f64aSMarius Strobl #endif
712*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_ADD
713*1f21f64aSMarius Strobl      case FLOAT32_ADD:
714*1f21f64aSMarius Strobl         test_abz_float32( float32_add, syst_float32_add );
715*1f21f64aSMarius Strobl         break;
716*1f21f64aSMarius Strobl #endif
717*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_SUB
718*1f21f64aSMarius Strobl      case FLOAT32_SUB:
719*1f21f64aSMarius Strobl         test_abz_float32( float32_sub, syst_float32_sub );
720*1f21f64aSMarius Strobl         break;
721*1f21f64aSMarius Strobl #endif
722*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_MUL
723*1f21f64aSMarius Strobl      case FLOAT32_MUL:
724*1f21f64aSMarius Strobl         test_abz_float32( float32_mul, syst_float32_mul );
725*1f21f64aSMarius Strobl         break;
726*1f21f64aSMarius Strobl #endif
727*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_DIV
728*1f21f64aSMarius Strobl      case FLOAT32_DIV:
729*1f21f64aSMarius Strobl         test_abz_float32( float32_div, syst_float32_div );
730*1f21f64aSMarius Strobl         break;
731*1f21f64aSMarius Strobl #endif
732*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_REM
733*1f21f64aSMarius Strobl      case FLOAT32_REM:
734*1f21f64aSMarius Strobl         test_abz_float32( float32_rem, syst_float32_rem );
735*1f21f64aSMarius Strobl         break;
736*1f21f64aSMarius Strobl #endif
737*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_SQRT
738*1f21f64aSMarius Strobl      case FLOAT32_SQRT:
739*1f21f64aSMarius Strobl         test_az_float32( float32_sqrt, syst_float32_sqrt );
740*1f21f64aSMarius Strobl         break;
741*1f21f64aSMarius Strobl #endif
742*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_EQ
743*1f21f64aSMarius Strobl      case FLOAT32_EQ:
744*1f21f64aSMarius Strobl         test_ab_float32_z_flag( float32_eq, syst_float32_eq );
745*1f21f64aSMarius Strobl         break;
746*1f21f64aSMarius Strobl #endif
747*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LE
748*1f21f64aSMarius Strobl      case FLOAT32_LE:
749*1f21f64aSMarius Strobl         test_ab_float32_z_flag( float32_le, syst_float32_le );
750*1f21f64aSMarius Strobl         break;
751*1f21f64aSMarius Strobl #endif
752*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LT
753*1f21f64aSMarius Strobl      case FLOAT32_LT:
754*1f21f64aSMarius Strobl         test_ab_float32_z_flag( float32_lt, syst_float32_lt );
755*1f21f64aSMarius Strobl         break;
756*1f21f64aSMarius Strobl #endif
757*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_EQ_SIGNALING
758*1f21f64aSMarius Strobl      case FLOAT32_EQ_SIGNALING:
759*1f21f64aSMarius Strobl         test_ab_float32_z_flag(
760*1f21f64aSMarius Strobl             float32_eq_signaling, syst_float32_eq_signaling );
761*1f21f64aSMarius Strobl         break;
762*1f21f64aSMarius Strobl #endif
763*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LE_QUIET
764*1f21f64aSMarius Strobl      case FLOAT32_LE_QUIET:
765*1f21f64aSMarius Strobl         test_ab_float32_z_flag( float32_le_quiet, syst_float32_le_quiet );
766*1f21f64aSMarius Strobl         break;
767*1f21f64aSMarius Strobl #endif
768*1f21f64aSMarius Strobl #ifdef SYST_FLOAT32_LT_QUIET
769*1f21f64aSMarius Strobl      case FLOAT32_LT_QUIET:
770*1f21f64aSMarius Strobl         test_ab_float32_z_flag( float32_lt_quiet, syst_float32_lt_quiet );
771*1f21f64aSMarius Strobl         break;
772*1f21f64aSMarius Strobl #endif
773*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT32
774*1f21f64aSMarius Strobl      case FLOAT64_TO_INT32:
775*1f21f64aSMarius Strobl         test_a_float64_z_int32( float64_to_int32, syst_float64_to_int32 );
776*1f21f64aSMarius Strobl         break;
777*1f21f64aSMarius Strobl #endif
778*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT32_ROUND_TO_ZERO
779*1f21f64aSMarius Strobl      case FLOAT64_TO_INT32_ROUND_TO_ZERO:
780*1f21f64aSMarius Strobl         test_a_float64_z_int32(
781*1f21f64aSMarius Strobl             float64_to_int32_round_to_zero,
782*1f21f64aSMarius Strobl             syst_float64_to_int32_round_to_zero
783*1f21f64aSMarius Strobl         );
784*1f21f64aSMarius Strobl         break;
785*1f21f64aSMarius Strobl #endif
786*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT64
787*1f21f64aSMarius Strobl      case FLOAT64_TO_INT64:
788*1f21f64aSMarius Strobl         test_a_float64_z_int64( float64_to_int64, syst_float64_to_int64 );
789*1f21f64aSMarius Strobl         break;
790*1f21f64aSMarius Strobl #endif
791*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_INT64_ROUND_TO_ZERO
792*1f21f64aSMarius Strobl      case FLOAT64_TO_INT64_ROUND_TO_ZERO:
793*1f21f64aSMarius Strobl         test_a_float64_z_int64(
794*1f21f64aSMarius Strobl             float64_to_int64_round_to_zero,
795*1f21f64aSMarius Strobl             syst_float64_to_int64_round_to_zero
796*1f21f64aSMarius Strobl         );
797*1f21f64aSMarius Strobl         break;
798*1f21f64aSMarius Strobl #endif
799*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOAT32
800*1f21f64aSMarius Strobl      case FLOAT64_TO_FLOAT32:
801*1f21f64aSMarius Strobl         test_a_float64_z_float32(
802*1f21f64aSMarius Strobl             float64_to_float32, syst_float64_to_float32 );
803*1f21f64aSMarius Strobl         break;
804*1f21f64aSMarius Strobl #endif
805*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOATX80
806*1f21f64aSMarius Strobl      case FLOAT64_TO_FLOATX80:
807*1f21f64aSMarius Strobl         test_a_float64_z_floatx80(
808*1f21f64aSMarius Strobl             float64_to_floatx80, syst_float64_to_floatx80 );
809*1f21f64aSMarius Strobl         break;
810*1f21f64aSMarius Strobl #endif
811*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_TO_FLOAT128
812*1f21f64aSMarius Strobl      case FLOAT64_TO_FLOAT128:
813*1f21f64aSMarius Strobl         test_a_float64_z_float128(
814*1f21f64aSMarius Strobl             float64_to_float128, syst_float64_to_float128 );
815*1f21f64aSMarius Strobl         break;
816*1f21f64aSMarius Strobl #endif
817*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_ROUND_TO_INT
818*1f21f64aSMarius Strobl      case FLOAT64_ROUND_TO_INT:
819*1f21f64aSMarius Strobl         test_az_float64( float64_round_to_int, syst_float64_round_to_int );
820*1f21f64aSMarius Strobl         break;
821*1f21f64aSMarius Strobl #endif
822*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_ADD
823*1f21f64aSMarius Strobl      case FLOAT64_ADD:
824*1f21f64aSMarius Strobl         test_abz_float64( float64_add, syst_float64_add );
825*1f21f64aSMarius Strobl         break;
826*1f21f64aSMarius Strobl #endif
827*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_SUB
828*1f21f64aSMarius Strobl      case FLOAT64_SUB:
829*1f21f64aSMarius Strobl         test_abz_float64( float64_sub, syst_float64_sub );
830*1f21f64aSMarius Strobl         break;
831*1f21f64aSMarius Strobl #endif
832*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_MUL
833*1f21f64aSMarius Strobl      case FLOAT64_MUL:
834*1f21f64aSMarius Strobl         test_abz_float64( float64_mul, syst_float64_mul );
835*1f21f64aSMarius Strobl         break;
836*1f21f64aSMarius Strobl #endif
837*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_DIV
838*1f21f64aSMarius Strobl      case FLOAT64_DIV:
839*1f21f64aSMarius Strobl         test_abz_float64( float64_div, syst_float64_div );
840*1f21f64aSMarius Strobl         break;
841*1f21f64aSMarius Strobl #endif
842*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_REM
843*1f21f64aSMarius Strobl      case FLOAT64_REM:
844*1f21f64aSMarius Strobl         test_abz_float64( float64_rem, syst_float64_rem );
845*1f21f64aSMarius Strobl         break;
846*1f21f64aSMarius Strobl #endif
847*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_SQRT
848*1f21f64aSMarius Strobl      case FLOAT64_SQRT:
849*1f21f64aSMarius Strobl         test_az_float64( float64_sqrt, syst_float64_sqrt );
850*1f21f64aSMarius Strobl         break;
851*1f21f64aSMarius Strobl #endif
852*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_EQ
853*1f21f64aSMarius Strobl      case FLOAT64_EQ:
854*1f21f64aSMarius Strobl         test_ab_float64_z_flag( float64_eq, syst_float64_eq );
855*1f21f64aSMarius Strobl         break;
856*1f21f64aSMarius Strobl #endif
857*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LE
858*1f21f64aSMarius Strobl      case FLOAT64_LE:
859*1f21f64aSMarius Strobl         test_ab_float64_z_flag( float64_le, syst_float64_le );
860*1f21f64aSMarius Strobl         break;
861*1f21f64aSMarius Strobl #endif
862*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LT
863*1f21f64aSMarius Strobl      case FLOAT64_LT:
864*1f21f64aSMarius Strobl         test_ab_float64_z_flag( float64_lt, syst_float64_lt );
865*1f21f64aSMarius Strobl         break;
866*1f21f64aSMarius Strobl #endif
867*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_EQ_SIGNALING
868*1f21f64aSMarius Strobl      case FLOAT64_EQ_SIGNALING:
869*1f21f64aSMarius Strobl         test_ab_float64_z_flag(
870*1f21f64aSMarius Strobl             float64_eq_signaling, syst_float64_eq_signaling );
871*1f21f64aSMarius Strobl         break;
872*1f21f64aSMarius Strobl #endif
873*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LE_QUIET
874*1f21f64aSMarius Strobl      case FLOAT64_LE_QUIET:
875*1f21f64aSMarius Strobl         test_ab_float64_z_flag( float64_le_quiet, syst_float64_le_quiet );
876*1f21f64aSMarius Strobl         break;
877*1f21f64aSMarius Strobl #endif
878*1f21f64aSMarius Strobl #ifdef SYST_FLOAT64_LT_QUIET
879*1f21f64aSMarius Strobl      case FLOAT64_LT_QUIET:
880*1f21f64aSMarius Strobl         test_ab_float64_z_flag( float64_lt_quiet, syst_float64_lt_quiet );
881*1f21f64aSMarius Strobl         break;
882*1f21f64aSMarius Strobl #endif
883*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT32
884*1f21f64aSMarius Strobl      case FLOATX80_TO_INT32:
885*1f21f64aSMarius Strobl         test_a_floatx80_z_int32( floatx80_to_int32, syst_floatx80_to_int32 );
886*1f21f64aSMarius Strobl         break;
887*1f21f64aSMarius Strobl #endif
888*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT32_ROUND_TO_ZERO
889*1f21f64aSMarius Strobl      case FLOATX80_TO_INT32_ROUND_TO_ZERO:
890*1f21f64aSMarius Strobl         test_a_floatx80_z_int32(
891*1f21f64aSMarius Strobl             floatx80_to_int32_round_to_zero,
892*1f21f64aSMarius Strobl             syst_floatx80_to_int32_round_to_zero
893*1f21f64aSMarius Strobl         );
894*1f21f64aSMarius Strobl         break;
895*1f21f64aSMarius Strobl #endif
896*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT64
897*1f21f64aSMarius Strobl      case FLOATX80_TO_INT64:
898*1f21f64aSMarius Strobl         test_a_floatx80_z_int64( floatx80_to_int64, syst_floatx80_to_int64 );
899*1f21f64aSMarius Strobl         break;
900*1f21f64aSMarius Strobl #endif
901*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_INT64_ROUND_TO_ZERO
902*1f21f64aSMarius Strobl      case FLOATX80_TO_INT64_ROUND_TO_ZERO:
903*1f21f64aSMarius Strobl         test_a_floatx80_z_int64(
904*1f21f64aSMarius Strobl             floatx80_to_int64_round_to_zero,
905*1f21f64aSMarius Strobl             syst_floatx80_to_int64_round_to_zero
906*1f21f64aSMarius Strobl         );
907*1f21f64aSMarius Strobl         break;
908*1f21f64aSMarius Strobl #endif
909*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT32
910*1f21f64aSMarius Strobl      case FLOATX80_TO_FLOAT32:
911*1f21f64aSMarius Strobl         test_a_floatx80_z_float32(
912*1f21f64aSMarius Strobl             floatx80_to_float32, syst_floatx80_to_float32 );
913*1f21f64aSMarius Strobl         break;
914*1f21f64aSMarius Strobl #endif
915*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT64
916*1f21f64aSMarius Strobl      case FLOATX80_TO_FLOAT64:
917*1f21f64aSMarius Strobl         test_a_floatx80_z_float64(
918*1f21f64aSMarius Strobl             floatx80_to_float64, syst_floatx80_to_float64 );
919*1f21f64aSMarius Strobl         break;
920*1f21f64aSMarius Strobl #endif
921*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_TO_FLOAT128
922*1f21f64aSMarius Strobl      case FLOATX80_TO_FLOAT128:
923*1f21f64aSMarius Strobl         test_a_floatx80_z_float128(
924*1f21f64aSMarius Strobl             floatx80_to_float128, syst_floatx80_to_float128 );
925*1f21f64aSMarius Strobl         break;
926*1f21f64aSMarius Strobl #endif
927*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_ROUND_TO_INT
928*1f21f64aSMarius Strobl      case FLOATX80_ROUND_TO_INT:
929*1f21f64aSMarius Strobl         test_az_floatx80( floatx80_round_to_int, syst_floatx80_round_to_int );
930*1f21f64aSMarius Strobl         break;
931*1f21f64aSMarius Strobl #endif
932*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_ADD
933*1f21f64aSMarius Strobl      case FLOATX80_ADD:
934*1f21f64aSMarius Strobl         test_abz_floatx80( floatx80_add, syst_floatx80_add );
935*1f21f64aSMarius Strobl         break;
936*1f21f64aSMarius Strobl #endif
937*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_SUB
938*1f21f64aSMarius Strobl      case FLOATX80_SUB:
939*1f21f64aSMarius Strobl         test_abz_floatx80( floatx80_sub, syst_floatx80_sub );
940*1f21f64aSMarius Strobl         break;
941*1f21f64aSMarius Strobl #endif
942*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_MUL
943*1f21f64aSMarius Strobl      case FLOATX80_MUL:
944*1f21f64aSMarius Strobl         test_abz_floatx80( floatx80_mul, syst_floatx80_mul );
945*1f21f64aSMarius Strobl         break;
946*1f21f64aSMarius Strobl #endif
947*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_DIV
948*1f21f64aSMarius Strobl      case FLOATX80_DIV:
949*1f21f64aSMarius Strobl         test_abz_floatx80( floatx80_div, syst_floatx80_div );
950*1f21f64aSMarius Strobl         break;
951*1f21f64aSMarius Strobl #endif
952*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_REM
953*1f21f64aSMarius Strobl      case FLOATX80_REM:
954*1f21f64aSMarius Strobl         test_abz_floatx80( floatx80_rem, syst_floatx80_rem );
955*1f21f64aSMarius Strobl         break;
956*1f21f64aSMarius Strobl #endif
957*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_SQRT
958*1f21f64aSMarius Strobl      case FLOATX80_SQRT:
959*1f21f64aSMarius Strobl         test_az_floatx80( floatx80_sqrt, syst_floatx80_sqrt );
960*1f21f64aSMarius Strobl         break;
961*1f21f64aSMarius Strobl #endif
962*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_EQ
963*1f21f64aSMarius Strobl      case FLOATX80_EQ:
964*1f21f64aSMarius Strobl         test_ab_floatx80_z_flag( floatx80_eq, syst_floatx80_eq );
965*1f21f64aSMarius Strobl         break;
966*1f21f64aSMarius Strobl #endif
967*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LE
968*1f21f64aSMarius Strobl      case FLOATX80_LE:
969*1f21f64aSMarius Strobl         test_ab_floatx80_z_flag( floatx80_le, syst_floatx80_le );
970*1f21f64aSMarius Strobl         break;
971*1f21f64aSMarius Strobl #endif
972*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LT
973*1f21f64aSMarius Strobl      case FLOATX80_LT:
974*1f21f64aSMarius Strobl         test_ab_floatx80_z_flag( floatx80_lt, syst_floatx80_lt );
975*1f21f64aSMarius Strobl         break;
976*1f21f64aSMarius Strobl #endif
977*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_EQ_SIGNALING
978*1f21f64aSMarius Strobl      case FLOATX80_EQ_SIGNALING:
979*1f21f64aSMarius Strobl         test_ab_floatx80_z_flag(
980*1f21f64aSMarius Strobl             floatx80_eq_signaling, syst_floatx80_eq_signaling );
981*1f21f64aSMarius Strobl         break;
982*1f21f64aSMarius Strobl #endif
983*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LE_QUIET
984*1f21f64aSMarius Strobl      case FLOATX80_LE_QUIET:
985*1f21f64aSMarius Strobl         test_ab_floatx80_z_flag( floatx80_le_quiet, syst_floatx80_le_quiet );
986*1f21f64aSMarius Strobl         break;
987*1f21f64aSMarius Strobl #endif
988*1f21f64aSMarius Strobl #ifdef SYST_FLOATX80_LT_QUIET
989*1f21f64aSMarius Strobl      case FLOATX80_LT_QUIET:
990*1f21f64aSMarius Strobl         test_ab_floatx80_z_flag( floatx80_lt_quiet, syst_floatx80_lt_quiet );
991*1f21f64aSMarius Strobl         break;
992*1f21f64aSMarius Strobl #endif
993*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT32
994*1f21f64aSMarius Strobl      case FLOAT128_TO_INT32:
995*1f21f64aSMarius Strobl         test_a_float128_z_int32( float128_to_int32, syst_float128_to_int32 );
996*1f21f64aSMarius Strobl         break;
997*1f21f64aSMarius Strobl #endif
998*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT32_ROUND_TO_ZERO
999*1f21f64aSMarius Strobl      case FLOAT128_TO_INT32_ROUND_TO_ZERO:
1000*1f21f64aSMarius Strobl         test_a_float128_z_int32(
1001*1f21f64aSMarius Strobl             float128_to_int32_round_to_zero,
1002*1f21f64aSMarius Strobl             syst_float128_to_int32_round_to_zero
1003*1f21f64aSMarius Strobl         );
1004*1f21f64aSMarius Strobl         break;
1005*1f21f64aSMarius Strobl #endif
1006*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT64
1007*1f21f64aSMarius Strobl      case FLOAT128_TO_INT64:
1008*1f21f64aSMarius Strobl         test_a_float128_z_int64( float128_to_int64, syst_float128_to_int64 );
1009*1f21f64aSMarius Strobl         break;
1010*1f21f64aSMarius Strobl #endif
1011*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_INT64_ROUND_TO_ZERO
1012*1f21f64aSMarius Strobl      case FLOAT128_TO_INT64_ROUND_TO_ZERO:
1013*1f21f64aSMarius Strobl         test_a_float128_z_int64(
1014*1f21f64aSMarius Strobl             float128_to_int64_round_to_zero,
1015*1f21f64aSMarius Strobl             syst_float128_to_int64_round_to_zero
1016*1f21f64aSMarius Strobl         );
1017*1f21f64aSMarius Strobl         break;
1018*1f21f64aSMarius Strobl #endif
1019*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOAT32
1020*1f21f64aSMarius Strobl      case FLOAT128_TO_FLOAT32:
1021*1f21f64aSMarius Strobl         test_a_float128_z_float32(
1022*1f21f64aSMarius Strobl             float128_to_float32, syst_float128_to_float32 );
1023*1f21f64aSMarius Strobl         break;
1024*1f21f64aSMarius Strobl #endif
1025*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOAT64
1026*1f21f64aSMarius Strobl      case FLOAT128_TO_FLOAT64:
1027*1f21f64aSMarius Strobl         test_a_float128_z_float64(
1028*1f21f64aSMarius Strobl             float128_to_float64, syst_float128_to_float64 );
1029*1f21f64aSMarius Strobl         break;
1030*1f21f64aSMarius Strobl #endif
1031*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_TO_FLOATX80
1032*1f21f64aSMarius Strobl      case FLOAT128_TO_FLOATX80:
1033*1f21f64aSMarius Strobl         test_a_float128_z_floatx80(
1034*1f21f64aSMarius Strobl             float128_to_floatx80, syst_float128_to_floatx80 );
1035*1f21f64aSMarius Strobl         break;
1036*1f21f64aSMarius Strobl #endif
1037*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_ROUND_TO_INT
1038*1f21f64aSMarius Strobl      case FLOAT128_ROUND_TO_INT:
1039*1f21f64aSMarius Strobl         test_az_float128( float128_round_to_int, syst_float128_round_to_int );
1040*1f21f64aSMarius Strobl         break;
1041*1f21f64aSMarius Strobl #endif
1042*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_ADD
1043*1f21f64aSMarius Strobl      case FLOAT128_ADD:
1044*1f21f64aSMarius Strobl         test_abz_float128( float128_add, syst_float128_add );
1045*1f21f64aSMarius Strobl         break;
1046*1f21f64aSMarius Strobl #endif
1047*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_SUB
1048*1f21f64aSMarius Strobl      case FLOAT128_SUB:
1049*1f21f64aSMarius Strobl         test_abz_float128( float128_sub, syst_float128_sub );
1050*1f21f64aSMarius Strobl         break;
1051*1f21f64aSMarius Strobl #endif
1052*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_MUL
1053*1f21f64aSMarius Strobl      case FLOAT128_MUL:
1054*1f21f64aSMarius Strobl         test_abz_float128( float128_mul, syst_float128_mul );
1055*1f21f64aSMarius Strobl         break;
1056*1f21f64aSMarius Strobl #endif
1057*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_DIV
1058*1f21f64aSMarius Strobl      case FLOAT128_DIV:
1059*1f21f64aSMarius Strobl         test_abz_float128( float128_div, syst_float128_div );
1060*1f21f64aSMarius Strobl         break;
1061*1f21f64aSMarius Strobl #endif
1062*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_REM
1063*1f21f64aSMarius Strobl      case FLOAT128_REM:
1064*1f21f64aSMarius Strobl         test_abz_float128( float128_rem, syst_float128_rem );
1065*1f21f64aSMarius Strobl         break;
1066*1f21f64aSMarius Strobl #endif
1067*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_SQRT
1068*1f21f64aSMarius Strobl      case FLOAT128_SQRT:
1069*1f21f64aSMarius Strobl         test_az_float128( float128_sqrt, syst_float128_sqrt );
1070*1f21f64aSMarius Strobl         break;
1071*1f21f64aSMarius Strobl #endif
1072*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_EQ
1073*1f21f64aSMarius Strobl      case FLOAT128_EQ:
1074*1f21f64aSMarius Strobl         test_ab_float128_z_flag( float128_eq, syst_float128_eq );
1075*1f21f64aSMarius Strobl         break;
1076*1f21f64aSMarius Strobl #endif
1077*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LE
1078*1f21f64aSMarius Strobl      case FLOAT128_LE:
1079*1f21f64aSMarius Strobl         test_ab_float128_z_flag( float128_le, syst_float128_le );
1080*1f21f64aSMarius Strobl         break;
1081*1f21f64aSMarius Strobl #endif
1082*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LT
1083*1f21f64aSMarius Strobl      case FLOAT128_LT:
1084*1f21f64aSMarius Strobl         test_ab_float128_z_flag( float128_lt, syst_float128_lt );
1085*1f21f64aSMarius Strobl         break;
1086*1f21f64aSMarius Strobl #endif
1087*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_EQ_SIGNALING
1088*1f21f64aSMarius Strobl      case FLOAT128_EQ_SIGNALING:
1089*1f21f64aSMarius Strobl         test_ab_float128_z_flag(
1090*1f21f64aSMarius Strobl             float128_eq_signaling, syst_float128_eq_signaling );
1091*1f21f64aSMarius Strobl         break;
1092*1f21f64aSMarius Strobl #endif
1093*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LE_QUIET
1094*1f21f64aSMarius Strobl      case FLOAT128_LE_QUIET:
1095*1f21f64aSMarius Strobl         test_ab_float128_z_flag( float128_le_quiet, syst_float128_le_quiet );
1096*1f21f64aSMarius Strobl         break;
1097*1f21f64aSMarius Strobl #endif
1098*1f21f64aSMarius Strobl #ifdef SYST_FLOAT128_LT_QUIET
1099*1f21f64aSMarius Strobl      case FLOAT128_LT_QUIET:
1100*1f21f64aSMarius Strobl         test_ab_float128_z_flag( float128_lt_quiet, syst_float128_lt_quiet );
1101*1f21f64aSMarius Strobl         break;
1102*1f21f64aSMarius Strobl #endif
1103*1f21f64aSMarius Strobl     }
1104*1f21f64aSMarius Strobl     if ( ( errorStop && anyErrors ) || stop ) exitWithStatus();
1105*1f21f64aSMarius Strobl 
1106*1f21f64aSMarius Strobl }
1107*1f21f64aSMarius Strobl 
1108*1f21f64aSMarius Strobl void
testFunction(uint8 functionCode,int8 roundingPrecisionIn,int8 roundingModeIn)1109*1f21f64aSMarius Strobl  testFunction(
1110*1f21f64aSMarius Strobl      uint8 functionCode, int8 roundingPrecisionIn, int8 roundingModeIn )
1111*1f21f64aSMarius Strobl {
1112*1f21f64aSMarius Strobl     int8 roundingPrecision, roundingMode;
1113*1f21f64aSMarius Strobl 
1114*1f21f64aSMarius Strobl     roundingPrecision = 32;
1115*1f21f64aSMarius Strobl     for (;;) {
1116*1f21f64aSMarius Strobl         if ( ! functions[ functionCode ].roundingPrecision ) {
1117*1f21f64aSMarius Strobl             roundingPrecision = 0;
1118*1f21f64aSMarius Strobl         }
1119*1f21f64aSMarius Strobl         else if ( roundingPrecisionIn ) {
1120*1f21f64aSMarius Strobl             roundingPrecision = roundingPrecisionIn;
1121*1f21f64aSMarius Strobl         }
1122*1f21f64aSMarius Strobl         for ( roundingMode = 1;
1123*1f21f64aSMarius Strobl               roundingMode < NUM_ROUNDINGMODES;
1124*1f21f64aSMarius Strobl               ++roundingMode
1125*1f21f64aSMarius Strobl             ) {
1126*1f21f64aSMarius Strobl             if ( ! functions[ functionCode ].roundingMode ) {
1127*1f21f64aSMarius Strobl                 roundingMode = 0;
1128*1f21f64aSMarius Strobl             }
1129*1f21f64aSMarius Strobl             else if ( roundingModeIn ) {
1130*1f21f64aSMarius Strobl                 roundingMode = roundingModeIn;
1131*1f21f64aSMarius Strobl             }
1132*1f21f64aSMarius Strobl             testFunctionVariety(
1133*1f21f64aSMarius Strobl                 functionCode, roundingPrecision, roundingMode );
1134*1f21f64aSMarius Strobl             if ( roundingModeIn || ! roundingMode ) break;
1135*1f21f64aSMarius Strobl         }
1136*1f21f64aSMarius Strobl         if ( roundingPrecisionIn || ! roundingPrecision ) break;
1137*1f21f64aSMarius Strobl         if ( roundingPrecision == 80 ) {
1138*1f21f64aSMarius Strobl             break;
1139*1f21f64aSMarius Strobl         }
1140*1f21f64aSMarius Strobl         else if ( roundingPrecision == 64 ) {
1141*1f21f64aSMarius Strobl             roundingPrecision = 80;
1142*1f21f64aSMarius Strobl         }
1143*1f21f64aSMarius Strobl         else if ( roundingPrecision == 32 ) {
1144*1f21f64aSMarius Strobl             roundingPrecision = 64;
1145*1f21f64aSMarius Strobl         }
1146*1f21f64aSMarius Strobl     }
1147*1f21f64aSMarius Strobl 
1148*1f21f64aSMarius Strobl }
1149*1f21f64aSMarius Strobl 
1150