~ubuntu-branches/ubuntu/vivid/emscripten/vivid-proposed

« back to all changes in this revision

Viewing changes to system/include/libc/machine/ieeefp.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2014-01-19 14:12:40 UTC
  • mfrom: (4.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20140119141240-nfiw0p8033oitpfz
Tags: 1.9.0~20140119~7dc8c2f-1
* New snapshot release (Closes: #733714)
* Provide sources for javascript and flash. Done in orig-tar.sh
  Available in third_party/websockify/include/web-socket-js/src/
  (Closes: #735903)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef __IEEE_BIG_ENDIAN
2
 
#ifndef __IEEE_LITTLE_ENDIAN
3
 
 
4
 
/* This file can define macros to choose variations of the IEEE float
5
 
   format:
6
 
 
7
 
   _FLT_LARGEST_EXPONENT_IS_NORMAL
8
 
 
9
 
        Defined if the float format uses the largest exponent for finite
10
 
        numbers rather than NaN and infinity representations.  Such a
11
 
        format cannot represent NaNs or infinities at all, but it's FLT_MAX
12
 
        is twice the IEEE value.
13
 
 
14
 
   _FLT_NO_DENORMALS
15
 
 
16
 
        Defined if the float format does not support IEEE denormals.  Every
17
 
        float with a zero exponent is taken to be a zero representation.
18
 
 
19
 
   ??? At the moment, there are no equivalent macros above for doubles and
20
 
   the macros are not fully supported by --enable-newlib-hw-fp.
21
 
 
22
 
   __IEEE_BIG_ENDIAN
23
 
 
24
 
        Defined if the float format is big endian.  This is mutually exclusive
25
 
        with __IEEE_LITTLE_ENDIAN.
26
 
 
27
 
   __IEEE_LITTLE_ENDIAN
28
 
 
29
 
        Defined if the float format is little endian.  This is mutually exclusive
30
 
        with __IEEE_BIG_ENDIAN.
31
 
 
32
 
   Note that one of __IEEE_BIG_ENDIAN or __IEEE_LITTLE_ENDIAN must be specified for a
33
 
   platform or error will occur.
34
 
 
35
 
   __IEEE_BYTES_LITTLE_ENDIAN
36
 
 
37
 
        This flag is used in conjunction with __IEEE_BIG_ENDIAN to describe a situation 
38
 
        whereby multiple words of an IEEE floating point are in big endian order, but the
39
 
        words themselves are little endian with respect to the bytes.
40
 
 
41
 
   _DOUBLE_IS_32BITS 
42
 
 
43
 
        This is used on platforms that support double by using the 32-bit IEEE
44
 
        float type.
45
 
 
46
 
   _FLOAT_ARG
47
 
 
48
 
        This represents what type a float arg is passed as.  It is used when the type is
49
 
        not promoted to double.
50
 
        
51
 
*/
52
 
 
53
 
#if (defined(__arm__) || defined(__thumb__)) && !defined(__MAVERICK__)
54
 
/* ARM traditionally used big-endian words; and within those words the
55
 
   byte ordering was big or little endian depending upon the target.
56
 
   Modern floating-point formats are naturally ordered; in this case
57
 
   __VFP_FP__ will be defined, even if soft-float.  */
58
 
#ifdef __VFP_FP__
59
 
# ifdef __ARMEL__
60
 
#  define __IEEE_LITTLE_ENDIAN
61
 
# else
62
 
#  define __IEEE_BIG_ENDIAN
63
 
# endif
64
 
#else
65
 
# define __IEEE_BIG_ENDIAN
66
 
# ifdef __ARMEL__
67
 
#  define __IEEE_BYTES_LITTLE_ENDIAN
68
 
# endif
69
 
#endif
70
 
#endif
71
 
 
72
 
#ifdef __hppa__
73
 
#define __IEEE_BIG_ENDIAN
74
 
#endif
75
 
 
76
 
#ifdef __SPU__
77
 
#define __IEEE_BIG_ENDIAN
78
 
 
79
 
#define isfinite(__y) \
80
 
        (__extension__ ({int __cy; \
81
 
                (sizeof (__y) == sizeof (float))  ? (1) : \
82
 
                (__cy = fpclassify(__y)) != FP_INFINITE && __cy != FP_NAN;}))
83
 
 
84
 
#define isinf(__x) ((sizeof (__x) == sizeof (float))  ?  (0) : __isinfd(__x))
85
 
#define isnan(__x) ((sizeof (__x) == sizeof (float))  ?  (0) : __isnand(__x))
86
 
 
87
 
/*
88
 
 * Macros for use in ieeefp.h. We can't just define the real ones here
89
 
 * (like those above) as we have name space issues when this is *not*
90
 
 * included via generic the ieeefp.h.
91
 
 */
92
 
#define __ieeefp_isnanf(x)      0
93
 
#define __ieeefp_isinff(x)      0
94
 
#define __ieeefp_finitef(x)     1
95
 
#endif
96
 
 
97
 
#ifdef __sparc__
98
 
#ifdef __LITTLE_ENDIAN_DATA__
99
 
#define __IEEE_LITTLE_ENDIAN
100
 
#else
101
 
#define __IEEE_BIG_ENDIAN
102
 
#endif
103
 
#endif
104
 
 
105
 
#if defined(__m68k__) || defined(__mc68000__)
106
 
#define __IEEE_BIG_ENDIAN
107
 
#endif
108
 
 
109
 
#if defined(__mc68hc11__) || defined(__mc68hc12__) || defined(__mc68hc1x__)
110
 
#define __IEEE_BIG_ENDIAN
111
 
#ifdef __HAVE_SHORT_DOUBLE__
112
 
# define _DOUBLE_IS_32BITS
113
 
#endif
114
 
#endif
115
 
 
116
 
#if defined (__H8300__) || defined (__H8300H__) || defined (__H8300S__) || defined (__H8500__) || defined (__H8300SX__)
117
 
#define __IEEE_BIG_ENDIAN
118
 
#define _FLOAT_ARG float
119
 
#define _DOUBLE_IS_32BITS
120
 
#endif
121
 
 
122
 
#if defined (__xc16x__) || defined (__xc16xL__) || defined (__xc16xS__)
123
 
#define __IEEE_LITTLE_ENDIAN
124
 
#define _FLOAT_ARG float
125
 
#define _DOUBLE_IS_32BITS
126
 
#endif
127
 
 
128
 
 
129
 
#ifdef __sh__
130
 
#ifdef __LITTLE_ENDIAN__
131
 
#define __IEEE_LITTLE_ENDIAN
132
 
#else
133
 
#define __IEEE_BIG_ENDIAN
134
 
#endif
135
 
#if defined(__SH2E__) || defined(__SH3E__) || defined(__SH4_SINGLE_ONLY__) || defined(__SH2A_SINGLE_ONLY__)
136
 
#define _DOUBLE_IS_32BITS
137
 
#endif
138
 
#endif
139
 
 
140
 
#ifdef _AM29K
141
 
#define __IEEE_BIG_ENDIAN
142
 
#endif
143
 
 
144
 
#ifdef _WIN32
145
 
#define __IEEE_LITTLE_ENDIAN
146
 
#endif
147
 
 
148
 
#ifdef __i386__
149
 
#define __IEEE_LITTLE_ENDIAN
150
 
#endif
151
 
 
152
 
#ifdef __i960__
153
 
#define __IEEE_LITTLE_ENDIAN
154
 
#endif
155
 
 
156
 
#ifdef __lm32__
157
 
#define __IEEE_BIG_ENDIAN
158
 
#endif
159
 
 
160
 
#ifdef __M32R__
161
 
#define __IEEE_BIG_ENDIAN
162
 
#endif
163
 
 
164
 
#if defined(_C4x) || defined(_C3x)
165
 
#define __IEEE_BIG_ENDIAN
166
 
#define _DOUBLE_IS_32BITS
167
 
#endif
168
 
 
169
 
#ifdef __TMS320C6X__
170
 
#ifdef _BIG_ENDIAN
171
 
#define __IEEE_BIG_ENDIAN
172
 
#else
173
 
#define __IEEE_LITTLE_ENDIAN
174
 
#endif
175
 
#endif
176
 
 
177
 
#ifdef __TIC80__
178
 
#define __IEEE_LITTLE_ENDIAN
179
 
#endif
180
 
 
181
 
#ifdef __MIPSEL__
182
 
#define __IEEE_LITTLE_ENDIAN
183
 
#endif
184
 
#ifdef __MIPSEB__
185
 
#define __IEEE_BIG_ENDIAN
186
 
#endif
187
 
 
188
 
#ifdef __MMIX__
189
 
#define __IEEE_BIG_ENDIAN
190
 
#endif
191
 
 
192
 
#ifdef __D30V__
193
 
#define __IEEE_BIG_ENDIAN
194
 
#endif
195
 
 
196
 
/* necv70 was __IEEE_LITTLE_ENDIAN. */
197
 
 
198
 
#ifdef __W65__
199
 
#define __IEEE_LITTLE_ENDIAN
200
 
#define _DOUBLE_IS_32BITS
201
 
#endif
202
 
 
203
 
#if defined(__Z8001__) || defined(__Z8002__)
204
 
#define __IEEE_BIG_ENDIAN
205
 
#endif
206
 
 
207
 
#ifdef __m88k__
208
 
#define __IEEE_BIG_ENDIAN
209
 
#endif
210
 
 
211
 
#ifdef __mn10300__
212
 
#define __IEEE_LITTLE_ENDIAN
213
 
#endif
214
 
 
215
 
#ifdef __mn10200__
216
 
#define __IEEE_LITTLE_ENDIAN
217
 
#define _DOUBLE_IS_32BITS
218
 
#endif
219
 
 
220
 
#ifdef __v800
221
 
#define __IEEE_LITTLE_ENDIAN
222
 
#endif
223
 
 
224
 
#ifdef __v850
225
 
#define __IEEE_LITTLE_ENDIAN
226
 
#endif
227
 
 
228
 
#ifdef __D10V__
229
 
#define __IEEE_BIG_ENDIAN
230
 
#if __DOUBLE__ == 32
231
 
#define _DOUBLE_IS_32BITS
232
 
#endif
233
 
#endif
234
 
 
235
 
#ifdef __PPC__
236
 
#if (defined(_BIG_ENDIAN) && _BIG_ENDIAN) || (defined(_AIX) && _AIX)
237
 
#define __IEEE_BIG_ENDIAN
238
 
#else
239
 
#if (defined(_LITTLE_ENDIAN) && _LITTLE_ENDIAN) || (defined(__sun__) && __sun__) || (defined(_WIN32) && _WIN32)
240
 
#define __IEEE_LITTLE_ENDIAN
241
 
#endif
242
 
#endif
243
 
#endif
244
 
 
245
 
#ifdef __xstormy16__
246
 
#define __IEEE_LITTLE_ENDIAN
247
 
#endif
248
 
 
249
 
#ifdef __arc__
250
 
#ifdef __big_endian__
251
 
#define __IEEE_BIG_ENDIAN
252
 
#else
253
 
#define __IEEE_LITTLE_ENDIAN
254
 
#endif
255
 
#endif
256
 
 
257
 
#ifdef __CRX__
258
 
#define __IEEE_LITTLE_ENDIAN
259
 
#endif
260
 
 
261
 
#ifdef __fr30__
262
 
#define __IEEE_BIG_ENDIAN
263
 
#endif
264
 
 
265
 
#ifdef __mcore__
266
 
#define __IEEE_BIG_ENDIAN
267
 
#endif
268
 
 
269
 
#ifdef __mt__
270
 
#define __IEEE_BIG_ENDIAN
271
 
#endif
272
 
 
273
 
#ifdef __frv__
274
 
#define __IEEE_BIG_ENDIAN
275
 
#endif
276
 
 
277
 
#ifdef __moxie__
278
 
#define __IEEE_BIG_ENDIAN
279
 
#endif
280
 
 
281
 
#ifdef __ia64__
282
 
#ifdef __BIG_ENDIAN__
283
 
#define __IEEE_BIG_ENDIAN
284
 
#else
285
 
#define __IEEE_LITTLE_ENDIAN
286
 
#endif
287
 
#endif
288
 
 
289
 
#ifdef __AVR__
290
 
#define __IEEE_LITTLE_ENDIAN
291
 
#define _DOUBLE_IS_32BITS
292
 
#endif
293
 
 
294
 
#if defined(__or32__) || defined(__or1k__) || defined(__or16__)
295
 
#define __IEEE_BIG_ENDIAN
296
 
#endif
297
 
 
298
 
#ifdef __IP2K__
299
 
#define __IEEE_BIG_ENDIAN
300
 
#define __SMALL_BITFIELDS
301
 
#define _DOUBLE_IS_32BITS
302
 
#endif
303
 
 
304
 
#ifdef __iq2000__
305
 
#define __IEEE_BIG_ENDIAN
306
 
#endif
307
 
 
308
 
#ifdef __MAVERICK__
309
 
#ifdef __ARMEL__
310
 
#  define __IEEE_LITTLE_ENDIAN
311
 
#else  /* must be __ARMEB__ */
312
 
#  define __IEEE_BIG_ENDIAN
313
 
#endif /* __ARMEL__ */
314
 
#endif /* __MAVERICK__ */
315
 
 
316
 
#ifdef __m32c__
317
 
#define __IEEE_LITTLE_ENDIAN
318
 
#define __SMALL_BITFIELDS
319
 
#endif
320
 
 
321
 
#ifdef __CRIS__
322
 
#define __IEEE_LITTLE_ENDIAN
323
 
#endif
324
 
 
325
 
#ifdef __BFIN__
326
 
#define __IEEE_LITTLE_ENDIAN
327
 
#endif
328
 
 
329
 
#ifdef __x86_64__
330
 
#define __IEEE_LITTLE_ENDIAN
331
 
#endif
332
 
 
333
 
#ifdef __mep__
334
 
#ifdef __LITTLE_ENDIAN__
335
 
#define __IEEE_LITTLE_ENDIAN
336
 
#else
337
 
#define __IEEE_BIG_ENDIAN
338
 
#endif
339
 
#endif
340
 
 
341
 
#ifdef __MICROBLAZE__
342
 
#define __IEEE_BIG_ENDIAN
343
 
#endif
344
 
 
345
 
#ifdef __RX__
346
 
 
347
 
#ifdef __RX_BIG_ENDIAN__
348
 
#define __IEEE_BIG_ENDIAN
349
 
#else
350
 
#define __IEEE_LITTLE_ENDIAN
351
 
#endif
352
 
 
353
 
#ifndef __RX_64BIT_DOUBLES__
354
 
#define _DOUBLE_IS_32BITS
355
 
#endif
356
 
 
357
 
#ifdef __RX_16BIT_INTS__
358
 
#define __SMALL_BITFIELDS
359
 
#endif
360
 
 
361
 
#endif
362
 
 
363
 
#if (defined(__CR16__) || defined(__CR16C__) ||defined(__CR16CP__))
364
 
#define __IEEE_LITTLE_ENDIAN
365
 
#define __SMALL_BITFIELDS       /* 16 Bit INT */
366
 
#endif
367
 
 
368
 
#ifndef __IEEE_BIG_ENDIAN
369
 
#ifndef __IEEE_LITTLE_ENDIAN
370
 
/* XXX Emscripten #error Endianess not declared!! */
371
 
#endif /* not __IEEE_LITTLE_ENDIAN */
372
 
#endif /* not __IEEE_BIG_ENDIAN */
373
 
 
374
 
#endif /* not __IEEE_LITTLE_ENDIAN */
375
 
#endif /* not __IEEE_BIG_ENDIAN */
376