OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [c-c++-common/] [dfp/] [compare-special.h] - Blame information for rev 686

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 686 jeremybenn
/* Basic test of runtime relational comparisons using NaNs and infinities.  */
2
 
3
#include <stdlib.h>
4
#include "dfp-dbg.h"
5
 
6
#define PASTE2(A,B) A ## B
7
#define PASTE(A,B) PASTE2(A,B)
8
 
9
/* Override FAILURE from dfp-dbg.h with one that provides additional info.  */
10
#undef FAILURE
11
#ifdef DBG
12
#define FAILURE(OP,KIND) \
13
  { printf ("failed at line %d: %s for %s values\n", __LINE__, OP, KIND); \
14
    failures++; }
15
#else
16
#define FAILURE(OP,KIND) __builtin_abort ();
17
#endif
18
 
19
#ifndef WIDTH
20
#error define WIDTH as decimal float size in bytes
21
#endif
22
 
23
#if WIDTH == 32
24
#define DTYPE _Decimal32
25
#define SUFFIX DF
26
#define SUFFIX2 d32
27
#elif WIDTH == 64
28
#define DTYPE _Decimal64
29
#define SUFFIX DD
30
#define SUFFIX2 d64
31
#elif WIDTH == 128
32
#define DTYPE _Decimal128
33
#define SUFFIX DL
34
#define SUFFIX2 d128
35
#elif WIDTH == 0
36
/* This is for testing the test using a type known to work.  */
37
#define DTYPE double
38
#define SUFFIX
39
#define SUFFIX2
40
#else
41
#error invalid width for decimal float type
42
#endif
43
 
44
DTYPE m_two = PASTE(-2.0, SUFFIX);
45
DTYPE m_one = PASTE(-1.0, SUFFIX);
46
DTYPE zero  = PASTE(0.0, SUFFIX);
47
DTYPE one   = PASTE(1.0, SUFFIX);
48
DTYPE two   = PASTE(2.0, SUFFIX);
49
 
50
volatile DTYPE x, y, z, _nan, inf, m_inf;
51
 
52
void
53
test_compares (void)
54
{
55
  _nan = PASTE(__builtin_nan, SUFFIX2) ("");
56
  inf =  PASTE(__builtin_inf, SUFFIX2) ();
57
  m_inf = - PASTE(__builtin_inf, SUFFIX2) ();
58
 
59
  x = PASTE(__builtin_nan, SUFFIX2) ("");
60
  y = PASTE(__builtin_inf, SUFFIX2) ();
61
  z = - PASTE(__builtin_inf, SUFFIX2) ();
62
 
63
  /* Less than or equal to with NaN.  */
64
 
65
  if (x <= two)   FAILURE ("<=", "NaN")
66
  if (x <= zero)  FAILURE ("<=", "NaN")
67
  if (x <= m_one) FAILURE ("<=", "NaN")
68
  if (x <= _nan)  FAILURE ("<=", "NaN")
69
  if (x <= inf)   FAILURE ("<=", "NaN")
70
  if (x <= m_inf) FAILURE ("<=", "NaN")
71
 
72
  if (two <= x)   FAILURE ("<=", "NaN")
73
  if (zero <= x)  FAILURE ("<=", "NaN")
74
  if (m_one <= x) FAILURE ("<=", "NaN")
75
  if (_nan <= x)  FAILURE ("<=", "NaN")
76
  if (inf <= x)   FAILURE ("<=", "NaN")
77
  if (m_inf <= x) FAILURE ("<=", "NaN")
78
 
79
  /* Less than or equal to with infinities, no NaNs.  */
80
 
81
  if (y <= two)      FAILURE ("<=", "inf")
82
  if (y <= zero)     FAILURE ("<=", "inf")
83
  if (y <= m_one)    FAILURE ("<=", "inf")
84
  if (!(two <= y))   FAILURE ("<=", "inf")
85
  if (!(zero <= y))  FAILURE ("<=", "inf")
86
  if (!(m_one <= y)) FAILURE ("<=", "inf")
87
 
88
  if (!(z <= two))   FAILURE ("<=", "-inf")
89
  if (!(z <= zero))  FAILURE ("<=", "-inf")
90
  if (!(z <= m_one)) FAILURE ("<=", "-inf")
91
  if (two <= z)      FAILURE ("<=", "-inf")
92
  if (zero <= z)     FAILURE ("<=", "-inf")
93
  if (m_one <= z)    FAILURE ("<=", "-inf")
94
 
95
  if (!(y <= inf))   FAILURE ("<=", "inf")
96
  if (y <= m_inf)    FAILURE ("<=", "inf")
97
  if (!(z <= inf))   FAILURE ("<=", "inf")
98
  if (!(z <= m_inf)) FAILURE ("<=", "inf")
99
 
100
  /* Less than with NaN.  */
101
 
102
  if (x < two)       FAILURE ("<", "NaN")
103
  if (x < zero)      FAILURE ("<", "NaN")
104
  if (x < m_one)     FAILURE ("<", "NaN")
105
  if (x < _nan)      FAILURE ("<", "NaN")
106
  if (x < inf)       FAILURE ("<", "NaN")
107
  if (x < m_inf)     FAILURE ("<", "NaN")
108
 
109
  if (two < x)       FAILURE ("<", "NaN")
110
  if (zero < x)      FAILURE ("<", "NaN")
111
  if (m_one < x)     FAILURE ("<", "NaN")
112
  if (_nan < x)      FAILURE ("<", "NaN")
113
  if (inf < x)       FAILURE ("<", "NaN")
114
  if (m_inf < x)     FAILURE ("<", "NaN")
115
 
116
  /* Less than with infinities, no NaNs.  */
117
 
118
  if (y < two)       FAILURE ("<", "inf")
119
  if (y < zero)      FAILURE ("<", "inf")
120
  if (y < m_one)     FAILURE ("<", "inf")
121
  if (!(two < y))    FAILURE ("<", "inf")
122
  if (!(zero < y))   FAILURE ("<", "inf")
123
  if (!(m_one < y))  FAILURE ("<", "inf")
124
 
125
  if (!(z < two))    FAILURE ("<", "-inf")
126
  if (!(z < zero))   FAILURE ("<", "-inf")
127
  if (!(z < m_one))  FAILURE ("<", "-inf")
128
  if (two < z)       FAILURE ("<", "-inf")
129
  if (zero < z)      FAILURE ("<", "-inf")
130
  if (m_one < z)     FAILURE ("<", "-inf")
131
 
132
  if (y < inf)       FAILURE ("<=", "inf")
133
  if (y < m_inf)     FAILURE ("<=", "inf")
134
  if (!(z < inf))    FAILURE ("<=", "inf")
135
  if (z < m_inf)     FAILURE ("<=", "inf")
136
 
137
  /* Greater than or equal to with NaN.  */
138
 
139
  if (x >= two)      FAILURE (">=", "NaN")
140
  if (x >= zero)     FAILURE (">=", "NaN")
141
  if (x >= m_one)    FAILURE (">=", "NaN")
142
  if (x >= _nan)     FAILURE (">=", "NaN")
143
  if (x >= inf)      FAILURE (">=", "NaN")
144
  if (x >= m_inf)    FAILURE (">=", "NaN")
145
 
146
  if (two >= x)      FAILURE (">=", "NaN")
147
  if (zero >= x)     FAILURE (">=", "NaN")
148
  if (m_one >= x)    FAILURE (">=", "NaN")
149
  if (_nan >= x)     FAILURE (">=", "NaN")
150
  if (inf >= x)      FAILURE (">=", "NaN")
151
  if (m_inf >= x)    FAILURE (">=", "NaN")
152
 
153
  /* Greater than or equal to with infinities, no NaNs.  */
154
 
155
  if (!(y >= two))   FAILURE (">=", "inf")
156
  if (!(y >= zero))  FAILURE (">=", "inf")
157
  if (!(y >= m_one)) FAILURE (">=", "inf")
158
  if (two >= y)      FAILURE (">=", "inf")
159
  if (zero >= y)     FAILURE (">=", "inf")
160
  if (m_one >= y)    FAILURE (">=", "inf")
161
 
162
  if (z >= two)      FAILURE (">=", "-inf")
163
  if (z >= zero)     FAILURE (">=", "-inf")
164
  if (z >= m_one)    FAILURE (">=", "-inf")
165
  if (!(two >= z))   FAILURE (">=", "-inf")
166
  if (!(zero >= z))  FAILURE (">=", "-inf")
167
  if (!(m_one >= z)) FAILURE (">=", "-inf")
168
 
169
  if (!(y >= inf))   FAILURE ("<=", "inf")
170
  if (!(y >= m_inf)) FAILURE ("<=", "inf")
171
  if (z >= inf)      FAILURE ("<=", "inf")
172
  if (!(z >= m_inf)) FAILURE ("<=", "inf")
173
 
174
  /* Greater than with NaN.  */
175
 
176
  if (x > two)       FAILURE (">", "NaN")
177
  if (x > zero)      FAILURE (">", "NaN")
178
  if (x > m_one)     FAILURE (">", "NaN")
179
  if (x > _nan)      FAILURE (">", "NaN")
180
  if (x > inf)       FAILURE (">", "NaN")
181
  if (x > m_inf)     FAILURE (">", "NaN")
182
 
183
  if (two > x)       FAILURE (">", "NaN")
184
  if (zero > x)      FAILURE (">", "NaN")
185
  if (m_one > x)     FAILURE (">", "NaN")
186
  if (_nan > x)      FAILURE (">", "NaN")
187
  if (inf > x)       FAILURE (">", "NaN")
188
  if (m_inf > x)     FAILURE (">", "NaN")
189
 
190
  /* Greater than with infinities, no NaNs.  */
191
 
192
  if (!(y > two))    FAILURE (">", "inf")
193
  if (!(y > zero))   FAILURE (">", "inf")
194
  if (!(y > m_one))  FAILURE (">", "inf")
195
  if (two > y)       FAILURE (">", "inf")
196
  if (zero > y)      FAILURE (">", "inf")
197
  if (m_one > y)     FAILURE (">", "inf")
198
 
199
  if (z > two)       FAILURE (">", "-inf")
200
  if (z > zero)      FAILURE (">", "-inf")
201
  if (z > m_one)     FAILURE (">", "-inf")
202
  if (!(two > z))    FAILURE (">", "-inf")
203
  if (!(zero > z))   FAILURE (">", "-inf")
204
  if (!(m_one > z))  FAILURE (">", "-inf")
205
 
206
  if (y > inf)       FAILURE (">", "inf")
207
  if (!(y > m_inf))  FAILURE (">", "inf")
208
  if (z > inf)       FAILURE (">", "inf")
209
  if (z > m_inf)     FAILURE (">", "inf")
210
 
211
  /* Equal with NaN.  */
212
 
213
  if (x == two)      FAILURE ("==", "NaN")
214
  if (x == zero)     FAILURE ("==", "NaN")
215
  if (x == m_one)    FAILURE ("==", "NaN")
216
  if (x == _nan)     FAILURE ("==", "NaN")
217
  if (x == inf)      FAILURE ("==", "NaN")
218
  if (x == m_inf)    FAILURE ("==", "NaN")
219
 
220
  if (two == x)      FAILURE ("==", "NaN")
221
  if (zero == x)     FAILURE ("==", "NaN")
222
  if (m_one == x)    FAILURE ("==", "NaN")
223
  if (_nan == x)     FAILURE ("==", "NaN")
224
  if (inf == x)      FAILURE ("==", "NaN")
225
  if (m_inf == x)    FAILURE ("==", "NaN")
226
 
227
  /* Equal with infinities, no NaNs.  */
228
 
229
  if (y == two)      FAILURE ("==", "inf")
230
  if (y == zero)     FAILURE ("==", "inf")
231
  if (y == m_one)    FAILURE ("==", "inf")
232
  if (two == y)      FAILURE ("==", "inf")
233
  if (zero == y)     FAILURE ("==", "inf")
234
  if (m_one == y)    FAILURE ("==", "inf")
235
 
236
  if (z == two)      FAILURE ("==", "-inf")
237
  if (z == zero)     FAILURE ("==", "-inf")
238
  if (z == m_one)    FAILURE ("==", "-inf")
239
  if (two == z)      FAILURE ("==", "-inf")
240
  if (zero == z)     FAILURE ("==", "-inf")
241
  if (m_one == z)    FAILURE ("==", "-inf")
242
 
243
  if (!(y == inf))   FAILURE ("==", "inf")
244
  if (y == m_inf)    FAILURE ("==", "inf")
245
  if (z == inf)      FAILURE ("==", "inf")
246
  if (!(z == m_inf)) FAILURE ("==", "inf")
247
 
248
  /* Not equal with NaN.  */
249
 
250
  if (!(x != two))   FAILURE ("!=", "NaN")
251
  if (!(x != zero))  FAILURE ("!=", "NaN")
252
  if (!(x != m_one)) FAILURE ("!=", "NaN")
253
  if (!(x != _nan))  FAILURE ("!=", "NaN")
254
  if (!(x != inf))   FAILURE ("!=", "NaN")
255
  if (!(x != m_inf)) FAILURE ("!=", "NaN")
256
 
257
  if (!(two != x))   FAILURE ("!=", "NaN")
258
  if (!(zero != x))  FAILURE ("!=", "NaN")
259
  if (!(m_one != x)) FAILURE ("!=", "NaN")
260
  if (!(_nan != x))  FAILURE ("!=", "NaN")
261
  if (!(inf != x))   FAILURE ("!=", "NaN")
262
  if (!(m_inf != x)) FAILURE ("!=", "NaN")
263
 
264
  /* Not equal with infinities, no NaNs.  */
265
 
266
  if (!(y != two))   FAILURE ("!=", "inf")
267
  if (!(y != zero))  FAILURE ("!=", "inf")
268
  if (!(y != m_one)) FAILURE ("!=", "inf")
269
  if (!(two != y))   FAILURE ("!=", "inf")
270
  if (!(zero != y))  FAILURE ("!=", "inf")
271
  if (!(m_one != y)) FAILURE ("!=", "inf")
272
 
273
  if (!(z != two))   FAILURE ("!=", "-inf")
274
  if (!(z != zero))  FAILURE ("!=", "-inf")
275
  if (!(z != m_one)) FAILURE ("!=", "-inf")
276
  if (!(two != z))   FAILURE ("!=", "-inf")
277
  if (!(zero != z))  FAILURE ("!=", "-inf")
278
  if (!(m_one != z)) FAILURE ("!=", "-inf")
279
 
280
  if (y != inf)      FAILURE ("!=", "inf")
281
  if (!(y != m_inf)) FAILURE ("!=", "inf")
282
  if (!(z != inf))   FAILURE ("!=", "inf")
283
  if (z != m_inf)    FAILURE ("!=", "inf")
284
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.