* linker.c (generic_link_add_symbol_list): Always init udata.p so
[deliverable/binutils-gdb.git] / sim / m32r / sem-ops.h
CommitLineData
646c6f2b
DE
1/* Semantics ops support for CGEN-based simulators.
2
3This file is machine generated.
4
5Copyright (C) 1996, 1997 Free Software Foundation, Inc.
6
7This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License along
20with this program; if not, write to the Free Software Foundation, Inc.,
2159 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#ifndef CGEN_SEM_OPS_H
26#define CGEN_SEM_OPS_H
27
28/* Semantic operations. */
29
30#define ADDBI(x, y) ((x) + (y))
31#define SUBBI(x, y) ((x) - (y))
32#define MULBI(x, y) ((x) * (y))
33#define DIVBI(x, y) ((BI) (x) / (BI) (y))
084219a5 34#define UDIVBI(x, y) ((UBI) (x) / (UBI) (y))
646c6f2b 35#define MODBI(x, y) ((BI) (x) % (BI) (y))
084219a5 36#define UMODBI(x, y) ((UBI) (x) % (UBI) (y))
646c6f2b
DE
37#define SRABI(x, y) ((BI) (x) >> (y))
38#define SRLBI(x, y) ((UBI) (x) >> (y))
39#define SHLBI(x, y) ((UBI) (x) << (y))
40extern BI RORBI PARAMS ((BI, int));
41extern BI ROLBI PARAMS ((BI, int));
42#define ANDBI(x, y) ((x) & (y))
43#define ORBI(x, y) ((x) | (y))
44#define XORBI(x, y) ((x) ^ (y))
45#define ANDIFBI(x, y) ((BI) (x) && (BI) (y))
46#define ORIFBI(x, y) ((BI) (x) || (BI) (y))
47#define NEGBI(x) (- (x))
48#define NOTBI(x) (! (BI) (x))
49#define INVBI(x) (~ (x))
50#define EQBI(x, y) ((BI) (x) == (BI) (y))
51#define NEBI(x, y) ((BI) (x) != (BI) (y))
52#define LTBI(x, y) ((BI) (x) < (BI) (y))
53#define LEBI(x, y) ((BI) (x) <= (BI) (y))
54#define GTBI(x, y) ((BI) (x) > (BI) (y))
55#define GEBI(x, y) ((BI) (x) >= (BI) (y))
56#define LTUBI(x, y) ((UBI) (x) < (UBI) (y))
57#define LEUBI(x, y) ((UBI) (x) <= (UBI) (y))
58#define GTUBI(x, y) ((UBI) (x) > (UBI) (y))
59#define GEUBI(x, y) ((UBI) (x) >= (UBI) (y))
60
61#define ADDQI(x, y) ((x) + (y))
62#define SUBQI(x, y) ((x) - (y))
63#define MULQI(x, y) ((x) * (y))
64#define DIVQI(x, y) ((QI) (x) / (QI) (y))
084219a5 65#define UDIVQI(x, y) ((UQI) (x) / (UQI) (y))
646c6f2b 66#define MODQI(x, y) ((QI) (x) % (QI) (y))
084219a5 67#define UMODQI(x, y) ((UQI) (x) % (UQI) (y))
646c6f2b
DE
68#define SRAQI(x, y) ((QI) (x) >> (y))
69#define SRLQI(x, y) ((UQI) (x) >> (y))
70#define SHLQI(x, y) ((UQI) (x) << (y))
71extern QI RORQI PARAMS ((QI, int));
72extern QI ROLQI PARAMS ((QI, int));
73#define ANDQI(x, y) ((x) & (y))
74#define ORQI(x, y) ((x) | (y))
75#define XORQI(x, y) ((x) ^ (y))
76#define ANDIFQI(x, y) ((QI) (x) && (QI) (y))
77#define ORIFQI(x, y) ((QI) (x) || (QI) (y))
78#define NEGQI(x) (- (x))
79#define NOTQI(x) (! (QI) (x))
80#define INVQI(x) (~ (x))
81#define EQQI(x, y) ((QI) (x) == (QI) (y))
82#define NEQI(x, y) ((QI) (x) != (QI) (y))
83#define LTQI(x, y) ((QI) (x) < (QI) (y))
84#define LEQI(x, y) ((QI) (x) <= (QI) (y))
85#define GTQI(x, y) ((QI) (x) > (QI) (y))
86#define GEQI(x, y) ((QI) (x) >= (QI) (y))
87#define LTUQI(x, y) ((UQI) (x) < (UQI) (y))
88#define LEUQI(x, y) ((UQI) (x) <= (UQI) (y))
89#define GTUQI(x, y) ((UQI) (x) > (UQI) (y))
90#define GEUQI(x, y) ((UQI) (x) >= (UQI) (y))
91
92#define ADDHI(x, y) ((x) + (y))
93#define SUBHI(x, y) ((x) - (y))
94#define MULHI(x, y) ((x) * (y))
95#define DIVHI(x, y) ((HI) (x) / (HI) (y))
084219a5 96#define UDIVHI(x, y) ((UHI) (x) / (UHI) (y))
646c6f2b 97#define MODHI(x, y) ((HI) (x) % (HI) (y))
084219a5 98#define UMODHI(x, y) ((UHI) (x) % (UHI) (y))
646c6f2b
DE
99#define SRAHI(x, y) ((HI) (x) >> (y))
100#define SRLHI(x, y) ((UHI) (x) >> (y))
101#define SHLHI(x, y) ((UHI) (x) << (y))
102extern HI RORHI PARAMS ((HI, int));
103extern HI ROLHI PARAMS ((HI, int));
104#define ANDHI(x, y) ((x) & (y))
105#define ORHI(x, y) ((x) | (y))
106#define XORHI(x, y) ((x) ^ (y))
107#define ANDIFHI(x, y) ((HI) (x) && (HI) (y))
108#define ORIFHI(x, y) ((HI) (x) || (HI) (y))
109#define NEGHI(x) (- (x))
110#define NOTHI(x) (! (HI) (x))
111#define INVHI(x) (~ (x))
112#define EQHI(x, y) ((HI) (x) == (HI) (y))
113#define NEHI(x, y) ((HI) (x) != (HI) (y))
114#define LTHI(x, y) ((HI) (x) < (HI) (y))
115#define LEHI(x, y) ((HI) (x) <= (HI) (y))
116#define GTHI(x, y) ((HI) (x) > (HI) (y))
117#define GEHI(x, y) ((HI) (x) >= (HI) (y))
118#define LTUHI(x, y) ((UHI) (x) < (UHI) (y))
119#define LEUHI(x, y) ((UHI) (x) <= (UHI) (y))
120#define GTUHI(x, y) ((UHI) (x) > (UHI) (y))
121#define GEUHI(x, y) ((UHI) (x) >= (UHI) (y))
122
123#define ADDSI(x, y) ((x) + (y))
124#define SUBSI(x, y) ((x) - (y))
125#define MULSI(x, y) ((x) * (y))
126#define DIVSI(x, y) ((SI) (x) / (SI) (y))
084219a5 127#define UDIVSI(x, y) ((USI) (x) / (USI) (y))
646c6f2b 128#define MODSI(x, y) ((SI) (x) % (SI) (y))
084219a5 129#define UMODSI(x, y) ((USI) (x) % (USI) (y))
646c6f2b
DE
130#define SRASI(x, y) ((SI) (x) >> (y))
131#define SRLSI(x, y) ((USI) (x) >> (y))
132#define SHLSI(x, y) ((USI) (x) << (y))
133extern SI RORSI PARAMS ((SI, int));
134extern SI ROLSI PARAMS ((SI, int));
135#define ANDSI(x, y) ((x) & (y))
136#define ORSI(x, y) ((x) | (y))
137#define XORSI(x, y) ((x) ^ (y))
138#define ANDIFSI(x, y) ((SI) (x) && (SI) (y))
139#define ORIFSI(x, y) ((SI) (x) || (SI) (y))
140#define NEGSI(x) (- (x))
141#define NOTSI(x) (! (SI) (x))
142#define INVSI(x) (~ (x))
143#define EQSI(x, y) ((SI) (x) == (SI) (y))
144#define NESI(x, y) ((SI) (x) != (SI) (y))
145#define LTSI(x, y) ((SI) (x) < (SI) (y))
146#define LESI(x, y) ((SI) (x) <= (SI) (y))
147#define GTSI(x, y) ((SI) (x) > (SI) (y))
148#define GESI(x, y) ((SI) (x) >= (SI) (y))
149#define LTUSI(x, y) ((USI) (x) < (USI) (y))
150#define LEUSI(x, y) ((USI) (x) <= (USI) (y))
151#define GTUSI(x, y) ((USI) (x) > (USI) (y))
152#define GEUSI(x, y) ((USI) (x) >= (USI) (y))
153
154#ifdef DI_FN_SUPPORT
155extern DI ADDDI PARAMS ((DI, DI));
156extern DI SUBDI PARAMS ((DI, DI));
157extern DI MULDI PARAMS ((DI, DI));
158extern DI DIVDI PARAMS ((DI, DI));
084219a5 159extern UDI UDIVDI PARAMS ((UDI, UDI));
646c6f2b 160extern DI MODDI PARAMS ((DI, DI));
084219a5 161extern UDI UMODDI PARAMS ((UDI, UDI));
646c6f2b
DE
162extern DI SRADI PARAMS ((DI, int));
163extern UDI SRLDI PARAMS ((UDI, int));
164extern UDI SHLDI PARAMS ((UDI, int));
165extern DI RORDI PARAMS ((DI, int));
166extern DI ROLDI PARAMS ((DI, int));
167extern DI ANDDI PARAMS ((DI, DI));
168extern DI ORDI PARAMS ((DI, DI));
169extern DI XORDI PARAMS ((DI, DI));
170extern int ANDIFDI PARAMS ((DI, DI));
171extern int ORIFDI PARAMS ((DI, DI));
172extern DI NEGDI PARAMS ((DI));
173extern int NOTDI PARAMS ((DI));
174extern DI INVDI PARAMS ((DI));
175extern int EQDI PARAMS ((DI, DI));
176extern int NEDI PARAMS ((DI, DI));
177extern int LTDI PARAMS ((DI, DI));
178extern int LEDI PARAMS ((DI, DI));
179extern int GTDI PARAMS ((DI, DI));
180extern int GEDI PARAMS ((DI, DI));
181extern int LTUDI PARAMS ((UDI, UDI));
182extern int LEUDI PARAMS ((UDI, UDI));
183extern int GTUDI PARAMS ((UDI, UDI));
184extern int GEUDI PARAMS ((UDI, UDI));
185#else /* ! DI_FN_SUPPORT */
186#define ADDDI(x, y) ((x) + (y))
187#define SUBDI(x, y) ((x) - (y))
188#define MULDI(x, y) ((x) * (y))
189#define DIVDI(x, y) ((DI) (x) / (DI) (y))
084219a5 190#define UDIVDI(x, y) ((UDI) (x) / (UDI) (y))
646c6f2b 191#define MODDI(x, y) ((DI) (x) % (DI) (y))
084219a5 192#define UMODDI(x, y) ((UDI) (x) % (UDI) (y))
646c6f2b
DE
193#define SRADI(x, y) ((DI) (x) >> (y))
194#define SRLDI(x, y) ((UDI) (x) >> (y))
195#define SHLDI(x, y) ((UDI) (x) << (y))
196extern DI RORDI PARAMS ((DI, int));
197extern DI ROLDI PARAMS ((DI, int));
198#define ANDDI(x, y) ((x) & (y))
199#define ORDI(x, y) ((x) | (y))
200#define XORDI(x, y) ((x) ^ (y))
201#define ANDIFDI(x, y) ((DI) (x) && (DI) (y))
202#define ORIFDI(x, y) ((DI) (x) || (DI) (y))
203#define NEGDI(x) (- (x))
204#define NOTDI(x) (! (DI) (x))
205#define INVDI(x) (~ (x))
206#define EQDI(x, y) ((DI) (x) == (DI) (y))
207#define NEDI(x, y) ((DI) (x) != (DI) (y))
208#define LTDI(x, y) ((DI) (x) < (DI) (y))
209#define LEDI(x, y) ((DI) (x) <= (DI) (y))
210#define GTDI(x, y) ((DI) (x) > (DI) (y))
211#define GEDI(x, y) ((DI) (x) >= (DI) (y))
212#define LTUDI(x, y) ((UDI) (x) < (UDI) (y))
213#define LEUDI(x, y) ((UDI) (x) <= (UDI) (y))
214#define GTUDI(x, y) ((UDI) (x) > (UDI) (y))
215#define GEUDI(x, y) ((UDI) (x) >= (UDI) (y))
216#endif /* DI_FN_SUPPORT */
217
218#ifdef SF_FN_SUPPORT
219extern SF ADDSF PARAMS ((SF, SF));
220extern SF SUBSF PARAMS ((SF, SF));
221extern SF NEGSF PARAMS ((SF));
222extern SF MULSF PARAMS ((SF, SF));
223extern SF DIVSF PARAMS ((SF, SF));
224extern int EQSF PARAMS ((SF, SF));
225extern int NESF PARAMS ((SF, SF));
226extern int LTSF PARAMS ((SF, SF));
227extern int LESF PARAMS ((SF, SF));
228extern int GTSF PARAMS ((SF, SF));
229extern int GESF PARAMS ((SF, SF));
230extern SF ABSSF PARAMS ((SF));
231extern SF SQRTSF PARAMS ((SF));
232extern SF COSSF PARAMS ((SF));
233extern SF SINSF PARAMS ((SF));
234#else /* ! SF_FN_SUPPORT */
235#define ADDSF(x, y) ((x) + (y))
236#define SUBSF(x, y) ((x) - (y))
237#define NEGSF(x) (- (x))
238#define MULSF(x, y) ((x) * (y))
239#define DIVSF(x, y) ((x) / (y))
240#define EQSF(x, y) ((SF) (x) == (SF) (y))
241#define NESF(x, y) ((SF) (x) != (SF) (y))
242#define LTSF(x, y) ((SF) (x) < (SF) (y))
243#define LESF(x, y) ((SF) (x) <= (SF) (y))
244#define GTSF(x, y) ((SF) (x) > (SF) (y))
245#define GESF(x, y) ((SF) (x) >= (SF) (y))
246extern SF ABSSF PARAMS ((SF));
247extern SF SQRTSF PARAMS ((SF));
248extern SF COSSF PARAMS ((SF));
249extern SF SINSF PARAMS ((SF));
250#endif /* SF_FN_SUPPORT */
251
252#ifdef DF_FN_SUPPORT
253extern DF ADDDF PARAMS ((DF, DF));
254extern DF SUBDF PARAMS ((DF, DF));
255extern DF NEGDF PARAMS ((DF));
256extern DF MULDF PARAMS ((DF, DF));
257extern DF DIVDF PARAMS ((DF, DF));
258extern int EQDF PARAMS ((DF, DF));
259extern int NEDF PARAMS ((DF, DF));
260extern int LTDF PARAMS ((DF, DF));
261extern int LEDF PARAMS ((DF, DF));
262extern int GTDF PARAMS ((DF, DF));
263extern int GEDF PARAMS ((DF, DF));
264extern DF ABSDF PARAMS ((DF));
265extern DF SQRTDF PARAMS ((DF));
266extern DF COSDF PARAMS ((DF));
267extern DF SINDF PARAMS ((DF));
268#else /* ! DF_FN_SUPPORT */
269#define ADDDF(x, y) ((x) + (y))
270#define SUBDF(x, y) ((x) - (y))
271#define NEGDF(x) (- (x))
272#define MULDF(x, y) ((x) * (y))
273#define DIVDF(x, y) ((x) / (y))
274#define EQDF(x, y) ((DF) (x) == (DF) (y))
275#define NEDF(x, y) ((DF) (x) != (DF) (y))
276#define LTDF(x, y) ((DF) (x) < (DF) (y))
277#define LEDF(x, y) ((DF) (x) <= (DF) (y))
278#define GTDF(x, y) ((DF) (x) > (DF) (y))
279#define GEDF(x, y) ((DF) (x) >= (DF) (y))
280extern DF ABSDF PARAMS ((DF));
281extern DF SQRTDF PARAMS ((DF));
282extern DF COSDF PARAMS ((DF));
283extern DF SINDF PARAMS ((DF));
284#endif /* DF_FN_SUPPORT */
285
286#ifdef XF_FN_SUPPORT
287extern XF ADDXF PARAMS ((XF, XF));
288extern XF SUBXF PARAMS ((XF, XF));
289extern XF NEGXF PARAMS ((XF));
290extern XF MULXF PARAMS ((XF, XF));
291extern XF DIVXF PARAMS ((XF, XF));
292extern int EQXF PARAMS ((XF, XF));
293extern int NEXF PARAMS ((XF, XF));
294extern int LTXF PARAMS ((XF, XF));
295extern int LEXF PARAMS ((XF, XF));
296extern int GTXF PARAMS ((XF, XF));
297extern int GEXF PARAMS ((XF, XF));
298extern XF ABSXF PARAMS ((XF));
299extern XF SQRTXF PARAMS ((XF));
300extern XF COSXF PARAMS ((XF));
301extern XF SINXF PARAMS ((XF));
302#else /* ! XF_FN_SUPPORT */
303#define ADDXF(x, y) ((x) + (y))
304#define SUBXF(x, y) ((x) - (y))
305#define NEGXF(x) (- (x))
306#define MULXF(x, y) ((x) * (y))
307#define DIVXF(x, y) ((x) / (y))
308#define EQXF(x, y) ((XF) (x) == (XF) (y))
309#define NEXF(x, y) ((XF) (x) != (XF) (y))
310#define LTXF(x, y) ((XF) (x) < (XF) (y))
311#define LEXF(x, y) ((XF) (x) <= (XF) (y))
312#define GTXF(x, y) ((XF) (x) > (XF) (y))
313#define GEXF(x, y) ((XF) (x) >= (XF) (y))
314extern XF ABSXF PARAMS ((XF));
315extern XF SQRTXF PARAMS ((XF));
316extern XF COSXF PARAMS ((XF));
317extern XF SINXF PARAMS ((XF));
318#endif /* XF_FN_SUPPORT */
319
320#ifdef TF_FN_SUPPORT
321extern TF ADDTF PARAMS ((TF, TF));
322extern TF SUBTF PARAMS ((TF, TF));
323extern TF NEGTF PARAMS ((TF));
324extern TF MULTF PARAMS ((TF, TF));
325extern TF DIVTF PARAMS ((TF, TF));
326extern int EQTF PARAMS ((TF, TF));
327extern int NETF PARAMS ((TF, TF));
328extern int LTTF PARAMS ((TF, TF));
329extern int LETF PARAMS ((TF, TF));
330extern int GTTF PARAMS ((TF, TF));
331extern int GETF PARAMS ((TF, TF));
332extern TF ABSTF PARAMS ((TF));
333extern TF SQRTTF PARAMS ((TF));
334extern TF COSTF PARAMS ((TF));
335extern TF SINTF PARAMS ((TF));
336#else /* ! TF_FN_SUPPORT */
337#define ADDTF(x, y) ((x) + (y))
338#define SUBTF(x, y) ((x) - (y))
339#define NEGTF(x) (- (x))
340#define MULTF(x, y) ((x) * (y))
341#define DIVTF(x, y) ((x) / (y))
342#define EQTF(x, y) ((TF) (x) == (TF) (y))
343#define NETF(x, y) ((TF) (x) != (TF) (y))
344#define LTTF(x, y) ((TF) (x) < (TF) (y))
345#define LETF(x, y) ((TF) (x) <= (TF) (y))
346#define GTTF(x, y) ((TF) (x) > (TF) (y))
347#define GETF(x, y) ((TF) (x) >= (TF) (y))
348extern TF ABSTF PARAMS ((TF));
349extern TF SQRTTF PARAMS ((TF));
350extern TF COSTF PARAMS ((TF));
351extern TF SINTF PARAMS ((TF));
352#endif /* TF_FN_SUPPORT */
353
354
355#define EXTBIQI(x) ((QI) (BI) (x))
356#define EXTBIHI(x) ((HI) (BI) (x))
357#define EXTBISI(x) ((SI) (BI) (x))
358#if defined (DI_FN_SUPPORT)
359extern DI EXTBIDI PARAMS ((BI));
360#else
361#define EXTBIDI(x) ((DI) (BI) (x))
362#endif
363#define EXTQIHI(x) ((HI) (QI) (x))
364#define EXTQISI(x) ((SI) (QI) (x))
365#if defined (DI_FN_SUPPORT)
366extern DI EXTQIDI PARAMS ((QI));
367#else
368#define EXTQIDI(x) ((DI) (QI) (x))
369#endif
370#define EXTHISI(x) ((SI) (HI) (x))
371#if defined (DI_FN_SUPPORT)
372extern DI EXTHIDI PARAMS ((HI));
373#else
374#define EXTHIDI(x) ((DI) (HI) (x))
375#endif
376#if defined (DI_FN_SUPPORT)
377extern DI EXTSIDI PARAMS ((SI));
378#else
379#define EXTSIDI(x) ((DI) (SI) (x))
380#endif
381#if defined (SF_FN_SUPPORT) || defined (DF_FN_SUPPORT)
382extern DF EXTSFDF PARAMS ((SF));
383#else
384#define EXTSFDF(x) ((DF) (SF) (x))
385#endif
386#if defined (SF_FN_SUPPORT) || defined (XF_FN_SUPPORT)
387extern XF EXTSFXF PARAMS ((SF));
388#else
389#define EXTSFXF(x) ((XF) (SF) (x))
390#endif
391#if defined (SF_FN_SUPPORT) || defined (TF_FN_SUPPORT)
392extern TF EXTSFTF PARAMS ((SF));
393#else
394#define EXTSFTF(x) ((TF) (SF) (x))
395#endif
396#if defined (DF_FN_SUPPORT) || defined (XF_FN_SUPPORT)
397extern XF EXTDFXF PARAMS ((DF));
398#else
399#define EXTDFXF(x) ((XF) (DF) (x))
400#endif
401#if defined (DF_FN_SUPPORT) || defined (TF_FN_SUPPORT)
402extern TF EXTDFTF PARAMS ((DF));
403#else
404#define EXTDFTF(x) ((TF) (DF) (x))
405#endif
406#if defined (XF_FN_SUPPORT) || defined (TF_FN_SUPPORT)
407extern TF EXTXFTF PARAMS ((XF));
408#else
409#define EXTXFTF(x) ((TF) (XF) (x))
410#endif
411#define ZEXTBIQI(x) ((QI) (UBI) (x))
412#define ZEXTBIHI(x) ((HI) (UBI) (x))
413#define ZEXTBISI(x) ((SI) (UBI) (x))
414#if defined (DI_FN_SUPPORT)
415extern DI ZEXTBIDI PARAMS ((BI));
416#else
417#define ZEXTBIDI(x) ((DI) (UBI) (x))
418#endif
419#define ZEXTQIHI(x) ((HI) (UQI) (x))
420#define ZEXTQISI(x) ((SI) (UQI) (x))
421#if defined (DI_FN_SUPPORT)
422extern DI ZEXTQIDI PARAMS ((QI));
423#else
424#define ZEXTQIDI(x) ((DI) (UQI) (x))
425#endif
426#define ZEXTHISI(x) ((SI) (UHI) (x))
427#if defined (DI_FN_SUPPORT)
428extern DI ZEXTHIDI PARAMS ((HI));
429#else
430#define ZEXTHIDI(x) ((DI) (UHI) (x))
431#endif
432#if defined (DI_FN_SUPPORT)
433extern DI ZEXTSIDI PARAMS ((SI));
434#else
435#define ZEXTSIDI(x) ((DI) (USI) (x))
436#endif
437#define TRUNCQIBI(x) ((BI) (QI) (x))
438#define TRUNCHIBI(x) ((BI) (HI) (x))
439#define TRUNCHIQI(x) ((QI) (HI) (x))
440#define TRUNCSIBI(x) ((BI) (SI) (x))
441#define TRUNCSIQI(x) ((QI) (SI) (x))
442#define TRUNCSIHI(x) ((HI) (SI) (x))
443#if defined (DI_FN_SUPPORT)
444extern BI TRUNCDIBI PARAMS ((DI));
445#else
446#define TRUNCDIBI(x) ((BI) (DI) (x))
447#endif
448#if defined (DI_FN_SUPPORT)
449extern QI TRUNCDIQI PARAMS ((DI));
450#else
451#define TRUNCDIQI(x) ((QI) (DI) (x))
452#endif
453#if defined (DI_FN_SUPPORT)
454extern HI TRUNCDIHI PARAMS ((DI));
455#else
456#define TRUNCDIHI(x) ((HI) (DI) (x))
457#endif
458#if defined (DI_FN_SUPPORT)
459extern SI TRUNCDISI PARAMS ((DI));
460#else
461#define TRUNCDISI(x) ((SI) (DI) (x))
462#endif
463#if defined (DF_FN_SUPPORT) || defined (SF_FN_SUPPORT)
464extern SF TRUNCDFSF PARAMS ((DF));
465#else
466#define TRUNCDFSF(x) ((SF) (DF) (x))
467#endif
468#if defined (XF_FN_SUPPORT) || defined (SF_FN_SUPPORT)
469extern SF TRUNCXFSF PARAMS ((XF));
470#else
471#define TRUNCXFSF(x) ((SF) (XF) (x))
472#endif
473#if defined (XF_FN_SUPPORT) || defined (DF_FN_SUPPORT)
474extern DF TRUNCXFDF PARAMS ((XF));
475#else
476#define TRUNCXFDF(x) ((DF) (XF) (x))
477#endif
478#if defined (TF_FN_SUPPORT) || defined (SF_FN_SUPPORT)
479extern SF TRUNCTFSF PARAMS ((TF));
480#else
481#define TRUNCTFSF(x) ((SF) (TF) (x))
482#endif
483#if defined (TF_FN_SUPPORT) || defined (DF_FN_SUPPORT)
484extern DF TRUNCTFDF PARAMS ((TF));
485#else
486#define TRUNCTFDF(x) ((DF) (TF) (x))
487#endif
488#if defined (TF_FN_SUPPORT) || defined (XF_FN_SUPPORT)
489extern XF TRUNCTFXF PARAMS ((TF));
490#else
491#define TRUNCTFXF(x) ((XF) (TF) (x))
492#endif
493#if defined (SF_FN_SUPPORT)
494extern SF FLOATBISF PARAMS ((BI));
495#else
496#define FLOATBISF(x) ((SF) (BI) (x))
497#endif
498#if defined (DF_FN_SUPPORT)
499extern DF FLOATBIDF PARAMS ((BI));
500#else
501#define FLOATBIDF(x) ((DF) (BI) (x))
502#endif
503#if defined (XF_FN_SUPPORT)
504extern XF FLOATBIXF PARAMS ((BI));
505#else
506#define FLOATBIXF(x) ((XF) (BI) (x))
507#endif
508#if defined (TF_FN_SUPPORT)
509extern TF FLOATBITF PARAMS ((BI));
510#else
511#define FLOATBITF(x) ((TF) (BI) (x))
512#endif
513#if defined (SF_FN_SUPPORT)
514extern SF FLOATQISF PARAMS ((QI));
515#else
516#define FLOATQISF(x) ((SF) (QI) (x))
517#endif
518#if defined (DF_FN_SUPPORT)
519extern DF FLOATQIDF PARAMS ((QI));
520#else
521#define FLOATQIDF(x) ((DF) (QI) (x))
522#endif
523#if defined (XF_FN_SUPPORT)
524extern XF FLOATQIXF PARAMS ((QI));
525#else
526#define FLOATQIXF(x) ((XF) (QI) (x))
527#endif
528#if defined (TF_FN_SUPPORT)
529extern TF FLOATQITF PARAMS ((QI));
530#else
531#define FLOATQITF(x) ((TF) (QI) (x))
532#endif
533#if defined (SF_FN_SUPPORT)
534extern SF FLOATHISF PARAMS ((HI));
535#else
536#define FLOATHISF(x) ((SF) (HI) (x))
537#endif
538#if defined (DF_FN_SUPPORT)
539extern DF FLOATHIDF PARAMS ((HI));
540#else
541#define FLOATHIDF(x) ((DF) (HI) (x))
542#endif
543#if defined (XF_FN_SUPPORT)
544extern XF FLOATHIXF PARAMS ((HI));
545#else
546#define FLOATHIXF(x) ((XF) (HI) (x))
547#endif
548#if defined (TF_FN_SUPPORT)
549extern TF FLOATHITF PARAMS ((HI));
550#else
551#define FLOATHITF(x) ((TF) (HI) (x))
552#endif
553#if defined (SF_FN_SUPPORT)
554extern SF FLOATSISF PARAMS ((SI));
555#else
556#define FLOATSISF(x) ((SF) (SI) (x))
557#endif
558#if defined (DF_FN_SUPPORT)
559extern DF FLOATSIDF PARAMS ((SI));
560#else
561#define FLOATSIDF(x) ((DF) (SI) (x))
562#endif
563#if defined (XF_FN_SUPPORT)
564extern XF FLOATSIXF PARAMS ((SI));
565#else
566#define FLOATSIXF(x) ((XF) (SI) (x))
567#endif
568#if defined (TF_FN_SUPPORT)
569extern TF FLOATSITF PARAMS ((SI));
570#else
571#define FLOATSITF(x) ((TF) (SI) (x))
572#endif
573#if defined (DI_FN_SUPPORT) || defined (SF_FN_SUPPORT)
574extern SF FLOATDISF PARAMS ((DI));
575#else
576#define FLOATDISF(x) ((SF) (DI) (x))
577#endif
578#if defined (DI_FN_SUPPORT) || defined (DF_FN_SUPPORT)
579extern DF FLOATDIDF PARAMS ((DI));
580#else
581#define FLOATDIDF(x) ((DF) (DI) (x))
582#endif
583#if defined (DI_FN_SUPPORT) || defined (XF_FN_SUPPORT)
584extern XF FLOATDIXF PARAMS ((DI));
585#else
586#define FLOATDIXF(x) ((XF) (DI) (x))
587#endif
588#if defined (DI_FN_SUPPORT) || defined (TF_FN_SUPPORT)
589extern TF FLOATDITF PARAMS ((DI));
590#else
591#define FLOATDITF(x) ((TF) (DI) (x))
592#endif
593#if defined (SF_FN_SUPPORT)
594extern SF UFLOATBISF PARAMS ((BI));
595#else
596#define UFLOATBISF(x) ((SF) (UBI) (x))
597#endif
598#if defined (DF_FN_SUPPORT)
599extern DF UFLOATBIDF PARAMS ((BI));
600#else
601#define UFLOATBIDF(x) ((DF) (UBI) (x))
602#endif
603#if defined (XF_FN_SUPPORT)
604extern XF UFLOATBIXF PARAMS ((BI));
605#else
606#define UFLOATBIXF(x) ((XF) (UBI) (x))
607#endif
608#if defined (TF_FN_SUPPORT)
609extern TF UFLOATBITF PARAMS ((BI));
610#else
611#define UFLOATBITF(x) ((TF) (UBI) (x))
612#endif
613#if defined (SF_FN_SUPPORT)
614extern SF UFLOATQISF PARAMS ((QI));
615#else
616#define UFLOATQISF(x) ((SF) (UQI) (x))
617#endif
618#if defined (DF_FN_SUPPORT)
619extern DF UFLOATQIDF PARAMS ((QI));
620#else
621#define UFLOATQIDF(x) ((DF) (UQI) (x))
622#endif
623#if defined (XF_FN_SUPPORT)
624extern XF UFLOATQIXF PARAMS ((QI));
625#else
626#define UFLOATQIXF(x) ((XF) (UQI) (x))
627#endif
628#if defined (TF_FN_SUPPORT)
629extern TF UFLOATQITF PARAMS ((QI));
630#else
631#define UFLOATQITF(x) ((TF) (UQI) (x))
632#endif
633#if defined (SF_FN_SUPPORT)
634extern SF UFLOATHISF PARAMS ((HI));
635#else
636#define UFLOATHISF(x) ((SF) (UHI) (x))
637#endif
638#if defined (DF_FN_SUPPORT)
639extern DF UFLOATHIDF PARAMS ((HI));
640#else
641#define UFLOATHIDF(x) ((DF) (UHI) (x))
642#endif
643#if defined (XF_FN_SUPPORT)
644extern XF UFLOATHIXF PARAMS ((HI));
645#else
646#define UFLOATHIXF(x) ((XF) (UHI) (x))
647#endif
648#if defined (TF_FN_SUPPORT)
649extern TF UFLOATHITF PARAMS ((HI));
650#else
651#define UFLOATHITF(x) ((TF) (UHI) (x))
652#endif
653#if defined (SF_FN_SUPPORT)
654extern SF UFLOATSISF PARAMS ((SI));
655#else
656#define UFLOATSISF(x) ((SF) (USI) (x))
657#endif
658#if defined (DF_FN_SUPPORT)
659extern DF UFLOATSIDF PARAMS ((SI));
660#else
661#define UFLOATSIDF(x) ((DF) (USI) (x))
662#endif
663#if defined (XF_FN_SUPPORT)
664extern XF UFLOATSIXF PARAMS ((SI));
665#else
666#define UFLOATSIXF(x) ((XF) (USI) (x))
667#endif
668#if defined (TF_FN_SUPPORT)
669extern TF UFLOATSITF PARAMS ((SI));
670#else
671#define UFLOATSITF(x) ((TF) (USI) (x))
672#endif
673#if defined (DI_FN_SUPPORT) || defined (SF_FN_SUPPORT)
674extern SF UFLOATDISF PARAMS ((DI));
675#else
676#define UFLOATDISF(x) ((SF) (UDI) (x))
677#endif
678#if defined (DI_FN_SUPPORT) || defined (DF_FN_SUPPORT)
679extern DF UFLOATDIDF PARAMS ((DI));
680#else
681#define UFLOATDIDF(x) ((DF) (UDI) (x))
682#endif
683#if defined (DI_FN_SUPPORT) || defined (XF_FN_SUPPORT)
684extern XF UFLOATDIXF PARAMS ((DI));
685#else
686#define UFLOATDIXF(x) ((XF) (UDI) (x))
687#endif
688#if defined (DI_FN_SUPPORT) || defined (TF_FN_SUPPORT)
689extern TF UFLOATDITF PARAMS ((DI));
690#else
691#define UFLOATDITF(x) ((TF) (UDI) (x))
692#endif
693#if defined (SF_FN_SUPPORT)
694extern BI FIXSFBI PARAMS ((SF));
695#else
696#define FIXSFBI(x) ((BI) (SF) (x))
697#endif
698#if defined (SF_FN_SUPPORT)
699extern QI FIXSFQI PARAMS ((SF));
700#else
701#define FIXSFQI(x) ((QI) (SF) (x))
702#endif
703#if defined (SF_FN_SUPPORT)
704extern HI FIXSFHI PARAMS ((SF));
705#else
706#define FIXSFHI(x) ((HI) (SF) (x))
707#endif
708#if defined (SF_FN_SUPPORT)
709extern SI FIXSFSI PARAMS ((SF));
710#else
711#define FIXSFSI(x) ((SI) (SF) (x))
712#endif
713#if defined (SF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
714extern DI FIXSFDI PARAMS ((SF));
715#else
716#define FIXSFDI(x) ((DI) (SF) (x))
717#endif
718#if defined (DF_FN_SUPPORT)
719extern BI FIXDFBI PARAMS ((DF));
720#else
721#define FIXDFBI(x) ((BI) (DF) (x))
722#endif
723#if defined (DF_FN_SUPPORT)
724extern QI FIXDFQI PARAMS ((DF));
725#else
726#define FIXDFQI(x) ((QI) (DF) (x))
727#endif
728#if defined (DF_FN_SUPPORT)
729extern HI FIXDFHI PARAMS ((DF));
730#else
731#define FIXDFHI(x) ((HI) (DF) (x))
732#endif
733#if defined (DF_FN_SUPPORT)
734extern SI FIXDFSI PARAMS ((DF));
735#else
736#define FIXDFSI(x) ((SI) (DF) (x))
737#endif
738#if defined (DF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
739extern DI FIXDFDI PARAMS ((DF));
740#else
741#define FIXDFDI(x) ((DI) (DF) (x))
742#endif
743#if defined (XF_FN_SUPPORT)
744extern BI FIXXFBI PARAMS ((XF));
745#else
746#define FIXXFBI(x) ((BI) (XF) (x))
747#endif
748#if defined (XF_FN_SUPPORT)
749extern QI FIXXFQI PARAMS ((XF));
750#else
751#define FIXXFQI(x) ((QI) (XF) (x))
752#endif
753#if defined (XF_FN_SUPPORT)
754extern HI FIXXFHI PARAMS ((XF));
755#else
756#define FIXXFHI(x) ((HI) (XF) (x))
757#endif
758#if defined (XF_FN_SUPPORT)
759extern SI FIXXFSI PARAMS ((XF));
760#else
761#define FIXXFSI(x) ((SI) (XF) (x))
762#endif
763#if defined (XF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
764extern DI FIXXFDI PARAMS ((XF));
765#else
766#define FIXXFDI(x) ((DI) (XF) (x))
767#endif
768#if defined (TF_FN_SUPPORT)
769extern BI FIXTFBI PARAMS ((TF));
770#else
771#define FIXTFBI(x) ((BI) (TF) (x))
772#endif
773#if defined (TF_FN_SUPPORT)
774extern QI FIXTFQI PARAMS ((TF));
775#else
776#define FIXTFQI(x) ((QI) (TF) (x))
777#endif
778#if defined (TF_FN_SUPPORT)
779extern HI FIXTFHI PARAMS ((TF));
780#else
781#define FIXTFHI(x) ((HI) (TF) (x))
782#endif
783#if defined (TF_FN_SUPPORT)
784extern SI FIXTFSI PARAMS ((TF));
785#else
786#define FIXTFSI(x) ((SI) (TF) (x))
787#endif
788#if defined (TF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
789extern DI FIXTFDI PARAMS ((TF));
790#else
791#define FIXTFDI(x) ((DI) (TF) (x))
792#endif
793#if defined (SF_FN_SUPPORT)
794extern BI UFIXSFBI PARAMS ((SF));
795#else
796#define UFIXSFBI(x) ((UBI) (SF) (x))
797#endif
798#if defined (SF_FN_SUPPORT)
799extern QI UFIXSFQI PARAMS ((SF));
800#else
801#define UFIXSFQI(x) ((UQI) (SF) (x))
802#endif
803#if defined (SF_FN_SUPPORT)
804extern HI UFIXSFHI PARAMS ((SF));
805#else
806#define UFIXSFHI(x) ((UHI) (SF) (x))
807#endif
808#if defined (SF_FN_SUPPORT)
809extern SI UFIXSFSI PARAMS ((SF));
810#else
811#define UFIXSFSI(x) ((USI) (SF) (x))
812#endif
813#if defined (SF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
814extern DI UFIXSFDI PARAMS ((SF));
815#else
816#define UFIXSFDI(x) ((UDI) (SF) (x))
817#endif
818#if defined (DF_FN_SUPPORT)
819extern BI UFIXDFBI PARAMS ((DF));
820#else
821#define UFIXDFBI(x) ((UBI) (DF) (x))
822#endif
823#if defined (DF_FN_SUPPORT)
824extern QI UFIXDFQI PARAMS ((DF));
825#else
826#define UFIXDFQI(x) ((UQI) (DF) (x))
827#endif
828#if defined (DF_FN_SUPPORT)
829extern HI UFIXDFHI PARAMS ((DF));
830#else
831#define UFIXDFHI(x) ((UHI) (DF) (x))
832#endif
833#if defined (DF_FN_SUPPORT)
834extern SI UFIXDFSI PARAMS ((DF));
835#else
836#define UFIXDFSI(x) ((USI) (DF) (x))
837#endif
838#if defined (DF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
839extern DI UFIXDFDI PARAMS ((DF));
840#else
841#define UFIXDFDI(x) ((UDI) (DF) (x))
842#endif
843#if defined (XF_FN_SUPPORT)
844extern BI UFIXXFBI PARAMS ((XF));
845#else
846#define UFIXXFBI(x) ((UBI) (XF) (x))
847#endif
848#if defined (XF_FN_SUPPORT)
849extern QI UFIXXFQI PARAMS ((XF));
850#else
851#define UFIXXFQI(x) ((UQI) (XF) (x))
852#endif
853#if defined (XF_FN_SUPPORT)
854extern HI UFIXXFHI PARAMS ((XF));
855#else
856#define UFIXXFHI(x) ((UHI) (XF) (x))
857#endif
858#if defined (XF_FN_SUPPORT)
859extern SI UFIXXFSI PARAMS ((XF));
860#else
861#define UFIXXFSI(x) ((USI) (XF) (x))
862#endif
863#if defined (XF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
864extern DI UFIXXFDI PARAMS ((XF));
865#else
866#define UFIXXFDI(x) ((UDI) (XF) (x))
867#endif
868#if defined (TF_FN_SUPPORT)
869extern BI UFIXTFBI PARAMS ((TF));
870#else
871#define UFIXTFBI(x) ((UBI) (TF) (x))
872#endif
873#if defined (TF_FN_SUPPORT)
874extern QI UFIXTFQI PARAMS ((TF));
875#else
876#define UFIXTFQI(x) ((UQI) (TF) (x))
877#endif
878#if defined (TF_FN_SUPPORT)
879extern HI UFIXTFHI PARAMS ((TF));
880#else
881#define UFIXTFHI(x) ((UHI) (TF) (x))
882#endif
883#if defined (TF_FN_SUPPORT)
884extern SI UFIXTFSI PARAMS ((TF));
885#else
886#define UFIXTFSI(x) ((USI) (TF) (x))
887#endif
888#if defined (TF_FN_SUPPORT) || defined (DI_FN_SUPPORT)
889extern DI UFIXTFDI PARAMS ((TF));
890#else
891#define UFIXTFDI(x) ((UDI) (TF) (x))
892#endif
893\f
894/* Semantic support utilities. */
895
896#ifdef __GNUC__
897
898#ifdef SEMOPS_DEFINE_INLINE
899#define SEMOPS_INLINE
900#else
901#define SEMOPS_INLINE extern inline
902#endif
903
904SEMOPS_INLINE SI
905ADDCSI (SI a, SI b, UBI c)
906{
907 SI res = ADDSI (a, ADDSI (b, c));
908 return res;
909}
910
911SEMOPS_INLINE UBI
912ADDCFSI (SI a, SI b, UBI c)
913{
914 SI tmp = ADDSI (a, ADDSI (b, c));
915 BI res = (USI) tmp < (USI) a || (USI) tmp < (USI) b;
916 return res;
917}
918
919SEMOPS_INLINE UBI
920ADDOFSI (SI a, SI b, UBI c)
921{
922 SI tmp = ADDSI (a, ADDSI (b, c));
923 BI res = (((a < 0) == (b < 0))
924 && ((a < 0) != (tmp < 0)));
925 return res;
926}
927
928SEMOPS_INLINE SI
929SUBCSI (SI a, SI b, UBI c)
930{
931 SI res = SUBSI (a, ADDSI (b, c));
932 return res;
933}
934
935SEMOPS_INLINE UBI
936SUBCFSI (SI a, SI b, UBI c)
937{
938 BI res = ((USI) a < (USI) b) || ((a == b) && c);
939 return res;
940}
941
942SEMOPS_INLINE UBI
943SUBOFSI (SI a, SI b, UBI c)
944{
945 SI tmp = SUBSI (a, ADDSI (b, c));
946 BI res = (((a < 0) != (b < 0))
947 && ((a < 0) != (tmp < 0)));
948 return res;
949}
950
951#else
952
953SI ADDCSI (SI, SI, UBI);
954UBI ADDCFSI (SI, SI, UBI);
955UBI ADDOFSI (SI, SI, UBI);
956SI SUBCSI (SI, SI, UBI);
957UBI SUBCFSI (SI, SI, UBI);
958UBI SUBOFSI (SI, SI, UBI);
959
960#endif
961\f
962/* DI mode support if "long long" doesn't exist.
963 At one point CGEN supported K&R C compilers, and ANSI C compilers without
964 "long long". One can argue the various merits of keeping this in or
965 throwing it out. I went to the trouble of adding it so for the time being
966 I'm leaving it in. */
967
968#ifdef DI_FN_SUPPORT
969
970DI make_struct_di (SI, SI);
971/* FIXME: needed? */
972DI CONVHIDI (HI);
973DI CONVSIDI (SI);
974SI CONVDISI (DI);
975
976#endif /* DI_FN_SUPPORT */
977
978#endif /* CGEN_SEM_OPS_H */
This page took 0.072349 seconds and 4 git commands to generate.