* doc/as.texinfo: Updated for -MD option.
[deliverable/binutils-gdb.git] / sim / m32r / sem-ops.h
1 /* Semantics ops support for CGEN-based simulators.
2
3 This file is machine generated.
4
5 Copyright (C) 1996, 1997 Free Software Foundation, Inc.
6
7 This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 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))
34 #define UDIVBI(x, y) ((BI) (x) / (BI) (y))
35 #define MODBI(x, y) ((BI) (x) % (BI) (y))
36 #define UMODBI(x, y) ((BI) (x) % (BI) (y))
37 #define SRABI(x, y) ((BI) (x) >> (y))
38 #define SRLBI(x, y) ((UBI) (x) >> (y))
39 #define SHLBI(x, y) ((UBI) (x) << (y))
40 extern BI RORBI PARAMS ((BI, int));
41 extern 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))
65 #define UDIVQI(x, y) ((QI) (x) / (QI) (y))
66 #define MODQI(x, y) ((QI) (x) % (QI) (y))
67 #define UMODQI(x, y) ((QI) (x) % (QI) (y))
68 #define SRAQI(x, y) ((QI) (x) >> (y))
69 #define SRLQI(x, y) ((UQI) (x) >> (y))
70 #define SHLQI(x, y) ((UQI) (x) << (y))
71 extern QI RORQI PARAMS ((QI, int));
72 extern 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))
96 #define UDIVHI(x, y) ((HI) (x) / (HI) (y))
97 #define MODHI(x, y) ((HI) (x) % (HI) (y))
98 #define UMODHI(x, y) ((HI) (x) % (HI) (y))
99 #define SRAHI(x, y) ((HI) (x) >> (y))
100 #define SRLHI(x, y) ((UHI) (x) >> (y))
101 #define SHLHI(x, y) ((UHI) (x) << (y))
102 extern HI RORHI PARAMS ((HI, int));
103 extern 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))
127 #define UDIVSI(x, y) ((SI) (x) / (SI) (y))
128 #define MODSI(x, y) ((SI) (x) % (SI) (y))
129 #define UMODSI(x, y) ((SI) (x) % (SI) (y))
130 #define SRASI(x, y) ((SI) (x) >> (y))
131 #define SRLSI(x, y) ((USI) (x) >> (y))
132 #define SHLSI(x, y) ((USI) (x) << (y))
133 extern SI RORSI PARAMS ((SI, int));
134 extern 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
155 extern DI ADDDI PARAMS ((DI, DI));
156 extern DI SUBDI PARAMS ((DI, DI));
157 extern DI MULDI PARAMS ((DI, DI));
158 extern DI DIVDI PARAMS ((DI, DI));
159 extern DI UDIVDI PARAMS ((DI, DI));
160 extern DI MODDI PARAMS ((DI, DI));
161 extern DI UMODDI PARAMS ((DI, DI));
162 extern DI SRADI PARAMS ((DI, int));
163 extern UDI SRLDI PARAMS ((UDI, int));
164 extern UDI SHLDI PARAMS ((UDI, int));
165 extern DI RORDI PARAMS ((DI, int));
166 extern DI ROLDI PARAMS ((DI, int));
167 extern DI ANDDI PARAMS ((DI, DI));
168 extern DI ORDI PARAMS ((DI, DI));
169 extern DI XORDI PARAMS ((DI, DI));
170 extern int ANDIFDI PARAMS ((DI, DI));
171 extern int ORIFDI PARAMS ((DI, DI));
172 extern DI NEGDI PARAMS ((DI));
173 extern int NOTDI PARAMS ((DI));
174 extern DI INVDI PARAMS ((DI));
175 extern int EQDI PARAMS ((DI, DI));
176 extern int NEDI PARAMS ((DI, DI));
177 extern int LTDI PARAMS ((DI, DI));
178 extern int LEDI PARAMS ((DI, DI));
179 extern int GTDI PARAMS ((DI, DI));
180 extern int GEDI PARAMS ((DI, DI));
181 extern int LTUDI PARAMS ((UDI, UDI));
182 extern int LEUDI PARAMS ((UDI, UDI));
183 extern int GTUDI PARAMS ((UDI, UDI));
184 extern 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))
190 #define UDIVDI(x, y) ((DI) (x) / (DI) (y))
191 #define MODDI(x, y) ((DI) (x) % (DI) (y))
192 #define UMODDI(x, y) ((DI) (x) % (DI) (y))
193 #define SRADI(x, y) ((DI) (x) >> (y))
194 #define SRLDI(x, y) ((UDI) (x) >> (y))
195 #define SHLDI(x, y) ((UDI) (x) << (y))
196 extern DI RORDI PARAMS ((DI, int));
197 extern 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
219 extern SF ADDSF PARAMS ((SF, SF));
220 extern SF SUBSF PARAMS ((SF, SF));
221 extern SF NEGSF PARAMS ((SF));
222 extern SF MULSF PARAMS ((SF, SF));
223 extern SF DIVSF PARAMS ((SF, SF));
224 extern int EQSF PARAMS ((SF, SF));
225 extern int NESF PARAMS ((SF, SF));
226 extern int LTSF PARAMS ((SF, SF));
227 extern int LESF PARAMS ((SF, SF));
228 extern int GTSF PARAMS ((SF, SF));
229 extern int GESF PARAMS ((SF, SF));
230 extern SF ABSSF PARAMS ((SF));
231 extern SF SQRTSF PARAMS ((SF));
232 extern SF COSSF PARAMS ((SF));
233 extern 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))
246 extern SF ABSSF PARAMS ((SF));
247 extern SF SQRTSF PARAMS ((SF));
248 extern SF COSSF PARAMS ((SF));
249 extern SF SINSF PARAMS ((SF));
250 #endif /* SF_FN_SUPPORT */
251
252 #ifdef DF_FN_SUPPORT
253 extern DF ADDDF PARAMS ((DF, DF));
254 extern DF SUBDF PARAMS ((DF, DF));
255 extern DF NEGDF PARAMS ((DF));
256 extern DF MULDF PARAMS ((DF, DF));
257 extern DF DIVDF PARAMS ((DF, DF));
258 extern int EQDF PARAMS ((DF, DF));
259 extern int NEDF PARAMS ((DF, DF));
260 extern int LTDF PARAMS ((DF, DF));
261 extern int LEDF PARAMS ((DF, DF));
262 extern int GTDF PARAMS ((DF, DF));
263 extern int GEDF PARAMS ((DF, DF));
264 extern DF ABSDF PARAMS ((DF));
265 extern DF SQRTDF PARAMS ((DF));
266 extern DF COSDF PARAMS ((DF));
267 extern 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))
280 extern DF ABSDF PARAMS ((DF));
281 extern DF SQRTDF PARAMS ((DF));
282 extern DF COSDF PARAMS ((DF));
283 extern DF SINDF PARAMS ((DF));
284 #endif /* DF_FN_SUPPORT */
285
286 #ifdef XF_FN_SUPPORT
287 extern XF ADDXF PARAMS ((XF, XF));
288 extern XF SUBXF PARAMS ((XF, XF));
289 extern XF NEGXF PARAMS ((XF));
290 extern XF MULXF PARAMS ((XF, XF));
291 extern XF DIVXF PARAMS ((XF, XF));
292 extern int EQXF PARAMS ((XF, XF));
293 extern int NEXF PARAMS ((XF, XF));
294 extern int LTXF PARAMS ((XF, XF));
295 extern int LEXF PARAMS ((XF, XF));
296 extern int GTXF PARAMS ((XF, XF));
297 extern int GEXF PARAMS ((XF, XF));
298 extern XF ABSXF PARAMS ((XF));
299 extern XF SQRTXF PARAMS ((XF));
300 extern XF COSXF PARAMS ((XF));
301 extern 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))
314 extern XF ABSXF PARAMS ((XF));
315 extern XF SQRTXF PARAMS ((XF));
316 extern XF COSXF PARAMS ((XF));
317 extern XF SINXF PARAMS ((XF));
318 #endif /* XF_FN_SUPPORT */
319
320 #ifdef TF_FN_SUPPORT
321 extern TF ADDTF PARAMS ((TF, TF));
322 extern TF SUBTF PARAMS ((TF, TF));
323 extern TF NEGTF PARAMS ((TF));
324 extern TF MULTF PARAMS ((TF, TF));
325 extern TF DIVTF PARAMS ((TF, TF));
326 extern int EQTF PARAMS ((TF, TF));
327 extern int NETF PARAMS ((TF, TF));
328 extern int LTTF PARAMS ((TF, TF));
329 extern int LETF PARAMS ((TF, TF));
330 extern int GTTF PARAMS ((TF, TF));
331 extern int GETF PARAMS ((TF, TF));
332 extern TF ABSTF PARAMS ((TF));
333 extern TF SQRTTF PARAMS ((TF));
334 extern TF COSTF PARAMS ((TF));
335 extern 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))
348 extern TF ABSTF PARAMS ((TF));
349 extern TF SQRTTF PARAMS ((TF));
350 extern TF COSTF PARAMS ((TF));
351 extern 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)
359 extern 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)
366 extern 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)
372 extern DI EXTHIDI PARAMS ((HI));
373 #else
374 #define EXTHIDI(x) ((DI) (HI) (x))
375 #endif
376 #if defined (DI_FN_SUPPORT)
377 extern 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)
382 extern 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)
387 extern 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)
392 extern 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)
397 extern 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)
402 extern 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)
407 extern 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)
415 extern 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)
422 extern 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)
428 extern DI ZEXTHIDI PARAMS ((HI));
429 #else
430 #define ZEXTHIDI(x) ((DI) (UHI) (x))
431 #endif
432 #if defined (DI_FN_SUPPORT)
433 extern 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)
444 extern BI TRUNCDIBI PARAMS ((DI));
445 #else
446 #define TRUNCDIBI(x) ((BI) (DI) (x))
447 #endif
448 #if defined (DI_FN_SUPPORT)
449 extern QI TRUNCDIQI PARAMS ((DI));
450 #else
451 #define TRUNCDIQI(x) ((QI) (DI) (x))
452 #endif
453 #if defined (DI_FN_SUPPORT)
454 extern HI TRUNCDIHI PARAMS ((DI));
455 #else
456 #define TRUNCDIHI(x) ((HI) (DI) (x))
457 #endif
458 #if defined (DI_FN_SUPPORT)
459 extern 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)
464 extern 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)
469 extern 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)
474 extern 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)
479 extern 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)
484 extern 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)
489 extern XF TRUNCTFXF PARAMS ((TF));
490 #else
491 #define TRUNCTFXF(x) ((XF) (TF) (x))
492 #endif
493 #if defined (SF_FN_SUPPORT)
494 extern SF FLOATBISF PARAMS ((BI));
495 #else
496 #define FLOATBISF(x) ((SF) (BI) (x))
497 #endif
498 #if defined (DF_FN_SUPPORT)
499 extern DF FLOATBIDF PARAMS ((BI));
500 #else
501 #define FLOATBIDF(x) ((DF) (BI) (x))
502 #endif
503 #if defined (XF_FN_SUPPORT)
504 extern XF FLOATBIXF PARAMS ((BI));
505 #else
506 #define FLOATBIXF(x) ((XF) (BI) (x))
507 #endif
508 #if defined (TF_FN_SUPPORT)
509 extern TF FLOATBITF PARAMS ((BI));
510 #else
511 #define FLOATBITF(x) ((TF) (BI) (x))
512 #endif
513 #if defined (SF_FN_SUPPORT)
514 extern SF FLOATQISF PARAMS ((QI));
515 #else
516 #define FLOATQISF(x) ((SF) (QI) (x))
517 #endif
518 #if defined (DF_FN_SUPPORT)
519 extern DF FLOATQIDF PARAMS ((QI));
520 #else
521 #define FLOATQIDF(x) ((DF) (QI) (x))
522 #endif
523 #if defined (XF_FN_SUPPORT)
524 extern XF FLOATQIXF PARAMS ((QI));
525 #else
526 #define FLOATQIXF(x) ((XF) (QI) (x))
527 #endif
528 #if defined (TF_FN_SUPPORT)
529 extern TF FLOATQITF PARAMS ((QI));
530 #else
531 #define FLOATQITF(x) ((TF) (QI) (x))
532 #endif
533 #if defined (SF_FN_SUPPORT)
534 extern SF FLOATHISF PARAMS ((HI));
535 #else
536 #define FLOATHISF(x) ((SF) (HI) (x))
537 #endif
538 #if defined (DF_FN_SUPPORT)
539 extern DF FLOATHIDF PARAMS ((HI));
540 #else
541 #define FLOATHIDF(x) ((DF) (HI) (x))
542 #endif
543 #if defined (XF_FN_SUPPORT)
544 extern XF FLOATHIXF PARAMS ((HI));
545 #else
546 #define FLOATHIXF(x) ((XF) (HI) (x))
547 #endif
548 #if defined (TF_FN_SUPPORT)
549 extern TF FLOATHITF PARAMS ((HI));
550 #else
551 #define FLOATHITF(x) ((TF) (HI) (x))
552 #endif
553 #if defined (SF_FN_SUPPORT)
554 extern SF FLOATSISF PARAMS ((SI));
555 #else
556 #define FLOATSISF(x) ((SF) (SI) (x))
557 #endif
558 #if defined (DF_FN_SUPPORT)
559 extern DF FLOATSIDF PARAMS ((SI));
560 #else
561 #define FLOATSIDF(x) ((DF) (SI) (x))
562 #endif
563 #if defined (XF_FN_SUPPORT)
564 extern XF FLOATSIXF PARAMS ((SI));
565 #else
566 #define FLOATSIXF(x) ((XF) (SI) (x))
567 #endif
568 #if defined (TF_FN_SUPPORT)
569 extern 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)
574 extern 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)
579 extern 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)
584 extern 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)
589 extern TF FLOATDITF PARAMS ((DI));
590 #else
591 #define FLOATDITF(x) ((TF) (DI) (x))
592 #endif
593 #if defined (SF_FN_SUPPORT)
594 extern SF UFLOATBISF PARAMS ((BI));
595 #else
596 #define UFLOATBISF(x) ((SF) (UBI) (x))
597 #endif
598 #if defined (DF_FN_SUPPORT)
599 extern DF UFLOATBIDF PARAMS ((BI));
600 #else
601 #define UFLOATBIDF(x) ((DF) (UBI) (x))
602 #endif
603 #if defined (XF_FN_SUPPORT)
604 extern XF UFLOATBIXF PARAMS ((BI));
605 #else
606 #define UFLOATBIXF(x) ((XF) (UBI) (x))
607 #endif
608 #if defined (TF_FN_SUPPORT)
609 extern TF UFLOATBITF PARAMS ((BI));
610 #else
611 #define UFLOATBITF(x) ((TF) (UBI) (x))
612 #endif
613 #if defined (SF_FN_SUPPORT)
614 extern SF UFLOATQISF PARAMS ((QI));
615 #else
616 #define UFLOATQISF(x) ((SF) (UQI) (x))
617 #endif
618 #if defined (DF_FN_SUPPORT)
619 extern DF UFLOATQIDF PARAMS ((QI));
620 #else
621 #define UFLOATQIDF(x) ((DF) (UQI) (x))
622 #endif
623 #if defined (XF_FN_SUPPORT)
624 extern XF UFLOATQIXF PARAMS ((QI));
625 #else
626 #define UFLOATQIXF(x) ((XF) (UQI) (x))
627 #endif
628 #if defined (TF_FN_SUPPORT)
629 extern TF UFLOATQITF PARAMS ((QI));
630 #else
631 #define UFLOATQITF(x) ((TF) (UQI) (x))
632 #endif
633 #if defined (SF_FN_SUPPORT)
634 extern SF UFLOATHISF PARAMS ((HI));
635 #else
636 #define UFLOATHISF(x) ((SF) (UHI) (x))
637 #endif
638 #if defined (DF_FN_SUPPORT)
639 extern DF UFLOATHIDF PARAMS ((HI));
640 #else
641 #define UFLOATHIDF(x) ((DF) (UHI) (x))
642 #endif
643 #if defined (XF_FN_SUPPORT)
644 extern XF UFLOATHIXF PARAMS ((HI));
645 #else
646 #define UFLOATHIXF(x) ((XF) (UHI) (x))
647 #endif
648 #if defined (TF_FN_SUPPORT)
649 extern TF UFLOATHITF PARAMS ((HI));
650 #else
651 #define UFLOATHITF(x) ((TF) (UHI) (x))
652 #endif
653 #if defined (SF_FN_SUPPORT)
654 extern SF UFLOATSISF PARAMS ((SI));
655 #else
656 #define UFLOATSISF(x) ((SF) (USI) (x))
657 #endif
658 #if defined (DF_FN_SUPPORT)
659 extern DF UFLOATSIDF PARAMS ((SI));
660 #else
661 #define UFLOATSIDF(x) ((DF) (USI) (x))
662 #endif
663 #if defined (XF_FN_SUPPORT)
664 extern XF UFLOATSIXF PARAMS ((SI));
665 #else
666 #define UFLOATSIXF(x) ((XF) (USI) (x))
667 #endif
668 #if defined (TF_FN_SUPPORT)
669 extern 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)
674 extern 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)
679 extern 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)
684 extern 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)
689 extern TF UFLOATDITF PARAMS ((DI));
690 #else
691 #define UFLOATDITF(x) ((TF) (UDI) (x))
692 #endif
693 #if defined (SF_FN_SUPPORT)
694 extern BI FIXSFBI PARAMS ((SF));
695 #else
696 #define FIXSFBI(x) ((BI) (SF) (x))
697 #endif
698 #if defined (SF_FN_SUPPORT)
699 extern QI FIXSFQI PARAMS ((SF));
700 #else
701 #define FIXSFQI(x) ((QI) (SF) (x))
702 #endif
703 #if defined (SF_FN_SUPPORT)
704 extern HI FIXSFHI PARAMS ((SF));
705 #else
706 #define FIXSFHI(x) ((HI) (SF) (x))
707 #endif
708 #if defined (SF_FN_SUPPORT)
709 extern 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)
714 extern DI FIXSFDI PARAMS ((SF));
715 #else
716 #define FIXSFDI(x) ((DI) (SF) (x))
717 #endif
718 #if defined (DF_FN_SUPPORT)
719 extern BI FIXDFBI PARAMS ((DF));
720 #else
721 #define FIXDFBI(x) ((BI) (DF) (x))
722 #endif
723 #if defined (DF_FN_SUPPORT)
724 extern QI FIXDFQI PARAMS ((DF));
725 #else
726 #define FIXDFQI(x) ((QI) (DF) (x))
727 #endif
728 #if defined (DF_FN_SUPPORT)
729 extern HI FIXDFHI PARAMS ((DF));
730 #else
731 #define FIXDFHI(x) ((HI) (DF) (x))
732 #endif
733 #if defined (DF_FN_SUPPORT)
734 extern 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)
739 extern DI FIXDFDI PARAMS ((DF));
740 #else
741 #define FIXDFDI(x) ((DI) (DF) (x))
742 #endif
743 #if defined (XF_FN_SUPPORT)
744 extern BI FIXXFBI PARAMS ((XF));
745 #else
746 #define FIXXFBI(x) ((BI) (XF) (x))
747 #endif
748 #if defined (XF_FN_SUPPORT)
749 extern QI FIXXFQI PARAMS ((XF));
750 #else
751 #define FIXXFQI(x) ((QI) (XF) (x))
752 #endif
753 #if defined (XF_FN_SUPPORT)
754 extern HI FIXXFHI PARAMS ((XF));
755 #else
756 #define FIXXFHI(x) ((HI) (XF) (x))
757 #endif
758 #if defined (XF_FN_SUPPORT)
759 extern 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)
764 extern DI FIXXFDI PARAMS ((XF));
765 #else
766 #define FIXXFDI(x) ((DI) (XF) (x))
767 #endif
768 #if defined (TF_FN_SUPPORT)
769 extern BI FIXTFBI PARAMS ((TF));
770 #else
771 #define FIXTFBI(x) ((BI) (TF) (x))
772 #endif
773 #if defined (TF_FN_SUPPORT)
774 extern QI FIXTFQI PARAMS ((TF));
775 #else
776 #define FIXTFQI(x) ((QI) (TF) (x))
777 #endif
778 #if defined (TF_FN_SUPPORT)
779 extern HI FIXTFHI PARAMS ((TF));
780 #else
781 #define FIXTFHI(x) ((HI) (TF) (x))
782 #endif
783 #if defined (TF_FN_SUPPORT)
784 extern 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)
789 extern DI FIXTFDI PARAMS ((TF));
790 #else
791 #define FIXTFDI(x) ((DI) (TF) (x))
792 #endif
793 #if defined (SF_FN_SUPPORT)
794 extern BI UFIXSFBI PARAMS ((SF));
795 #else
796 #define UFIXSFBI(x) ((UBI) (SF) (x))
797 #endif
798 #if defined (SF_FN_SUPPORT)
799 extern QI UFIXSFQI PARAMS ((SF));
800 #else
801 #define UFIXSFQI(x) ((UQI) (SF) (x))
802 #endif
803 #if defined (SF_FN_SUPPORT)
804 extern HI UFIXSFHI PARAMS ((SF));
805 #else
806 #define UFIXSFHI(x) ((UHI) (SF) (x))
807 #endif
808 #if defined (SF_FN_SUPPORT)
809 extern 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)
814 extern DI UFIXSFDI PARAMS ((SF));
815 #else
816 #define UFIXSFDI(x) ((UDI) (SF) (x))
817 #endif
818 #if defined (DF_FN_SUPPORT)
819 extern BI UFIXDFBI PARAMS ((DF));
820 #else
821 #define UFIXDFBI(x) ((UBI) (DF) (x))
822 #endif
823 #if defined (DF_FN_SUPPORT)
824 extern QI UFIXDFQI PARAMS ((DF));
825 #else
826 #define UFIXDFQI(x) ((UQI) (DF) (x))
827 #endif
828 #if defined (DF_FN_SUPPORT)
829 extern HI UFIXDFHI PARAMS ((DF));
830 #else
831 #define UFIXDFHI(x) ((UHI) (DF) (x))
832 #endif
833 #if defined (DF_FN_SUPPORT)
834 extern 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)
839 extern DI UFIXDFDI PARAMS ((DF));
840 #else
841 #define UFIXDFDI(x) ((UDI) (DF) (x))
842 #endif
843 #if defined (XF_FN_SUPPORT)
844 extern BI UFIXXFBI PARAMS ((XF));
845 #else
846 #define UFIXXFBI(x) ((UBI) (XF) (x))
847 #endif
848 #if defined (XF_FN_SUPPORT)
849 extern QI UFIXXFQI PARAMS ((XF));
850 #else
851 #define UFIXXFQI(x) ((UQI) (XF) (x))
852 #endif
853 #if defined (XF_FN_SUPPORT)
854 extern HI UFIXXFHI PARAMS ((XF));
855 #else
856 #define UFIXXFHI(x) ((UHI) (XF) (x))
857 #endif
858 #if defined (XF_FN_SUPPORT)
859 extern 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)
864 extern DI UFIXXFDI PARAMS ((XF));
865 #else
866 #define UFIXXFDI(x) ((UDI) (XF) (x))
867 #endif
868 #if defined (TF_FN_SUPPORT)
869 extern BI UFIXTFBI PARAMS ((TF));
870 #else
871 #define UFIXTFBI(x) ((UBI) (TF) (x))
872 #endif
873 #if defined (TF_FN_SUPPORT)
874 extern QI UFIXTFQI PARAMS ((TF));
875 #else
876 #define UFIXTFQI(x) ((UQI) (TF) (x))
877 #endif
878 #if defined (TF_FN_SUPPORT)
879 extern HI UFIXTFHI PARAMS ((TF));
880 #else
881 #define UFIXTFHI(x) ((UHI) (TF) (x))
882 #endif
883 #if defined (TF_FN_SUPPORT)
884 extern 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)
889 extern 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
904 SEMOPS_INLINE SI
905 ADDCSI (SI a, SI b, UBI c)
906 {
907 SI res = ADDSI (a, ADDSI (b, c));
908 return res;
909 }
910
911 SEMOPS_INLINE UBI
912 ADDCFSI (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
919 SEMOPS_INLINE UBI
920 ADDOFSI (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
928 SEMOPS_INLINE SI
929 SUBCSI (SI a, SI b, UBI c)
930 {
931 SI res = SUBSI (a, ADDSI (b, c));
932 return res;
933 }
934
935 SEMOPS_INLINE UBI
936 SUBCFSI (SI a, SI b, UBI c)
937 {
938 BI res = ((USI) a < (USI) b) || ((a == b) && c);
939 return res;
940 }
941
942 SEMOPS_INLINE UBI
943 SUBOFSI (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
953 SI ADDCSI (SI, SI, UBI);
954 UBI ADDCFSI (SI, SI, UBI);
955 UBI ADDOFSI (SI, SI, UBI);
956 SI SUBCSI (SI, SI, UBI);
957 UBI SUBCFSI (SI, SI, UBI);
958 UBI 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
970 DI make_struct_di (SI, SI);
971 /* FIXME: needed? */
972 DI CONVHIDI (HI);
973 DI CONVSIDI (SI);
974 SI CONVDISI (DI);
975
976 #endif /* DI_FN_SUPPORT */
977
978 #endif /* CGEN_SEM_OPS_H */
This page took 0.052181 seconds and 4 git commands to generate.