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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [libgcc/] [config/] [libbid/] [bid_gcc_intrinsics.h] - Blame information for rev 435

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 272 jeremybenn
/* Copyright (C) 2007, 2009  Free Software Foundation, Inc.
2
 
3
This file is part of GCC.
4
 
5
GCC is free software; you can redistribute it and/or modify it under
6
the terms of the GNU General Public License as published by the Free
7
Software Foundation; either version 3, or (at your option) any later
8
version.
9
 
10
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11
WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13
for more details.
14
 
15
Under Section 7 of GPL version 3, you are granted additional
16
permissions described in the GCC Runtime Library Exception, version
17
3.1, as published by the Free Software Foundation.
18
 
19
You should have received a copy of the GNU General Public License and
20
a copy of the GCC Runtime Library Exception along with this program;
21
see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
22
<http://www.gnu.org/licenses/>.  */
23
 
24
#ifndef _BID_GCC_INTRINSICS_H
25
#define _BID_GCC_INTRINSICS_H
26
 
27
#ifdef IN_LIBGCC2
28
 
29
#include "tconfig.h"
30
#include "coretypes.h"
31
#include "tm.h"
32
 
33
#ifndef LIBGCC2_WORDS_BIG_ENDIAN
34
#define LIBGCC2_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN
35
#endif
36
 
37
#ifndef LIBGCC2_FLOAT_WORDS_BIG_ENDIAN
38
#define LIBGCC2_FLOAT_WORDS_BIG_ENDIAN LIBGCC2_WORDS_BIG_ENDIAN
39
#endif
40
 
41
#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
42
#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE
43
#endif
44
 
45
#ifndef LIBGCC2_HAS_XF_MODE
46
#define LIBGCC2_HAS_XF_MODE \
47
  (BITS_PER_UNIT == 8 && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80)
48
#endif
49
 
50
#ifndef LIBGCC2_HAS_TF_MODE
51
#define LIBGCC2_HAS_TF_MODE \
52
  (BITS_PER_UNIT == 8 && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128)
53
#endif
54
 
55
#ifndef BID_HAS_XF_MODE
56
#define BID_HAS_XF_MODE LIBGCC2_HAS_XF_MODE
57
#endif
58
 
59
#ifndef BID_HAS_TF_MODE
60
#define BID_HAS_TF_MODE LIBGCC2_HAS_TF_MODE
61
#endif
62
 
63
/* Some handy typedefs.  */
64
 
65
typedef float SFtype __attribute__ ((mode (SF)));
66
typedef float DFtype __attribute__ ((mode (DF)));
67
#if LIBGCC2_HAS_XF_MODE
68
typedef float XFtype __attribute__ ((mode (XF)));
69
#endif /* LIBGCC2_HAS_XF_MODE */
70
#if LIBGCC2_HAS_TF_MODE
71
typedef float TFtype __attribute__ ((mode (TF)));
72
#endif /* LIBGCC2_HAS_XF_MODE */
73
 
74
typedef int SItype __attribute__ ((mode (SI)));
75
typedef int DItype __attribute__ ((mode (DI)));
76
typedef unsigned int USItype __attribute__ ((mode (SI)));
77
typedef unsigned int UDItype __attribute__ ((mode (DI)));
78
 
79
/* The type of the result of a decimal float comparison.  This must
80
   match `word_mode' in GCC for the target.  */
81
 
82
typedef int CMPtype __attribute__ ((mode (word)));
83
 
84
typedef int SINT8 __attribute__ ((mode (QI)));
85
typedef unsigned int UINT8 __attribute__ ((mode (QI)));
86
typedef USItype UINT32;
87
typedef SItype SINT32;
88
typedef UDItype UINT64;
89
typedef DItype SINT64;
90
 
91
/* It has to be identical to the one defined in bid_functions.h.  */
92
typedef __attribute__ ((aligned(16))) struct
93
{
94
  UINT64 w[2];
95
} UINT128;
96
#else   /* if not IN_LIBGCC2 */
97
 
98
#ifndef BID_HAS_XF_MODE
99
#define BID_HAS_XF_MODE 1
100
#endif
101
 
102
#ifndef BID_HAS_TF_MODE
103
#if defined __i386__
104
#define BID_HAS_TF_MODE 0
105
#else
106
#define BID_HAS_TF_MODE 1
107
#endif
108
#endif
109
 
110
#ifndef SFtype
111
#define SFtype float
112
#endif
113
 
114
#ifndef DFtype
115
#define DFtype double
116
#endif
117
 
118
#if BID_HAS_XF_MODE
119
#ifndef XFtype
120
#define XFtype long double
121
#endif
122
 
123
#endif   /* IN_LIBGCC2 */
124
 
125
#if BID_HAS_TF_MODE
126
#ifndef TFtype
127
#define TFtype __float128
128
#endif
129
#endif
130
 
131
#ifndef SItype
132
#define SItype SINT32
133
#endif
134
 
135
#ifndef DItype
136
#define DItype SINT64
137
#endif
138
 
139
#ifndef USItype
140
#define USItype UINT32
141
#endif
142
 
143
#ifndef UDItype
144
#define UDItype UINT64
145
#endif
146
 
147
#ifndef CMPtype
148
#define CMPtype long
149
#endif
150
#endif  /* IN_LIBGCC2 */
151
 
152
#if BID_HAS_GCC_DECIMAL_INTRINSICS
153
/* Prototypes for gcc instrinsics  */
154
 
155
extern _Decimal64 __bid_adddd3 (_Decimal64, _Decimal64);
156
extern _Decimal64 __bid_subdd3 (_Decimal64, _Decimal64);
157
extern _Decimal32 __bid_addsd3 (_Decimal32, _Decimal32);
158
extern _Decimal32 __bid_subsd3 (_Decimal32, _Decimal32);
159
extern _Decimal128 __bid_addtd3 (_Decimal128, _Decimal128);
160
extern _Decimal128 __bid_subtd3 (_Decimal128, _Decimal128);
161
extern DFtype __bid_truncdddf (_Decimal64);
162
extern DItype __bid_fixdddi (_Decimal64);
163
extern _Decimal32 __bid_truncddsd2 (_Decimal64);
164
extern SFtype __bid_truncddsf (_Decimal64);
165
extern SItype __bid_fixddsi (_Decimal64);
166
extern _Decimal128 __bid_extendddtd2 (_Decimal64);
167
#if BID_HAS_TF_MODE
168
extern TFtype __bid_extendddtf (_Decimal64);
169
#endif
170
extern UDItype __bid_fixunsdddi (_Decimal64);
171
extern USItype __bid_fixunsddsi (_Decimal64);
172
#if BID_HAS_XF_MODE
173
extern XFtype __bid_extendddxf (_Decimal64);
174
#endif
175
extern _Decimal64 __bid_extenddfdd (DFtype);
176
extern _Decimal32 __bid_truncdfsd (DFtype);
177
extern _Decimal128 __bid_extenddftd (DFtype);
178
extern _Decimal64 __bid_floatdidd (DItype);
179
extern _Decimal32 __bid_floatdisd (DItype);
180
extern _Decimal128 __bid_floatditd (DItype);
181
extern _Decimal64 __bid_divdd3 (_Decimal64, _Decimal64);
182
extern _Decimal32 __bid_divsd3 (_Decimal32, _Decimal32);
183
extern _Decimal128 __bid_divtd3 (_Decimal128, _Decimal128);
184
extern CMPtype __bid_eqdd2 (_Decimal64, _Decimal64);
185
extern CMPtype __bid_eqsd2 (_Decimal32, _Decimal32);
186
extern CMPtype __bid_eqtd2 (_Decimal128, _Decimal128);
187
extern CMPtype __bid_gedd2 (_Decimal64, _Decimal64);
188
extern CMPtype __bid_gesd2 (_Decimal32, _Decimal32);
189
extern CMPtype __bid_getd2 (_Decimal128, _Decimal128);
190
extern CMPtype __bid_gtdd2 (_Decimal64, _Decimal64);
191
extern CMPtype __bid_gtsd2 (_Decimal32, _Decimal32);
192
extern CMPtype __bid_gttd2 (_Decimal128, _Decimal128);
193
extern CMPtype __bid_ledd2 (_Decimal64, _Decimal64);
194
extern CMPtype __bid_lesd2 (_Decimal32, _Decimal32);
195
extern CMPtype __bid_letd2 (_Decimal128, _Decimal128);
196
extern CMPtype __bid_ltdd2 (_Decimal64, _Decimal64);
197
extern CMPtype __bid_ltsd2 (_Decimal32, _Decimal32);
198
extern CMPtype __bid_lttd2 (_Decimal128, _Decimal128);
199
extern CMPtype __bid_nedd2 (_Decimal64, _Decimal64);
200
extern CMPtype __bid_nesd2 (_Decimal32, _Decimal32);
201
extern CMPtype __bid_netd2 (_Decimal128, _Decimal128);
202
extern CMPtype __bid_unorddd2 (_Decimal64, _Decimal64);
203
extern CMPtype __bid_unordsd2 (_Decimal32, _Decimal32);
204
extern CMPtype __bid_unordtd2 (_Decimal128, _Decimal128);
205
extern _Decimal64 __bid_muldd3 (_Decimal64, _Decimal64);
206
extern _Decimal32 __bid_mulsd3 (_Decimal32, _Decimal32);
207
extern _Decimal128 __bid_multd3 (_Decimal128, _Decimal128);
208
extern _Decimal64 __bid_extendsddd2 (_Decimal32);
209
extern DFtype __bid_extendsddf (_Decimal32);
210
extern DItype __bid_fixsddi (_Decimal32);
211
extern SFtype __bid_truncsdsf (_Decimal32);
212
extern SItype __bid_fixsdsi (_Decimal32);
213
extern _Decimal128 __bid_extendsdtd2 (_Decimal32);
214
#if BID_HAS_TF_MODE
215
extern TFtype __bid_extendsdtf (_Decimal32);
216
#endif
217
extern UDItype __bid_fixunssddi (_Decimal32);
218
extern USItype __bid_fixunssdsi (_Decimal32);
219
#if BID_HAS_XF_MODE
220
extern XFtype __bid_extendsdxf (_Decimal32);
221
#endif
222
extern _Decimal64 __bid_extendsfdd (SFtype);
223
extern _Decimal32 __bid_extendsfsd (SFtype);
224
extern _Decimal128 __bid_extendsftd (SFtype);
225
extern _Decimal64 __bid_floatsidd (SItype);
226
extern _Decimal32 __bid_floatsisd (SItype);
227
extern _Decimal128 __bid_floatsitd (SItype);
228
extern _Decimal64 __bid_trunctddd2 (_Decimal128);
229
extern DFtype __bid_trunctddf (_Decimal128);
230
extern DItype __bid_fixtddi (_Decimal128);
231
extern _Decimal32 __bid_trunctdsd2 (_Decimal128);
232
extern SFtype __bid_trunctdsf (_Decimal128);
233
extern SItype __bid_fixtdsi (_Decimal128);
234
#if BID_HAS_TF_MODE
235
extern TFtype __bid_trunctdtf (_Decimal128);
236
#endif
237
extern UDItype __bid_fixunstddi (_Decimal128);
238
extern USItype __bid_fixunstdsi (_Decimal128);
239
#if BID_HAS_XF_MODE
240
extern XFtype __bid_trunctdxf (_Decimal128);
241
#endif
242
#if BID_HAS_TF_MODE
243
extern _Decimal64 __bid_trunctfdd (TFtype);
244
extern _Decimal32 __bid_trunctfsd (TFtype);
245
extern _Decimal128 __bid_extendtftd (TFtype);
246
#endif
247
extern _Decimal64 __bid_floatunsdidd (UDItype);
248
extern _Decimal32 __bid_floatunsdisd (UDItype);
249
extern _Decimal128 __bid_floatunsditd (UDItype);
250
extern _Decimal64 __bid_floatunssidd (USItype);
251
extern _Decimal32 __bid_floatunssisd (USItype);
252
extern _Decimal128 __bid_floatunssitd (USItype);
253
#if BID_HAS_XF_MODE
254
extern _Decimal64 __bid_truncxfdd (XFtype);
255
extern _Decimal32 __bid_truncxfsd (XFtype);
256
extern _Decimal128 __bid_extendxftd (XFtype);
257
#endif
258
extern int isinfd32 (_Decimal32);
259
extern int isinfd64 (_Decimal64);
260
extern int isinfd128 (_Decimal128);
261
#endif  /* BID_HAS_GCC_DECIMAL_INTRINSICS */
262
 
263
extern void __dfp_set_round (int);
264
extern int __dfp_get_round (void);
265
extern void __dfp_clear_except (void);
266
extern int __dfp_test_except (int);
267
extern void __dfp_raise_except (int);
268
 
269
#if BID_HAS_GCC_DECIMAL_INTRINSICS
270
/* Used by gcc intrinsics.  We have to define them after UINT128
271
   is defined.  */
272
union decimal32 {
273
  _Decimal32 d;
274
  UINT32 i;
275
};
276
 
277
union decimal64 {
278
  _Decimal64 d;
279
  UINT64 i;
280
};
281
 
282
union decimal128 {
283
  _Decimal128 d;
284
  UINT128 i;
285
};
286
 
287
#if BID_HAS_TF_MODE
288
union float128 {
289
  TFtype f;
290
  UINT128 i;
291
};
292
#endif
293
#endif  /* BID_HAS_GCC_DECIMAL_INTRINSICS */
294
 
295
#endif /* _BID_GCC_INTRINSICS_H */

powered by: WebSVN 2.1.0

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