1 // RUN: %clang_builtins %s %librt -o %t && %run %t
2 // REQUIRES: librt_has_comparedf2
3 
4 //===-- cmpdf2_test.c - Test __cmpdf2 -------------------------------------===//
5 //
6 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
7 // See https://llvm.org/LICENSE.txt for license information.
8 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
9 //
10 //===----------------------------------------------------------------------===//
11 //
12 // This file tests single-precision soft-double comparisons for the compiler-rt
13 // library.
14 //
15 //===----------------------------------------------------------------------===//
16 
17 #include <stdio.h>
18 
19 int __eqdf2(double, double);
20 int __gedf2(double, double);
21 int __gtdf2(double, double);
22 int __ledf2(double, double);
23 int __ltdf2(double, double);
24 int __nedf2(double, double);
25 int __unorddf2(double, double);
26 
27 struct TestVector {
28     double a;
29     double b;
30     int eqReference;
31     int geReference;
32     int gtReference;
33     int leReference;
34     int ltReference;
35     int neReference;
36     int unReference;
37 };
38 
39 int test__cmpdf2(const struct TestVector *vector) {
40 
41     if (__eqdf2(vector->a, vector->b) != vector->eqReference) {
42         printf("error in __eqdf2(%a, %a) = %d, expected %d\n",
43                vector->a, vector->b,
44                __eqdf2(vector->a, vector->b),
45                vector->eqReference);
46         return 1;
47     }
48 
49     if (__gedf2(vector->a, vector->b) != vector->geReference) {
50         printf("error in __gedf2(%a, %a) = %d, expected %d\n",
51                vector->a, vector->b,
52                __gedf2(vector->a, vector->b),
53                vector->geReference);
54         return 1;
55     }
56 
57     if (__gtdf2(vector->a, vector->b) != vector->gtReference) {
58         printf("error in __gtdf2(%a, %a) = %d, expected %d\n",
59                vector->a, vector->b,
60                __gtdf2(vector->a, vector->b),
61                vector->gtReference);
62         return 1;
63     }
64 
65     if (__ledf2(vector->a, vector->b) != vector->leReference) {
66         printf("error in __ledf2(%a, %a) = %d, expected %d\n",
67                vector->a, vector->b,
68                __ledf2(vector->a, vector->b),
69                vector->leReference);
70         return 1;
71     }
72 
73     if (__ltdf2(vector->a, vector->b) != vector->ltReference) {
74         printf("error in __ltdf2(%a, %a) = %d, expected %d\n",
75                vector->a, vector->b,
76                __ltdf2(vector->a, vector->b),
77                vector->ltReference);
78         return 1;
79     }
80 
81     if (__nedf2(vector->a, vector->b) != vector->neReference) {
82         printf("error in __nedf2(%a, %a) = %d, expected %d\n",
83                vector->a, vector->b,
84                __nedf2(vector->a, vector->b),
85                vector->neReference);
86         return 1;
87     }
88 
89     if (__unorddf2(vector->a, vector->b) != vector->unReference) {
90         printf("error in __unorddf2(%a, %a) = %d, expected %d\n",
91                vector->a, vector->b,
92                __unorddf2(vector->a, vector->b),
93                vector->unReference);
94         return 1;
95     }
96 
97     return 0;
98 }
99 
100 /*
101 void generateVectors() {
102 
103     const double arguments[] = {
104         __builtin_nan(""),
105         -__builtin_inf(),
106         -0x1.fffffffffffffp1023,
107         -0x1.0000000000001p0
108         -0x1.0000000000000p0,
109         -0x1.fffffffffffffp-1,
110         -0x1.0000000000000p-1022,
111         -0x0.fffffffffffffp-1022,
112         -0x0.0000000000001p-1022,
113         -0.0,
114          0.0,
115          0x0.0000000000001p-1022,
116          0x0.fffffffffffffp-1022,
117          0x1.0000000000000p-1022,
118          0x1.fffffffffffffp-1,
119          0x1.0000000000000p0,
120          0x1.0000000000001p0,
121          0x1.fffffffffffffp1023,
122          __builtin_inf()
123     };
124 
125     int numArguments = sizeof arguments / sizeof arguments[0];
126 
127     for (int i=0; i<numArguments; ++i) {
128         for (int j=0; j<numArguments; ++j) {
129             const double a = arguments[i];
130             const double b = arguments[j];
131             const int leResult = a < b ? -1 : a == b ? 0 :  1;
132             const int geResult = a > b ?  1 : a == b ? 0 : -1;
133             const int unResult = a != a || b != b ? 1 : 0;
134             printf("{%a,%a,%d,%d,%d,%d,%d,%d,%d},\n",
135                    a, b,
136                    leResult,
137                    geResult,
138                    geResult,
139                    leResult,
140                    leResult,
141                    leResult,
142                    unResult);
143         }
144     }
145 } */
146 
147 static const struct TestVector vectors[] = {
148     {__builtin_nan(""),__builtin_nan(""),1,-1,-1,1,1,1,1},
149     {__builtin_nan(""),-__builtin_inf(),1,-1,-1,1,1,1,1},
150     {__builtin_nan(""),-0x1.fffffffffffffp+1023,1,-1,-1,1,1,1,1},
151     {__builtin_nan(""),-0x1p+1,1,-1,-1,1,1,1,1},
152     {__builtin_nan(""),-0x1.fffffffffffffp-1,1,-1,-1,1,1,1,1},
153     {__builtin_nan(""),-0x1p-1022,1,-1,-1,1,1,1,1},
154     {__builtin_nan(""),-0x1.fffffcp-1023,1,-1,-1,1,1,1,1},
155     {__builtin_nan(""),-0x1p-1074,1,-1,-1,1,1,1,1},
156     {__builtin_nan(""),-0x0p+0,1,-1,-1,1,1,1,1},
157     {__builtin_nan(""),0x0p+0,1,-1,-1,1,1,1,1},
158     {__builtin_nan(""),0x1p-1074,1,-1,-1,1,1,1,1},
159     {__builtin_nan(""),0x1.fffffcp-1023,1,-1,-1,1,1,1,1},
160     {__builtin_nan(""),0x1p-1022,1,-1,-1,1,1,1,1},
161     {__builtin_nan(""),0x1.fffffffffffffp-1,1,-1,-1,1,1,1,1},
162     {__builtin_nan(""),0x1p+0,1,-1,-1,1,1,1,1},
163     {__builtin_nan(""),0x1.0000000000001p+0,1,-1,-1,1,1,1,1},
164     {__builtin_nan(""),0x1.fffffffffffffp+1023,1,-1,-1,1,1,1,1},
165     {__builtin_nan(""),__builtin_inf(),1,-1,-1,1,1,1,1},
166     {-__builtin_inf(),__builtin_nan(""),1,-1,-1,1,1,1,1},
167     {-__builtin_inf(),-__builtin_inf(),0,0,0,0,0,0,0},
168     {-__builtin_inf(),-0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
169     {-__builtin_inf(),-0x1p+1,-1,-1,-1,-1,-1,-1,0},
170     {-__builtin_inf(),-0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
171     {-__builtin_inf(),-0x1p-1022,-1,-1,-1,-1,-1,-1,0},
172     {-__builtin_inf(),-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
173     {-__builtin_inf(),-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
174     {-__builtin_inf(),-0x0p+0,-1,-1,-1,-1,-1,-1,0},
175     {-__builtin_inf(),0x0p+0,-1,-1,-1,-1,-1,-1,0},
176     {-__builtin_inf(),0x1p-1074,-1,-1,-1,-1,-1,-1,0},
177     {-__builtin_inf(),0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
178     {-__builtin_inf(),0x1p-1022,-1,-1,-1,-1,-1,-1,0},
179     {-__builtin_inf(),0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
180     {-__builtin_inf(),0x1p+0,-1,-1,-1,-1,-1,-1,0},
181     {-__builtin_inf(),0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
182     {-__builtin_inf(),0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
183     {-__builtin_inf(),__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
184     {-0x1.fffffffffffffp+1023,__builtin_nan(""),1,-1,-1,1,1,1,1},
185     {-0x1.fffffffffffffp+1023,-__builtin_inf(),1,1,1,1,1,1,0},
186     {-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023,0,0,0,0,0,0,0},
187     {-0x1.fffffffffffffp+1023,-0x1p+1,-1,-1,-1,-1,-1,-1,0},
188     {-0x1.fffffffffffffp+1023,-0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
189     {-0x1.fffffffffffffp+1023,-0x1p-1022,-1,-1,-1,-1,-1,-1,0},
190     {-0x1.fffffffffffffp+1023,-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
191     {-0x1.fffffffffffffp+1023,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
192     {-0x1.fffffffffffffp+1023,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
193     {-0x1.fffffffffffffp+1023,0x0p+0,-1,-1,-1,-1,-1,-1,0},
194     {-0x1.fffffffffffffp+1023,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
195     {-0x1.fffffffffffffp+1023,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
196     {-0x1.fffffffffffffp+1023,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
197     {-0x1.fffffffffffffp+1023,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
198     {-0x1.fffffffffffffp+1023,0x1p+0,-1,-1,-1,-1,-1,-1,0},
199     {-0x1.fffffffffffffp+1023,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
200     {-0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
201     {-0x1.fffffffffffffp+1023,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
202     {-0x1p+1,__builtin_nan(""),1,-1,-1,1,1,1,1},
203     {-0x1p+1,-__builtin_inf(),1,1,1,1,1,1,0},
204     {-0x1p+1,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
205     {-0x1p+1,-0x1p+1,0,0,0,0,0,0,0},
206     {-0x1p+1,-0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
207     {-0x1p+1,-0x1p-1022,-1,-1,-1,-1,-1,-1,0},
208     {-0x1p+1,-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
209     {-0x1p+1,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
210     {-0x1p+1,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
211     {-0x1p+1,0x0p+0,-1,-1,-1,-1,-1,-1,0},
212     {-0x1p+1,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
213     {-0x1p+1,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
214     {-0x1p+1,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
215     {-0x1p+1,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
216     {-0x1p+1,0x1p+0,-1,-1,-1,-1,-1,-1,0},
217     {-0x1p+1,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
218     {-0x1p+1,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
219     {-0x1p+1,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
220     {-0x1.fffffffffffffp-1,__builtin_nan(""),1,-1,-1,1,1,1,1},
221     {-0x1.fffffffffffffp-1,-__builtin_inf(),1,1,1,1,1,1,0},
222     {-0x1.fffffffffffffp-1,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
223     {-0x1.fffffffffffffp-1,-0x1p+1,1,1,1,1,1,1,0},
224     {-0x1.fffffffffffffp-1,-0x1.fffffffffffffp-1,0,0,0,0,0,0,0},
225     {-0x1.fffffffffffffp-1,-0x1p-1022,-1,-1,-1,-1,-1,-1,0},
226     {-0x1.fffffffffffffp-1,-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
227     {-0x1.fffffffffffffp-1,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
228     {-0x1.fffffffffffffp-1,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
229     {-0x1.fffffffffffffp-1,0x0p+0,-1,-1,-1,-1,-1,-1,0},
230     {-0x1.fffffffffffffp-1,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
231     {-0x1.fffffffffffffp-1,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
232     {-0x1.fffffffffffffp-1,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
233     {-0x1.fffffffffffffp-1,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
234     {-0x1.fffffffffffffp-1,0x1p+0,-1,-1,-1,-1,-1,-1,0},
235     {-0x1.fffffffffffffp-1,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
236     {-0x1.fffffffffffffp-1,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
237     {-0x1.fffffffffffffp-1,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
238     {-0x1p-1022,__builtin_nan(""),1,-1,-1,1,1,1,1},
239     {-0x1p-1022,-__builtin_inf(),1,1,1,1,1,1,0},
240     {-0x1p-1022,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
241     {-0x1p-1022,-0x1p+1,1,1,1,1,1,1,0},
242     {-0x1p-1022,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
243     {-0x1p-1022,-0x1p-1022,0,0,0,0,0,0,0},
244     {-0x1p-1022,-0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
245     {-0x1p-1022,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
246     {-0x1p-1022,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
247     {-0x1p-1022,0x0p+0,-1,-1,-1,-1,-1,-1,0},
248     {-0x1p-1022,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
249     {-0x1p-1022,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
250     {-0x1p-1022,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
251     {-0x1p-1022,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
252     {-0x1p-1022,0x1p+0,-1,-1,-1,-1,-1,-1,0},
253     {-0x1p-1022,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
254     {-0x1p-1022,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
255     {-0x1p-1022,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
256     {-0x1.fffffcp-1023,__builtin_nan(""),1,-1,-1,1,1,1,1},
257     {-0x1.fffffcp-1023,-__builtin_inf(),1,1,1,1,1,1,0},
258     {-0x1.fffffcp-1023,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
259     {-0x1.fffffcp-1023,-0x1p+1,1,1,1,1,1,1,0},
260     {-0x1.fffffcp-1023,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
261     {-0x1.fffffcp-1023,-0x1p-1022,1,1,1,1,1,1,0},
262     {-0x1.fffffcp-1023,-0x1.fffffcp-1023,0,0,0,0,0,0,0},
263     {-0x1.fffffcp-1023,-0x1p-1074,-1,-1,-1,-1,-1,-1,0},
264     {-0x1.fffffcp-1023,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
265     {-0x1.fffffcp-1023,0x0p+0,-1,-1,-1,-1,-1,-1,0},
266     {-0x1.fffffcp-1023,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
267     {-0x1.fffffcp-1023,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
268     {-0x1.fffffcp-1023,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
269     {-0x1.fffffcp-1023,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
270     {-0x1.fffffcp-1023,0x1p+0,-1,-1,-1,-1,-1,-1,0},
271     {-0x1.fffffcp-1023,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
272     {-0x1.fffffcp-1023,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
273     {-0x1.fffffcp-1023,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
274     {-0x1p-1074,__builtin_nan(""),1,-1,-1,1,1,1,1},
275     {-0x1p-1074,-__builtin_inf(),1,1,1,1,1,1,0},
276     {-0x1p-1074,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
277     {-0x1p-1074,-0x1p+1,1,1,1,1,1,1,0},
278     {-0x1p-1074,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
279     {-0x1p-1074,-0x1p-1022,1,1,1,1,1,1,0},
280     {-0x1p-1074,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
281     {-0x1p-1074,-0x1p-1074,0,0,0,0,0,0,0},
282     {-0x1p-1074,-0x0p+0,-1,-1,-1,-1,-1,-1,0},
283     {-0x1p-1074,0x0p+0,-1,-1,-1,-1,-1,-1,0},
284     {-0x1p-1074,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
285     {-0x1p-1074,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
286     {-0x1p-1074,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
287     {-0x1p-1074,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
288     {-0x1p-1074,0x1p+0,-1,-1,-1,-1,-1,-1,0},
289     {-0x1p-1074,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
290     {-0x1p-1074,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
291     {-0x1p-1074,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
292     {-0x0p+0,__builtin_nan(""),1,-1,-1,1,1,1,1},
293     {-0x0p+0,-__builtin_inf(),1,1,1,1,1,1,0},
294     {-0x0p+0,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
295     {-0x0p+0,-0x1p+1,1,1,1,1,1,1,0},
296     {-0x0p+0,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
297     {-0x0p+0,-0x1p-1022,1,1,1,1,1,1,0},
298     {-0x0p+0,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
299     {-0x0p+0,-0x1p-1074,1,1,1,1,1,1,0},
300     {-0x0p+0,-0x0p+0,0,0,0,0,0,0,0},
301     {-0x0p+0,0x0p+0,0,0,0,0,0,0,0},
302     {-0x0p+0,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
303     {-0x0p+0,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
304     {-0x0p+0,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
305     {-0x0p+0,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
306     {-0x0p+0,0x1p+0,-1,-1,-1,-1,-1,-1,0},
307     {-0x0p+0,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
308     {-0x0p+0,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
309     {-0x0p+0,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
310     {0x0p+0,__builtin_nan(""),1,-1,-1,1,1,1,1},
311     {0x0p+0,-__builtin_inf(),1,1,1,1,1,1,0},
312     {0x0p+0,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
313     {0x0p+0,-0x1p+1,1,1,1,1,1,1,0},
314     {0x0p+0,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
315     {0x0p+0,-0x1p-1022,1,1,1,1,1,1,0},
316     {0x0p+0,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
317     {0x0p+0,-0x1p-1074,1,1,1,1,1,1,0},
318     {0x0p+0,-0x0p+0,0,0,0,0,0,0,0},
319     {0x0p+0,0x0p+0,0,0,0,0,0,0,0},
320     {0x0p+0,0x1p-1074,-1,-1,-1,-1,-1,-1,0},
321     {0x0p+0,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
322     {0x0p+0,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
323     {0x0p+0,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
324     {0x0p+0,0x1p+0,-1,-1,-1,-1,-1,-1,0},
325     {0x0p+0,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
326     {0x0p+0,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
327     {0x0p+0,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
328     {0x1p-1074,__builtin_nan(""),1,-1,-1,1,1,1,1},
329     {0x1p-1074,-__builtin_inf(),1,1,1,1,1,1,0},
330     {0x1p-1074,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
331     {0x1p-1074,-0x1p+1,1,1,1,1,1,1,0},
332     {0x1p-1074,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
333     {0x1p-1074,-0x1p-1022,1,1,1,1,1,1,0},
334     {0x1p-1074,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
335     {0x1p-1074,-0x1p-1074,1,1,1,1,1,1,0},
336     {0x1p-1074,-0x0p+0,1,1,1,1,1,1,0},
337     {0x1p-1074,0x0p+0,1,1,1,1,1,1,0},
338     {0x1p-1074,0x1p-1074,0,0,0,0,0,0,0},
339     {0x1p-1074,0x1.fffffcp-1023,-1,-1,-1,-1,-1,-1,0},
340     {0x1p-1074,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
341     {0x1p-1074,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
342     {0x1p-1074,0x1p+0,-1,-1,-1,-1,-1,-1,0},
343     {0x1p-1074,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
344     {0x1p-1074,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
345     {0x1p-1074,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
346     {0x1.fffffcp-1023,__builtin_nan(""),1,-1,-1,1,1,1,1},
347     {0x1.fffffcp-1023,-__builtin_inf(),1,1,1,1,1,1,0},
348     {0x1.fffffcp-1023,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
349     {0x1.fffffcp-1023,-0x1p+1,1,1,1,1,1,1,0},
350     {0x1.fffffcp-1023,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
351     {0x1.fffffcp-1023,-0x1p-1022,1,1,1,1,1,1,0},
352     {0x1.fffffcp-1023,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
353     {0x1.fffffcp-1023,-0x1p-1074,1,1,1,1,1,1,0},
354     {0x1.fffffcp-1023,-0x0p+0,1,1,1,1,1,1,0},
355     {0x1.fffffcp-1023,0x0p+0,1,1,1,1,1,1,0},
356     {0x1.fffffcp-1023,0x1p-1074,1,1,1,1,1,1,0},
357     {0x1.fffffcp-1023,0x1.fffffcp-1023,0,0,0,0,0,0,0},
358     {0x1.fffffcp-1023,0x1p-1022,-1,-1,-1,-1,-1,-1,0},
359     {0x1.fffffcp-1023,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
360     {0x1.fffffcp-1023,0x1p+0,-1,-1,-1,-1,-1,-1,0},
361     {0x1.fffffcp-1023,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
362     {0x1.fffffcp-1023,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
363     {0x1.fffffcp-1023,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
364     {0x1p-1022,__builtin_nan(""),1,-1,-1,1,1,1,1},
365     {0x1p-1022,-__builtin_inf(),1,1,1,1,1,1,0},
366     {0x1p-1022,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
367     {0x1p-1022,-0x1p+1,1,1,1,1,1,1,0},
368     {0x1p-1022,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
369     {0x1p-1022,-0x1p-1022,1,1,1,1,1,1,0},
370     {0x1p-1022,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
371     {0x1p-1022,-0x1p-1074,1,1,1,1,1,1,0},
372     {0x1p-1022,-0x0p+0,1,1,1,1,1,1,0},
373     {0x1p-1022,0x0p+0,1,1,1,1,1,1,0},
374     {0x1p-1022,0x1p-1074,1,1,1,1,1,1,0},
375     {0x1p-1022,0x1.fffffcp-1023,1,1,1,1,1,1,0},
376     {0x1p-1022,0x1p-1022,0,0,0,0,0,0,0},
377     {0x1p-1022,0x1.fffffffffffffp-1,-1,-1,-1,-1,-1,-1,0},
378     {0x1p-1022,0x1p+0,-1,-1,-1,-1,-1,-1,0},
379     {0x1p-1022,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
380     {0x1p-1022,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
381     {0x1p-1022,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
382     {0x1.fffffffffffffp-1,__builtin_nan(""),1,-1,-1,1,1,1,1},
383     {0x1.fffffffffffffp-1,-__builtin_inf(),1,1,1,1,1,1,0},
384     {0x1.fffffffffffffp-1,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
385     {0x1.fffffffffffffp-1,-0x1p+1,1,1,1,1,1,1,0},
386     {0x1.fffffffffffffp-1,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
387     {0x1.fffffffffffffp-1,-0x1p-1022,1,1,1,1,1,1,0},
388     {0x1.fffffffffffffp-1,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
389     {0x1.fffffffffffffp-1,-0x1p-1074,1,1,1,1,1,1,0},
390     {0x1.fffffffffffffp-1,-0x0p+0,1,1,1,1,1,1,0},
391     {0x1.fffffffffffffp-1,0x0p+0,1,1,1,1,1,1,0},
392     {0x1.fffffffffffffp-1,0x1p-1074,1,1,1,1,1,1,0},
393     {0x1.fffffffffffffp-1,0x1.fffffcp-1023,1,1,1,1,1,1,0},
394     {0x1.fffffffffffffp-1,0x1p-1022,1,1,1,1,1,1,0},
395     {0x1.fffffffffffffp-1,0x1.fffffffffffffp-1,0,0,0,0,0,0,0},
396     {0x1.fffffffffffffp-1,0x1p+0,-1,-1,-1,-1,-1,-1,0},
397     {0x1.fffffffffffffp-1,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
398     {0x1.fffffffffffffp-1,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
399     {0x1.fffffffffffffp-1,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
400     {0x1p+0,__builtin_nan(""),1,-1,-1,1,1,1,1},
401     {0x1p+0,-__builtin_inf(),1,1,1,1,1,1,0},
402     {0x1p+0,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
403     {0x1p+0,-0x1p+1,1,1,1,1,1,1,0},
404     {0x1p+0,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
405     {0x1p+0,-0x1p-1022,1,1,1,1,1,1,0},
406     {0x1p+0,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
407     {0x1p+0,-0x1p-1074,1,1,1,1,1,1,0},
408     {0x1p+0,-0x0p+0,1,1,1,1,1,1,0},
409     {0x1p+0,0x0p+0,1,1,1,1,1,1,0},
410     {0x1p+0,0x1p-1074,1,1,1,1,1,1,0},
411     {0x1p+0,0x1.fffffcp-1023,1,1,1,1,1,1,0},
412     {0x1p+0,0x1p-1022,1,1,1,1,1,1,0},
413     {0x1p+0,0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
414     {0x1p+0,0x1p+0,0,0,0,0,0,0,0},
415     {0x1p+0,0x1.0000000000001p+0,-1,-1,-1,-1,-1,-1,0},
416     {0x1p+0,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
417     {0x1p+0,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
418     {0x1.0000000000001p+0,__builtin_nan(""),1,-1,-1,1,1,1,1},
419     {0x1.0000000000001p+0,-__builtin_inf(),1,1,1,1,1,1,0},
420     {0x1.0000000000001p+0,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
421     {0x1.0000000000001p+0,-0x1p+1,1,1,1,1,1,1,0},
422     {0x1.0000000000001p+0,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
423     {0x1.0000000000001p+0,-0x1p-1022,1,1,1,1,1,1,0},
424     {0x1.0000000000001p+0,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
425     {0x1.0000000000001p+0,-0x1p-1074,1,1,1,1,1,1,0},
426     {0x1.0000000000001p+0,-0x0p+0,1,1,1,1,1,1,0},
427     {0x1.0000000000001p+0,0x0p+0,1,1,1,1,1,1,0},
428     {0x1.0000000000001p+0,0x1p-1074,1,1,1,1,1,1,0},
429     {0x1.0000000000001p+0,0x1.fffffcp-1023,1,1,1,1,1,1,0},
430     {0x1.0000000000001p+0,0x1p-1022,1,1,1,1,1,1,0},
431     {0x1.0000000000001p+0,0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
432     {0x1.0000000000001p+0,0x1p+0,1,1,1,1,1,1,0},
433     {0x1.0000000000001p+0,0x1.0000000000001p+0,0,0,0,0,0,0,0},
434     {0x1.0000000000001p+0,0x1.fffffffffffffp+1023,-1,-1,-1,-1,-1,-1,0},
435     {0x1.0000000000001p+0,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
436     {0x1.fffffffffffffp+1023,__builtin_nan(""),1,-1,-1,1,1,1,1},
437     {0x1.fffffffffffffp+1023,-__builtin_inf(),1,1,1,1,1,1,0},
438     {0x1.fffffffffffffp+1023,-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
439     {0x1.fffffffffffffp+1023,-0x1p+1,1,1,1,1,1,1,0},
440     {0x1.fffffffffffffp+1023,-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
441     {0x1.fffffffffffffp+1023,-0x1p-1022,1,1,1,1,1,1,0},
442     {0x1.fffffffffffffp+1023,-0x1.fffffcp-1023,1,1,1,1,1,1,0},
443     {0x1.fffffffffffffp+1023,-0x1p-1074,1,1,1,1,1,1,0},
444     {0x1.fffffffffffffp+1023,-0x0p+0,1,1,1,1,1,1,0},
445     {0x1.fffffffffffffp+1023,0x0p+0,1,1,1,1,1,1,0},
446     {0x1.fffffffffffffp+1023,0x1p-1074,1,1,1,1,1,1,0},
447     {0x1.fffffffffffffp+1023,0x1.fffffcp-1023,1,1,1,1,1,1,0},
448     {0x1.fffffffffffffp+1023,0x1p-1022,1,1,1,1,1,1,0},
449     {0x1.fffffffffffffp+1023,0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
450     {0x1.fffffffffffffp+1023,0x1p+0,1,1,1,1,1,1,0},
451     {0x1.fffffffffffffp+1023,0x1.0000000000001p+0,1,1,1,1,1,1,0},
452     {0x1.fffffffffffffp+1023,0x1.fffffffffffffp+1023,0,0,0,0,0,0,0},
453     {0x1.fffffffffffffp+1023,__builtin_inf(),-1,-1,-1,-1,-1,-1,0},
454     {__builtin_inf(),__builtin_nan(""),1,-1,-1,1,1,1,1},
455     {__builtin_inf(),-__builtin_inf(),1,1,1,1,1,1,0},
456     {__builtin_inf(),-0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
457     {__builtin_inf(),-0x1p+1,1,1,1,1,1,1,0},
458     {__builtin_inf(),-0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
459     {__builtin_inf(),-0x1p-1022,1,1,1,1,1,1,0},
460     {__builtin_inf(),-0x1.fffffcp-1023,1,1,1,1,1,1,0},
461     {__builtin_inf(),-0x1p-1074,1,1,1,1,1,1,0},
462     {__builtin_inf(),-0x0p+0,1,1,1,1,1,1,0},
463     {__builtin_inf(),0x0p+0,1,1,1,1,1,1,0},
464     {__builtin_inf(),0x1p-1074,1,1,1,1,1,1,0},
465     {__builtin_inf(),0x1.fffffcp-1023,1,1,1,1,1,1,0},
466     {__builtin_inf(),0x1p-1022,1,1,1,1,1,1,0},
467     {__builtin_inf(),0x1.fffffffffffffp-1,1,1,1,1,1,1,0},
468     {__builtin_inf(),0x1p+0,1,1,1,1,1,1,0},
469     {__builtin_inf(),0x1.0000000000001p+0,1,1,1,1,1,1,0},
470     {__builtin_inf(),0x1.fffffffffffffp+1023,1,1,1,1,1,1,0},
471     {__builtin_inf(),__builtin_inf(),0,0,0,0,0,0,0},
472 };
473 
474 int main(int argc, char *argv[]) {
475     const int numVectors = sizeof vectors / sizeof vectors[0];
476     int i;
477     for (i = 0; i<numVectors; ++i) {
478         if (test__cmpdf2(&vectors[i])) return 1;
479     }
480     return 0;
481 }
482