]>
git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/common/cgen-ops.h
1 /* Semantics ops support for CGEN-based simulators.
2 Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
3 Contributed by Cygnus Solutions.
5 This file is part of the GNU Simulators.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License along
18 with this program; if not, write to the Free Software Foundation, Inc.,
19 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23 #ifndef CGEN_SEM_OPS_H
24 #define CGEN_SEM_OPS_H
26 /* Semantic operations.
27 At one point this file was machine generated. Maybe it will be again. */
29 /* These don't really have a mode. */
30 #define ANDIF(x, y) ((x) && (y))
31 #define ORIF(x, y) ((x) || (y))
33 #define ANDBI(x, y) ((x) & (y))
34 #define ORBI(x, y) ((x) | (y))
35 #define XORBI(x, y) ((x) ^ (y))
36 #define NEGBI(x) (- (x))
37 #define NOTBI(x) (! (BI) (x))
38 #define INVBI(x) (~ (x))
39 #define EQBI(x, y) ((BI) (x) == (BI) (y))
40 #define NEBI(x, y) ((BI) (x) != (BI) (y))
41 #define LTBI(x, y) ((BI) (x) < (BI) (y))
42 #define LEBI(x, y) ((BI) (x) <= (BI) (y))
43 #define GTBI(x, y) ((BI) (x) > (BI) (y))
44 #define GEBI(x, y) ((BI) (x) >= (BI) (y))
45 #define LTUBI(x, y) ((BI) (x) < (BI) (y))
46 #define LEUBI(x, y) ((BI) (x) <= (BI) (y))
47 #define GTUBI(x, y) ((BI) (x) > (BI) (y))
48 #define GEUBI(x, y) ((BI) (x) >= (BI) (y))
50 #define ADDQI(x, y) ((x) + (y))
51 #define SUBQI(x, y) ((x) - (y))
52 #define MULQI(x, y) ((x) * (y))
53 #define DIVQI(x, y) ((QI) (x) / (QI) (y))
54 #define UDIVQI(x, y) ((UQI) (x) / (UQI) (y))
55 #define MODQI(x, y) ((QI) (x) % (QI) (y))
56 #define UMODQI(x, y) ((UQI) (x) % (UQI) (y))
57 #define SRAQI(x, y) ((QI) (x) >> (y))
58 #define SRLQI(x, y) ((UQI) (x) >> (y))
59 #define SLLQI(x, y) ((UQI) (x) << (y))
60 extern QI RORQI
PARAMS ((QI
, int));
61 extern QI ROLQI
PARAMS ((QI
, int));
62 #define ANDQI(x, y) ((x) & (y))
63 #define ORQI(x, y) ((x) | (y))
64 #define XORQI(x, y) ((x) ^ (y))
65 #define NEGQI(x) (- (x))
66 #define NOTQI(x) (! (QI) (x))
67 #define INVQI(x) (~ (x))
68 #define EQQI(x, y) ((QI) (x) == (QI) (y))
69 #define NEQI(x, y) ((QI) (x) != (QI) (y))
70 #define LTQI(x, y) ((QI) (x) < (QI) (y))
71 #define LEQI(x, y) ((QI) (x) <= (QI) (y))
72 #define GTQI(x, y) ((QI) (x) > (QI) (y))
73 #define GEQI(x, y) ((QI) (x) >= (QI) (y))
74 #define LTUQI(x, y) ((UQI) (x) < (UQI) (y))
75 #define LEUQI(x, y) ((UQI) (x) <= (UQI) (y))
76 #define GTUQI(x, y) ((UQI) (x) > (UQI) (y))
77 #define GEUQI(x, y) ((UQI) (x) >= (UQI) (y))
79 #define ADDHI(x, y) ((x) + (y))
80 #define SUBHI(x, y) ((x) - (y))
81 #define MULHI(x, y) ((x) * (y))
82 #define DIVHI(x, y) ((HI) (x) / (HI) (y))
83 #define UDIVHI(x, y) ((UHI) (x) / (UHI) (y))
84 #define MODHI(x, y) ((HI) (x) % (HI) (y))
85 #define UMODHI(x, y) ((UHI) (x) % (UHI) (y))
86 #define SRAHI(x, y) ((HI) (x) >> (y))
87 #define SRLHI(x, y) ((UHI) (x) >> (y))
88 #define SLLHI(x, y) ((UHI) (x) << (y))
89 extern HI RORHI
PARAMS ((HI
, int));
90 extern HI ROLHI
PARAMS ((HI
, int));
91 #define ANDHI(x, y) ((x) & (y))
92 #define ORHI(x, y) ((x) | (y))
93 #define XORHI(x, y) ((x) ^ (y))
94 #define NEGHI(x) (- (x))
95 #define NOTHI(x) (! (HI) (x))
96 #define INVHI(x) (~ (x))
97 #define EQHI(x, y) ((HI) (x) == (HI) (y))
98 #define NEHI(x, y) ((HI) (x) != (HI) (y))
99 #define LTHI(x, y) ((HI) (x) < (HI) (y))
100 #define LEHI(x, y) ((HI) (x) <= (HI) (y))
101 #define GTHI(x, y) ((HI) (x) > (HI) (y))
102 #define GEHI(x, y) ((HI) (x) >= (HI) (y))
103 #define LTUHI(x, y) ((UHI) (x) < (UHI) (y))
104 #define LEUHI(x, y) ((UHI) (x) <= (UHI) (y))
105 #define GTUHI(x, y) ((UHI) (x) > (UHI) (y))
106 #define GEUHI(x, y) ((UHI) (x) >= (UHI) (y))
108 #define ADDSI(x, y) ((x) + (y))
109 #define SUBSI(x, y) ((x) - (y))
110 #define MULSI(x, y) ((x) * (y))
111 #define DIVSI(x, y) ((SI) (x) / (SI) (y))
112 #define UDIVSI(x, y) ((USI) (x) / (USI) (y))
113 #define MODSI(x, y) ((SI) (x) % (SI) (y))
114 #define UMODSI(x, y) ((USI) (x) % (USI) (y))
115 #define SRASI(x, y) ((SI) (x) >> (y))
116 #define SRLSI(x, y) ((USI) (x) >> (y))
117 #define SLLSI(x, y) ((USI) (x) << (y))
118 extern SI RORSI
PARAMS ((SI
, int));
119 extern SI ROLSI
PARAMS ((SI
, int));
120 #define ANDSI(x, y) ((x) & (y))
121 #define ORSI(x, y) ((x) | (y))
122 #define XORSI(x, y) ((x) ^ (y))
123 #define NEGSI(x) (- (x))
124 #define NOTSI(x) (! (SI) (x))
125 #define INVSI(x) (~ (x))
126 #define EQSI(x, y) ((SI) (x) == (SI) (y))
127 #define NESI(x, y) ((SI) (x) != (SI) (y))
128 #define LTSI(x, y) ((SI) (x) < (SI) (y))
129 #define LESI(x, y) ((SI) (x) <= (SI) (y))
130 #define GTSI(x, y) ((SI) (x) > (SI) (y))
131 #define GESI(x, y) ((SI) (x) >= (SI) (y))
132 #define LTUSI(x, y) ((USI) (x) < (USI) (y))
133 #define LEUSI(x, y) ((USI) (x) <= (USI) (y))
134 #define GTUSI(x, y) ((USI) (x) > (USI) (y))
135 #define GEUSI(x, y) ((USI) (x) >= (USI) (y))
138 extern DI ADDDI
PARAMS ((DI
, DI
));
139 extern DI SUBDI
PARAMS ((DI
, DI
));
140 extern DI MULDI
PARAMS ((DI
, DI
));
141 extern DI DIVDI
PARAMS ((DI
, DI
));
142 extern DI UDIVDI
PARAMS ((DI
, DI
));
143 extern DI MODDI
PARAMS ((DI
, DI
));
144 extern DI UMODDI
PARAMS ((DI
, DI
));
145 extern DI SRADI
PARAMS ((DI
, int));
146 extern UDI SRLDI
PARAMS ((UDI
, int));
147 extern UDI SLLDI
PARAMS ((UDI
, int));
148 extern DI RORDI
PARAMS ((DI
, int));
149 extern DI ROLDI
PARAMS ((DI
, int));
150 extern DI ANDDI
PARAMS ((DI
, DI
));
151 extern DI ORDI
PARAMS ((DI
, DI
));
152 extern DI XORDI
PARAMS ((DI
, DI
));
153 extern DI NEGDI
PARAMS ((DI
));
154 extern int NOTDI
PARAMS ((DI
));
155 extern DI INVDI
PARAMS ((DI
));
156 extern int EQDI
PARAMS ((DI
, DI
));
157 extern int NEDI
PARAMS ((DI
, DI
));
158 extern int LTDI
PARAMS ((DI
, DI
));
159 extern int LEDI
PARAMS ((DI
, DI
));
160 extern int GTDI
PARAMS ((DI
, DI
));
161 extern int GEDI
PARAMS ((DI
, DI
));
162 extern int LTUDI
PARAMS ((UDI
, UDI
));
163 extern int LEUDI
PARAMS ((UDI
, UDI
));
164 extern int GTUDI
PARAMS ((UDI
, UDI
));
165 extern int GEUDI
PARAMS ((UDI
, UDI
));
166 #else /* ! DI_FN_SUPPORT */
167 #define ADDDI(x, y) ((x) + (y))
168 #define SUBDI(x, y) ((x) - (y))
169 #define MULDI(x, y) ((x) * (y))
170 #define DIVDI(x, y) ((DI) (x) / (DI) (y))
171 #define UDIVDI(x, y) ((UDI) (x) / (UDI) (y))
172 #define MODDI(x, y) ((DI) (x) % (DI) (y))
173 #define UMODDI(x, y) ((UDI) (x) % (UDI) (y))
174 #define SRADI(x, y) ((DI) (x) >> (y))
175 #define SRLDI(x, y) ((UDI) (x) >> (y))
176 #define SLLDI(x, y) ((UDI) (x) << (y))
177 extern DI RORDI
PARAMS ((DI
, int));
178 extern DI ROLDI
PARAMS ((DI
, int));
179 #define ANDDI(x, y) ((x) & (y))
180 #define ORDI(x, y) ((x) | (y))
181 #define XORDI(x, y) ((x) ^ (y))
182 #define NEGDI(x) (- (x))
183 #define NOTDI(x) (! (DI) (x))
184 #define INVDI(x) (~ (x))
185 #define EQDI(x, y) ((DI) (x) == (DI) (y))
186 #define NEDI(x, y) ((DI) (x) != (DI) (y))
187 #define LTDI(x, y) ((DI) (x) < (DI) (y))
188 #define LEDI(x, y) ((DI) (x) <= (DI) (y))
189 #define GTDI(x, y) ((DI) (x) > (DI) (y))
190 #define GEDI(x, y) ((DI) (x) >= (DI) (y))
191 #define LTUDI(x, y) ((UDI) (x) < (UDI) (y))
192 #define LEUDI(x, y) ((UDI) (x) <= (UDI) (y))
193 #define GTUDI(x, y) ((UDI) (x) > (UDI) (y))
194 #define GEUDI(x, y) ((UDI) (x) >= (UDI) (y))
195 #endif /* DI_FN_SUPPORT */
198 extern SF ADDSF
PARAMS ((SF
, SF
));
199 extern SF SUBSF
PARAMS ((SF
, SF
));
200 extern SF NEGSF
PARAMS ((SF
));
201 extern SF MULSF
PARAMS ((SF
, SF
));
202 extern SF DIVSF
PARAMS ((SF
, SF
));
203 extern int EQSF
PARAMS ((SF
, SF
));
204 extern int NESF
PARAMS ((SF
, SF
));
205 extern int LTSF
PARAMS ((SF
, SF
));
206 extern int LESF
PARAMS ((SF
, SF
));
207 extern int GTSF
PARAMS ((SF
, SF
));
208 extern int GESF
PARAMS ((SF
, SF
));
209 extern SF ABSSF
PARAMS ((SF
));
210 extern SF SQRTSF
PARAMS ((SF
));
211 extern SF COSSF
PARAMS ((SF
));
212 extern SF SINSF
PARAMS ((SF
));
213 #else /* ! SF_FN_SUPPORT */
214 #define ADDSF(x, y) ((x) + (y))
215 #define SUBSF(x, y) ((x) - (y))
216 #define NEGSF(x) (- (x))
217 #define MULSF(x, y) ((x) * (y))
218 #define DIVSF(x, y) ((x) / (y))
219 #define EQSF(x, y) ((SF) (x) == (SF) (y))
220 #define NESF(x, y) ((SF) (x) != (SF) (y))
221 #define LTSF(x, y) ((SF) (x) < (SF) (y))
222 #define LESF(x, y) ((SF) (x) <= (SF) (y))
223 #define GTSF(x, y) ((SF) (x) > (SF) (y))
224 #define GESF(x, y) ((SF) (x) >= (SF) (y))
225 extern SF ABSSF
PARAMS ((SF
));
226 extern SF SQRTSF
PARAMS ((SF
));
227 extern SF COSSF
PARAMS ((SF
));
228 extern SF SINSF
PARAMS ((SF
));
229 #endif /* SF_FN_SUPPORT */
232 extern DF ADDDF
PARAMS ((DF
, DF
));
233 extern DF SUBDF
PARAMS ((DF
, DF
));
234 extern DF NEGDF
PARAMS ((DF
));
235 extern DF MULDF
PARAMS ((DF
, DF
));
236 extern DF DIVDF
PARAMS ((DF
, DF
));
237 extern int EQDF
PARAMS ((DF
, DF
));
238 extern int NEDF
PARAMS ((DF
, DF
));
239 extern int LTDF
PARAMS ((DF
, DF
));
240 extern int LEDF
PARAMS ((DF
, DF
));
241 extern int GTDF
PARAMS ((DF
, DF
));
242 extern int GEDF
PARAMS ((DF
, DF
));
243 extern DF ABSDF
PARAMS ((DF
));
244 extern DF SQRTDF
PARAMS ((DF
));
245 extern DF COSDF
PARAMS ((DF
));
246 extern DF SINDF
PARAMS ((DF
));
247 #else /* ! DF_FN_SUPPORT */
248 #define ADDDF(x, y) ((x) + (y))
249 #define SUBDF(x, y) ((x) - (y))
250 #define NEGDF(x) (- (x))
251 #define MULDF(x, y) ((x) * (y))
252 #define DIVDF(x, y) ((x) / (y))
253 #define EQDF(x, y) ((DF) (x) == (DF) (y))
254 #define NEDF(x, y) ((DF) (x) != (DF) (y))
255 #define LTDF(x, y) ((DF) (x) < (DF) (y))
256 #define LEDF(x, y) ((DF) (x) <= (DF) (y))
257 #define GTDF(x, y) ((DF) (x) > (DF) (y))
258 #define GEDF(x, y) ((DF) (x) >= (DF) (y))
259 extern DF ABSDF
PARAMS ((DF
));
260 extern DF SQRTDF
PARAMS ((DF
));
261 extern DF COSDF
PARAMS ((DF
));
262 extern DF SINDF
PARAMS ((DF
));
263 #endif /* DF_FN_SUPPORT */
266 extern XF ADDXF
PARAMS ((XF
, XF
));
267 extern XF SUBXF
PARAMS ((XF
, XF
));
268 extern XF NEGXF
PARAMS ((XF
));
269 extern XF MULXF
PARAMS ((XF
, XF
));
270 extern XF DIVXF
PARAMS ((XF
, XF
));
271 extern int EQXF
PARAMS ((XF
, XF
));
272 extern int NEXF
PARAMS ((XF
, XF
));
273 extern int LTXF
PARAMS ((XF
, XF
));
274 extern int LEXF
PARAMS ((XF
, XF
));
275 extern int GTXF
PARAMS ((XF
, XF
));
276 extern int GEXF
PARAMS ((XF
, XF
));
277 extern XF ABSXF
PARAMS ((XF
));
278 extern XF SQRTXF
PARAMS ((XF
));
279 extern XF COSXF
PARAMS ((XF
));
280 extern XF SINXF
PARAMS ((XF
));
281 #else /* ! XF_FN_SUPPORT */
282 #define ADDXF(x, y) ((x) + (y))
283 #define SUBXF(x, y) ((x) - (y))
284 #define NEGXF(x) (- (x))
285 #define MULXF(x, y) ((x) * (y))
286 #define DIVXF(x, y) ((x) / (y))
287 #define EQXF(x, y) ((XF) (x) == (XF) (y))
288 #define NEXF(x, y) ((XF) (x) != (XF) (y))
289 #define LTXF(x, y) ((XF) (x) < (XF) (y))
290 #define LEXF(x, y) ((XF) (x) <= (XF) (y))
291 #define GTXF(x, y) ((XF) (x) > (XF) (y))
292 #define GEXF(x, y) ((XF) (x) >= (XF) (y))
293 extern XF ABSXF
PARAMS ((XF
));
294 extern XF SQRTXF
PARAMS ((XF
));
295 extern XF COSXF
PARAMS ((XF
));
296 extern XF SINXF
PARAMS ((XF
));
297 #endif /* XF_FN_SUPPORT */
300 extern TF ADDTF
PARAMS ((TF
, TF
));
301 extern TF SUBTF
PARAMS ((TF
, TF
));
302 extern TF NEGTF
PARAMS ((TF
));
303 extern TF MULTF
PARAMS ((TF
, TF
));
304 extern TF DIVTF
PARAMS ((TF
, TF
));
305 extern int EQTF
PARAMS ((TF
, TF
));
306 extern int NETF
PARAMS ((TF
, TF
));
307 extern int LTTF
PARAMS ((TF
, TF
));
308 extern int LETF
PARAMS ((TF
, TF
));
309 extern int GTTF
PARAMS ((TF
, TF
));
310 extern int GETF
PARAMS ((TF
, TF
));
311 extern TF ABSTF
PARAMS ((TF
));
312 extern TF SQRTTF
PARAMS ((TF
));
313 extern TF COSTF
PARAMS ((TF
));
314 extern TF SINTF
PARAMS ((TF
));
315 #else /* ! TF_FN_SUPPORT */
316 #define ADDTF(x, y) ((x) + (y))
317 #define SUBTF(x, y) ((x) - (y))
318 #define NEGTF(x) (- (x))
319 #define MULTF(x, y) ((x) * (y))
320 #define DIVTF(x, y) ((x) / (y))
321 #define EQTF(x, y) ((TF) (x) == (TF) (y))
322 #define NETF(x, y) ((TF) (x) != (TF) (y))
323 #define LTTF(x, y) ((TF) (x) < (TF) (y))
324 #define LETF(x, y) ((TF) (x) <= (TF) (y))
325 #define GTTF(x, y) ((TF) (x) > (TF) (y))
326 #define GETF(x, y) ((TF) (x) >= (TF) (y))
327 extern TF ABSTF
PARAMS ((TF
));
328 extern TF SQRTTF
PARAMS ((TF
));
329 extern TF COSTF
PARAMS ((TF
));
330 extern TF SINTF
PARAMS ((TF
));
331 #endif /* TF_FN_SUPPORT */
334 #define EXTBIQI(x) ((QI) (BI) (x))
335 #define EXTBIHI(x) ((HI) (BI) (x))
336 #define EXTBISI(x) ((SI) (BI) (x))
337 #if defined (DI_FN_SUPPORT)
338 extern DI EXTBIDI
PARAMS ((BI
));
340 #define EXTBIDI(x) ((DI) (BI) (x))
342 #define EXTQIHI(x) ((HI) (QI) (x))
343 #define EXTQISI(x) ((SI) (QI) (x))
344 #if defined (DI_FN_SUPPORT)
345 extern DI EXTQIDI
PARAMS ((QI
));
347 #define EXTQIDI(x) ((DI) (QI) (x))
349 #define EXTHISI(x) ((SI) (HI) (x))
350 #if defined (DI_FN_SUPPORT)
351 extern DI EXTHIDI
PARAMS ((HI
));
353 #define EXTHIDI(x) ((DI) (HI) (x))
355 #if defined (DI_FN_SUPPORT)
356 extern DI EXTSIDI
PARAMS ((SI
));
358 #define EXTSIDI(x) ((DI) (SI) (x))
360 #if defined (SF_FN_SUPPORT) || defined (DF_FN_SUPPORT)
361 extern DF EXTSFDF
PARAMS ((SF
));
363 #define EXTSFDF(x) ((DF) (SF) (x))
365 #if defined (SF_FN_SUPPORT) || defined (XF_FN_SUPPORT)
366 extern XF EXTSFXF
PARAMS ((SF
));
368 #define EXTSFXF(x) ((XF) (SF) (x))
370 #if defined (SF_FN_SUPPORT) || defined (TF_FN_SUPPORT)
371 extern TF EXTSFTF
PARAMS ((SF
));
373 #define EXTSFTF(x) ((TF) (SF) (x))
375 #if defined (DF_FN_SUPPORT) || defined (XF_FN_SUPPORT)
376 extern XF EXTDFXF
PARAMS ((DF
));
378 #define EXTDFXF(x) ((XF) (DF) (x))
380 #if defined (DF_FN_SUPPORT) || defined (TF_FN_SUPPORT)
381 extern TF EXTDFTF
PARAMS ((DF
));
383 #define EXTDFTF(x) ((TF) (DF) (x))
385 #if defined (XF_FN_SUPPORT) || defined (TF_FN_SUPPORT)
386 extern TF EXTXFTF
PARAMS ((XF
));
388 #define EXTXFTF(x) ((TF) (XF) (x))
390 #define ZEXTBIQI(x) ((QI) (BI) (x))
391 #define ZEXTBIHI(x) ((HI) (BI) (x))
392 #define ZEXTBISI(x) ((SI) (BI) (x))
393 #if defined (DI_FN_SUPPORT)
394 extern DI ZEXTBIDI
PARAMS ((BI
));
396 #define ZEXTBIDI(x) ((DI) (BI) (x))
398 #define ZEXTQIHI(x) ((HI) (UQI) (x))
399 #define ZEXTQISI(x) ((SI) (UQI) (x))
400 #if defined (DI_FN_SUPPORT)
401 extern DI ZEXTQIDI
PARAMS ((QI
));
403 #define ZEXTQIDI(x) ((DI) (UQI) (x))
405 #define ZEXTHISI(x) ((SI) (UHI) (x))
406 #if defined (DI_FN_SUPPORT)
407 extern DI ZEXTHIDI
PARAMS ((HI
));
409 #define ZEXTHIDI(x) ((DI) (UHI) (x))
411 #if defined (DI_FN_SUPPORT)
412 extern DI ZEXTSIDI
PARAMS ((SI
));
414 #define ZEXTSIDI(x) ((DI) (USI) (x))
416 #define TRUNCQIBI(x) ((BI) (QI) (x))
417 #define TRUNCHIBI(x) ((BI) (HI) (x))
418 #define TRUNCHIQI(x) ((QI) (HI) (x))
419 #define TRUNCSIBI(x) ((BI) (SI) (x))
420 #define TRUNCSIQI(x) ((QI) (SI) (x))
421 #define TRUNCSIHI(x) ((HI) (SI) (x))
422 #if defined (DI_FN_SUPPORT)
423 extern BI TRUNCDIBI
PARAMS ((DI
));
425 #define TRUNCDIBI(x) ((BI) (DI) (x))
427 #if defined (DI_FN_SUPPORT)
428 extern QI TRUNCDIQI
PARAMS ((DI
));
430 #define TRUNCDIQI(x) ((QI) (DI) (x))
432 #if defined (DI_FN_SUPPORT)
433 extern HI TRUNCDIHI
PARAMS ((DI
));
435 #define TRUNCDIHI(x) ((HI) (DI) (x))
437 #if defined (DI_FN_SUPPORT)
438 extern SI TRUNCDISI
PARAMS ((DI
));
440 #define TRUNCDISI(x) ((SI) (DI) (x))
442 #if defined (DF_FN_SUPPORT) || defined (SF_FN_SUPPORT)
443 extern SF TRUNCDFSF
PARAMS ((DF
));
445 #define TRUNCDFSF(x) ((SF) (DF) (x))
447 #if defined (XF_FN_SUPPORT) || defined (SF_FN_SUPPORT)
448 extern SF TRUNCXFSF
PARAMS ((XF
));
450 #define TRUNCXFSF(x) ((SF) (XF) (x))
452 #if defined (XF_FN_SUPPORT) || defined (DF_FN_SUPPORT)
453 extern DF TRUNCXFDF
PARAMS ((XF
));
455 #define TRUNCXFDF(x) ((DF) (XF) (x))
457 #if defined (TF_FN_SUPPORT) || defined (SF_FN_SUPPORT)
458 extern SF TRUNCTFSF
PARAMS ((TF
));
460 #define TRUNCTFSF(x) ((SF) (TF) (x))
462 #if defined (TF_FN_SUPPORT) || defined (DF_FN_SUPPORT)
463 extern DF TRUNCTFDF
PARAMS ((TF
));
465 #define TRUNCTFDF(x) ((DF) (TF) (x))
467 #if defined (TF_FN_SUPPORT) || defined (XF_FN_SUPPORT)
468 extern XF TRUNCTFXF
PARAMS ((TF
));
470 #define TRUNCTFXF(x) ((XF) (TF) (x))
472 #if defined (SF_FN_SUPPORT)
473 extern SF FLOATQISF
PARAMS ((QI
));
475 #define FLOATQISF(x) ((SF) (QI) (x))
477 #if defined (DF_FN_SUPPORT)
478 extern DF FLOATQIDF
PARAMS ((QI
));
480 #define FLOATQIDF(x) ((DF) (QI) (x))
482 #if defined (XF_FN_SUPPORT)
483 extern XF FLOATQIXF
PARAMS ((QI
));
485 #define FLOATQIXF(x) ((XF) (QI) (x))
487 #if defined (TF_FN_SUPPORT)
488 extern TF FLOATQITF
PARAMS ((QI
));
490 #define FLOATQITF(x) ((TF) (QI) (x))
492 #if defined (SF_FN_SUPPORT)
493 extern SF FLOATHISF
PARAMS ((HI
));
495 #define FLOATHISF(x) ((SF) (HI) (x))
497 #if defined (DF_FN_SUPPORT)
498 extern DF FLOATHIDF
PARAMS ((HI
));
500 #define FLOATHIDF(x) ((DF) (HI) (x))
502 #if defined (XF_FN_SUPPORT)
503 extern XF FLOATHIXF
PARAMS ((HI
));
505 #define FLOATHIXF(x) ((XF) (HI) (x))
507 #if defined (TF_FN_SUPPORT)
508 extern TF FLOATHITF
PARAMS ((HI
));
510 #define FLOATHITF(x) ((TF) (HI) (x))
512 #if defined (SF_FN_SUPPORT)
513 extern SF FLOATSISF
PARAMS ((SI
));
515 #define FLOATSISF(x) ((SF) (SI) (x))
517 #if defined (DF_FN_SUPPORT)
518 extern DF FLOATSIDF
PARAMS ((SI
));
520 #define FLOATSIDF(x) ((DF) (SI) (x))
522 #if defined (XF_FN_SUPPORT)
523 extern XF FLOATSIXF
PARAMS ((SI
));
525 #define FLOATSIXF(x) ((XF) (SI) (x))
527 #if defined (TF_FN_SUPPORT)
528 extern TF FLOATSITF
PARAMS ((SI
));
530 #define FLOATSITF(x) ((TF) (SI) (x))
532 #if defined (DI_FN_SUPPORT) || defined (SF_FN_SUPPORT)
533 extern SF FLOATDISF
PARAMS ((DI
));
535 #define FLOATDISF(x) ((SF) (DI) (x))
537 #if defined (DI_FN_SUPPORT) || defined (DF_FN_SUPPORT)
538 extern DF FLOATDIDF
PARAMS ((DI
));
540 #define FLOATDIDF(x) ((DF) (DI) (x))
542 #if defined (DI_FN_SUPPORT) || defined (XF_FN_SUPPORT)
543 extern XF FLOATDIXF
PARAMS ((DI
));
545 #define FLOATDIXF(x) ((XF) (DI) (x))
547 #if defined (DI_FN_SUPPORT) || defined (TF_FN_SUPPORT)
548 extern TF FLOATDITF
PARAMS ((DI
));
550 #define FLOATDITF(x) ((TF) (DI) (x))
552 #if defined (SF_FN_SUPPORT)
553 extern SF UFLOATQISF
PARAMS ((QI
));
555 #define UFLOATQISF(x) ((SF) (UQI) (x))
557 #if defined (DF_FN_SUPPORT)
558 extern DF UFLOATQIDF
PARAMS ((QI
));
560 #define UFLOATQIDF(x) ((DF) (UQI) (x))
562 #if defined (XF_FN_SUPPORT)
563 extern XF UFLOATQIXF
PARAMS ((QI
));
565 #define UFLOATQIXF(x) ((XF) (UQI) (x))
567 #if defined (TF_FN_SUPPORT)
568 extern TF UFLOATQITF
PARAMS ((QI
));
570 #define UFLOATQITF(x) ((TF) (UQI) (x))
572 #if defined (SF_FN_SUPPORT)
573 extern SF UFLOATHISF
PARAMS ((HI
));
575 #define UFLOATHISF(x) ((SF) (UHI) (x))
577 #if defined (DF_FN_SUPPORT)
578 extern DF UFLOATHIDF
PARAMS ((HI
));
580 #define UFLOATHIDF(x) ((DF) (UHI) (x))
582 #if defined (XF_FN_SUPPORT)
583 extern XF UFLOATHIXF
PARAMS ((HI
));
585 #define UFLOATHIXF(x) ((XF) (UHI) (x))
587 #if defined (TF_FN_SUPPORT)
588 extern TF UFLOATHITF
PARAMS ((HI
));
590 #define UFLOATHITF(x) ((TF) (UHI) (x))
592 #if defined (SF_FN_SUPPORT)
593 extern SF UFLOATSISF
PARAMS ((SI
));
595 #define UFLOATSISF(x) ((SF) (USI) (x))
597 #if defined (DF_FN_SUPPORT)
598 extern DF UFLOATSIDF
PARAMS ((SI
));
600 #define UFLOATSIDF(x) ((DF) (USI) (x))
602 #if defined (XF_FN_SUPPORT)
603 extern XF UFLOATSIXF
PARAMS ((SI
));
605 #define UFLOATSIXF(x) ((XF) (USI) (x))
607 #if defined (TF_FN_SUPPORT)
608 extern TF UFLOATSITF
PARAMS ((SI
));
610 #define UFLOATSITF(x) ((TF) (USI) (x))
612 #if defined (DI_FN_SUPPORT) || defined (SF_FN_SUPPORT)
613 extern SF UFLOATDISF
PARAMS ((DI
));
615 #define UFLOATDISF(x) ((SF) (UDI) (x))
617 #if defined (DI_FN_SUPPORT) || defined (DF_FN_SUPPORT)
618 extern DF UFLOATDIDF
PARAMS ((DI
));
620 #define UFLOATDIDF(x) ((DF) (UDI) (x))
622 #if defined (DI_FN_SUPPORT) || defined (XF_FN_SUPPORT)
623 extern XF UFLOATDIXF
PARAMS ((DI
));
625 #define UFLOATDIXF(x) ((XF) (UDI) (x))
627 #if defined (DI_FN_SUPPORT) || defined (TF_FN_SUPPORT)
628 extern TF UFLOATDITF
PARAMS ((DI
));
630 #define UFLOATDITF(x) ((TF) (UDI) (x))
632 #if defined (SF_FN_SUPPORT)
633 extern BI FIXSFBI
PARAMS ((SF
));
635 #define FIXSFBI(x) ((BI) (SF) (x))
637 #if defined (SF_FN_SUPPORT)
638 extern QI FIXSFQI
PARAMS ((SF
));
640 #define FIXSFQI(x) ((QI) (SF) (x))
642 #if defined (SF_FN_SUPPORT)
643 extern HI FIXSFHI
PARAMS ((SF
));
645 #define FIXSFHI(x) ((HI) (SF) (x))
647 #if defined (SF_FN_SUPPORT)
648 extern SI FIXSFSI
PARAMS ((SF
));
650 #define FIXSFSI(x) ((SI) (SF) (x))
652 #if defined (SF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
653 extern DI FIXSFDI
PARAMS ((SF
));
655 #define FIXSFDI(x) ((DI) (SF) (x))
657 #if defined (DF_FN_SUPPORT)
658 extern BI FIXDFBI
PARAMS ((DF
));
660 #define FIXDFBI(x) ((BI) (DF) (x))
662 #if defined (DF_FN_SUPPORT)
663 extern QI FIXDFQI
PARAMS ((DF
));
665 #define FIXDFQI(x) ((QI) (DF) (x))
667 #if defined (DF_FN_SUPPORT)
668 extern HI FIXDFHI
PARAMS ((DF
));
670 #define FIXDFHI(x) ((HI) (DF) (x))
672 #if defined (DF_FN_SUPPORT)
673 extern SI FIXDFSI
PARAMS ((DF
));
675 #define FIXDFSI(x) ((SI) (DF) (x))
677 #if defined (DF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
678 extern DI FIXDFDI
PARAMS ((DF
));
680 #define FIXDFDI(x) ((DI) (DF) (x))
682 #if defined (XF_FN_SUPPORT)
683 extern BI FIXXFBI
PARAMS ((XF
));
685 #define FIXXFBI(x) ((BI) (XF) (x))
687 #if defined (XF_FN_SUPPORT)
688 extern QI FIXXFQI
PARAMS ((XF
));
690 #define FIXXFQI(x) ((QI) (XF) (x))
692 #if defined (XF_FN_SUPPORT)
693 extern HI FIXXFHI
PARAMS ((XF
));
695 #define FIXXFHI(x) ((HI) (XF) (x))
697 #if defined (XF_FN_SUPPORT)
698 extern SI FIXXFSI
PARAMS ((XF
));
700 #define FIXXFSI(x) ((SI) (XF) (x))
702 #if defined (XF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
703 extern DI FIXXFDI
PARAMS ((XF
));
705 #define FIXXFDI(x) ((DI) (XF) (x))
707 #if defined (TF_FN_SUPPORT)
708 extern BI FIXTFBI
PARAMS ((TF
));
710 #define FIXTFBI(x) ((BI) (TF) (x))
712 #if defined (TF_FN_SUPPORT)
713 extern QI FIXTFQI
PARAMS ((TF
));
715 #define FIXTFQI(x) ((QI) (TF) (x))
717 #if defined (TF_FN_SUPPORT)
718 extern HI FIXTFHI
PARAMS ((TF
));
720 #define FIXTFHI(x) ((HI) (TF) (x))
722 #if defined (TF_FN_SUPPORT)
723 extern SI FIXTFSI
PARAMS ((TF
));
725 #define FIXTFSI(x) ((SI) (TF) (x))
727 #if defined (TF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
728 extern DI FIXTFDI
PARAMS ((TF
));
730 #define FIXTFDI(x) ((DI) (TF) (x))
732 #if defined (SF_FN_SUPPORT)
733 extern QI UFIXSFQI
PARAMS ((SF
));
735 #define UFIXSFQI(x) ((UQI) (SF) (x))
737 #if defined (SF_FN_SUPPORT)
738 extern HI UFIXSFHI
PARAMS ((SF
));
740 #define UFIXSFHI(x) ((UHI) (SF) (x))
742 #if defined (SF_FN_SUPPORT)
743 extern SI UFIXSFSI
PARAMS ((SF
));
745 #define UFIXSFSI(x) ((USI) (SF) (x))
747 #if defined (SF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
748 extern DI UFIXSFDI
PARAMS ((SF
));
750 #define UFIXSFDI(x) ((UDI) (SF) (x))
752 #if defined (DF_FN_SUPPORT)
753 extern QI UFIXDFQI
PARAMS ((DF
));
755 #define UFIXDFQI(x) ((UQI) (DF) (x))
757 #if defined (DF_FN_SUPPORT)
758 extern HI UFIXDFHI
PARAMS ((DF
));
760 #define UFIXDFHI(x) ((UHI) (DF) (x))
762 #if defined (DF_FN_SUPPORT)
763 extern SI UFIXDFSI
PARAMS ((DF
));
765 #define UFIXDFSI(x) ((USI) (DF) (x))
767 #if defined (DF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
768 extern DI UFIXDFDI
PARAMS ((DF
));
770 #define UFIXDFDI(x) ((UDI) (DF) (x))
772 #if defined (XF_FN_SUPPORT)
773 extern QI UFIXXFQI
PARAMS ((XF
));
775 #define UFIXXFQI(x) ((UQI) (XF) (x))
777 #if defined (XF_FN_SUPPORT)
778 extern HI UFIXXFHI
PARAMS ((XF
));
780 #define UFIXXFHI(x) ((UHI) (XF) (x))
782 #if defined (XF_FN_SUPPORT)
783 extern SI UFIXXFSI
PARAMS ((XF
));
785 #define UFIXXFSI(x) ((USI) (XF) (x))
787 #if defined (XF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
788 extern DI UFIXXFDI
PARAMS ((XF
));
790 #define UFIXXFDI(x) ((UDI) (XF) (x))
792 #if defined (TF_FN_SUPPORT)
793 extern QI UFIXTFQI
PARAMS ((TF
));
795 #define UFIXTFQI(x) ((UQI) (TF) (x))
797 #if defined (TF_FN_SUPPORT)
798 extern HI UFIXTFHI
PARAMS ((TF
));
800 #define UFIXTFHI(x) ((UHI) (TF) (x))
802 #if defined (TF_FN_SUPPORT)
803 extern SI UFIXTFSI
PARAMS ((TF
));
805 #define UFIXTFSI(x) ((USI) (TF) (x))
807 #if defined (TF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
808 extern DI UFIXTFDI
PARAMS ((TF
));
810 #define UFIXTFDI(x) ((UDI) (TF) (x))
813 /* Semantic support utilities. */
817 #ifdef SEMOPS_DEFINE_INLINE
818 #define SEMOPS_INLINE
820 #define SEMOPS_INLINE extern inline
824 ADDCSI (SI a
, SI b
, BI c
)
826 SI res
= ADDSI (a
, ADDSI (b
, c
));
831 ADDCFSI (SI a
, SI b
, BI c
)
833 SI tmp
= ADDSI (a
, ADDSI (b
, c
));
834 BI res
= ((USI
) tmp
< (USI
) a
) || (c
&& tmp
== a
);
839 ADDOFSI (SI a
, SI b
, BI c
)
841 SI tmp
= ADDSI (a
, ADDSI (b
, c
));
842 BI res
= (((a
< 0) == (b
< 0))
843 && ((a
< 0) != (tmp
< 0)));
848 SUBCSI (SI a
, SI b
, BI c
)
850 SI res
= SUBSI (a
, ADDSI (b
, c
));
855 SUBCFSI (SI a
, SI b
, BI c
)
857 BI res
= ((USI
) a
< (USI
) b
) || (c
&& a
== b
);
862 SUBOFSI (SI a
, SI b
, BI c
)
864 SI tmp
= SUBSI (a
, ADDSI (b
, c
));
865 BI res
= (((a
< 0) != (b
< 0))
866 && ((a
< 0) != (tmp
< 0)));
872 SI
ADDCSI (SI
, SI
, BI
);
873 UBI
ADDCFSI (SI
, SI
, BI
);
874 UBI
ADDOFSI (SI
, SI
, BI
);
875 SI
SUBCSI (SI
, SI
, BI
);
876 UBI
SUBCFSI (SI
, SI
, BI
);
877 UBI
SUBOFSI (SI
, SI
, BI
);
881 /* DI mode support if "long long" doesn't exist.
882 At one point CGEN supported K&R C compilers, and ANSI C compilers without
883 "long long". One can argue the various merits of keeping this in or
884 throwing it out. I went to the trouble of adding it so for the time being
885 I'm leaving it in. */
889 DI
make_struct_di (SI
, SI
);
895 #endif /* DI_FN_SUPPORT */
897 #endif /* CGEN_SEM_OPS_H */