ignore & before array
[unix-history] / usr / src / old / pcc / ccom.vax / table.c
CommitLineData
4d89f1ac 1#ifndef lint
a376cb2f 2static char *sccsid ="@(#)table.c 1.33 (Berkeley) %G%";
4d89f1ac
RC
3#endif lint
4
0ec67d08 5# include "pass2.h"
b1ca30fc
ML
6
7# define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG
8# define AWD SNAME|SOREG|SCON|STARNM|STARREG
9/* tbl */
10# define ANYSIGNED TPOINT|TINT|TLONG|TSHORT|TCHAR
11# define ANYUSIGNED TUNSIGNED|TULONG|TUSHORT|TUCHAR
12# define ANYFIXED ANYSIGNED|ANYUSIGNED
13# define TWORD TINT|TUNSIGNED|TPOINT|TLONG|TULONG
14# define NIAWD SNAME|SCON|STARNM
15/* tbl */
16
17struct optab table[] = {
18
b1ca30fc
ML
19 /* the following entry is to fix a problem with
20 the manner that the first pass handles the
21 type of a shift expression */
22PCONV, INAREG|INTAREG,
23 SAREG|AWD, TINT|TUNSIGNED,
24 SANY, TPOINT,
25 NAREG|NASL, RLEFT,
26 "",
27
4d89f1ac 28#if defined(FORT) || defined(SPRECC)
b1ca30fc 29SCONV, INTAREG|FORCC,
472582a4
RC
30 SAREG|AWD, TDOUBLE,
31 SANY, TFLOAT,
32 NAREG|NASL, RESC1|RESCC,
33 " cvtdf AL,A1\n",
b1ca30fc 34
b1ca30fc 35SCONV, INTAREG|FORCC,
d4c2018b 36 SAREG|AWD, ANYSIGNED,
b1ca30fc
ML
37 SANY, TFLOAT,
38 NAREG|NASL, RESC1|RESCC,
39 " cvtZLf AL,TA1\n",
b1ca30fc
ML
40#endif
41
85696ba1
KM
42/* take care of redundant conversions introduced by reclaim() */
43SCONV, INTAREG,
44 STAREG, TWORD,
45 SANY, TWORD,
46 0, RLEFT,
47 "",
48
9e4063b4
DS
49SCONV, INTAREG,
50 STAREG, TDOUBLE,
51 SANY, TDOUBLE,
52 0, RLEFT,
53 "",
54
b1ca30fc 55SCONV, INTAREG|FORCC,
472582a4 56 SAREG|AWD, TANY,
b1ca30fc
ML
57 SANY, TANY,
58 NAREG|NASL, RESC1|RESCC,
472582a4 59 " ZA\n",
b1ca30fc 60
4aa53639
DS
61SCONV, FORARG,
62 SAREG|AWD, TANY,
63 SANY, TANY,
1f7e73db 64 NAREG|NASL, RNULL,
4aa53639 65 " ZV\n",
b1ca30fc
ML
66
67INIT, FOREFF,
68 SCON, TANY,
69 SANY, TWORD,
70 0, RNOP,
71 " .long CL\n",
72
73INIT, FOREFF,
74 SCON, TANY,
75 SANY, TSHORT|TUSHORT,
76 0, RNOP,
77 " .word CL\n",
78
79INIT, FOREFF,
80 SCON, TANY,
81 SANY, TCHAR|TUCHAR,
82 0, RNOP,
83 " .byte CL\n",
84
9e4063b4 85#ifdef FORT
b1ca30fc
ML
86 /* for the use of fortran only */
87
88GOTO, FOREFF,
89 SCON, TANY,
90 SANY, TANY,
91 0, RNOP,
92 " jbr CL\n",
9e4063b4 93#endif
b1ca30fc
ML
94
95GOTO, FOREFF,
4d89f1ac 96 SNAME|SOREG, TANY,
b1ca30fc
ML
97 SANY, TANY,
98 0, RNOP,
99 " jmp *AL\n",
100
101GOTO, FOREFF,
102 SAREG, TANY,
103 SANY, TANY,
104 0, RNOP,
105 " jmp (AL)\n",
106
107STARG, FORARG,
108 SCON|SOREG, TANY,
109 SANY, TANY,
b1ca30fc
ML
110 0, RNULL,
111 " subl2 ZT,sp\nZS",
112
113STASG, FOREFF,
114 SNAME|SOREG, TANY,
115 SCON|SAREG, TANY,
116 0, RNOP,
117 "ZS",
118
119STASG, INAREG,
120 SNAME|SOREG, TANY,
121 SCON, TANY,
122 NAREG, RESC1,
123 "ZS movl AR,A1\n",
124
125STASG, INAREG,
126 SNAME|SOREG, TANY,
127 SAREG, TANY,
128 0, RRIGHT,
129 " pushl AR\nZS movl (sp)+,AR\n",
130
131FLD, INAREG|INTAREG,
132 SANY, TANY,
133 SFLD, ANYSIGNED,
134 NAREG|NASR, RESC1,
135 " extv $H,$S,AR,A1\n",
136
137FLD, INAREG|INTAREG,
138 SANY, TANY,
139 SFLD, ANYUSIGNED,
140 NAREG|NASR, RESC1,
141 " extzv $H,$S,AR,A1\n",
142
143FLD, FORARG,
144 SANY, TANY,
145 SFLD, ANYSIGNED,
146 0, RNULL,
147 " extv $H,$S,AR,-(sp)\n",
148
149FLD, FORARG,
150 SANY, TANY,
151 SFLD, ANYUSIGNED,
152 0, RNULL,
153 " extzv $H,$S,AR,-(sp)\n",
154
155OPLOG, FORCC,
156 SAREG|AWD, TWORD,
157 SAREG|AWD, TWORD,
158 0, RESCC,
159 " cmpl AL,AR\nZP",
160
161OPLOG, FORCC,
85696ba1
KM
162 SAREG|AWD, TSHORT,
163 SAREG|AWD, TSHORT,
b1ca30fc
ML
164 0, RESCC,
165 " cmpw AL,AR\nZP",
166
167OPLOG, FORCC,
85696ba1
KM
168 SAREG|AWD, TUSHORT,
169 SAREG|AWD, TUSHORT,
170 0, RESCC,
171 " cmpw AL,AR\nZP",
172
173OPLOG, FORCC,
174 SAREG|AWD, TCHAR,
175 SAREG|AWD, TCHAR,
176 0, RESCC,
177 " cmpb AL,AR\nZP",
178
179OPLOG, FORCC,
180 SAREG|AWD, TUCHAR,
181 SAREG|AWD, TUCHAR,
b1ca30fc
ML
182 0, RESCC,
183 " cmpb AL,AR\nZP",
184
9e4063b4 185/* optim2() handles degenerate comparisons with constants */
b1ca30fc 186OPLOG, FORCC,
9e4063b4
DS
187 SAREG|AWD, TCHAR|TUCHAR|TSHORT|TUSHORT,
188 SCON, ANYFIXED,
b1ca30fc 189 0, RESCC,
9e4063b4 190 " cmpZL AL,AR\nZP",
b1ca30fc
ML
191
192OPLOG, FORCC,
193 SAREG|AWD, TDOUBLE,
194 SAREG|AWD, TDOUBLE,
195 0, RESCC,
196 " cmpd AL,AR\nZP",
197
b1ca30fc
ML
198OPLOG, FORCC,
199 SAREG|AWD, TFLOAT,
200 SAREG|AWD, TFLOAT,
201 0, RESCC,
202 " cmpf AL,AR\nZP",
203
073bc43d
DS
204#ifdef FORT
205/* this really ought to be taken care of farther upstream... XXX */
206OPLOG, FORCC,
207 SAREG|AWD, TFLOAT,
208 SAREG|AWD, TDOUBLE,
209 NAREG|NASL, RESCC,
210 " cvtfd AL,A1\n cmpd A1,AR\nZP",
211
212OPLOG, FORCC,
213 SAREG|AWD, TDOUBLE,
214 SAREG|AWD, TFLOAT,
215 NAREG|NASR, RESCC,
216 " cvtfd AR,A1\n cmpd AL,A1\nZP",
217#endif
218
b1ca30fc
ML
219CCODES, INAREG|INTAREG,
220 SANY, TANY,
221 SANY, TANY,
222 NAREG, RESC1,
223 " movl $1,A1\nZN",
224
472582a4
RC
225UNARY CALL, INTAREG,
226 SCON, TANY,
227 SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
228 NAREG|NASL, RESC1,
229 " calls ZC,CL\n",
472582a4 230
b1ca30fc
ML
231UNARY CALL, INTAREG,
232 SAREG, TANY,
233 SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
234 NAREG|NASL, RESC1, /* should be 0 */
235 " calls ZC,(AL)\n",
236
237UNARY CALL, INAREG|INTAREG,
238 SNAME, TANY,
239 SANY, TANY,
240 NAREG|NASL, RESC1, /* really reg 0 */
241 " calls ZC,*AL\n",
242
243UNARY CALL, INAREG|INTAREG,
244 SSOREG, TANY,
245 SANY, TANY,
246 NAREG|NASL, RESC1, /* really reg 0 */
247 " calls ZC,*AL\n",
248
249ASG RS, INAREG|FOREFF|FORCC,
250 SAREG, TWORD,
53e2f7dc 251 SCON, TINT|TUNSIGNED,
b1ca30fc
ML
252 0, RLEFT|RESCC,
253 " extzv AR,ZU,AL,AL\n",
254
255ASG RS, INAREG|FOREFF|FORCC,
256 SAREG, TWORD,
257 SAREG, ANYFIXED,
258 NAREG, RLEFT|RESCC,
259 " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n",
260
261ASG RS, INAREG|FOREFF|FORCC,
262 SAREG, TWORD,
263 SAREG|AWD, TWORD,
264 NAREG, RLEFT|RESCC,
265 " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n",
266
267RS, INAREG|INTAREG|FORCC,
268 SAREG, TWORD,
53e2f7dc 269 SCON, TINT|TUNSIGNED,
b1ca30fc
ML
270 NAREG|NASL, RESC1|RESCC,
271 " extzv AR,ZU,AL,A1\n",
272
273ASG LS, INAREG|FOREFF|FORCC,
274 SAREG|AWD, TWORD,
275 SAREG|NIAWD, ANYSIGNED|ANYUSIGNED,
276 0, RLEFT|RESCC,
277 " ashl AR,AL,AL\n",
278
279ASG LS, INAREG|FOREFF|FORCC,
280 SAREG|AWD, TWORD,
281 SSOREG, ANYSIGNED|ANYUSIGNED,
282 0, RLEFT|RESCC,
283 " ashl AR,AL,AL\n",
284
285ASG LS, INAREG|FOREFF|FORCC,
286 SAREG|AWD, TWORD,
287 SOREG, ANYSIGNED|ANYUSIGNED,
288 NAREG, RLEFT|RESCC,
289 " ZB AR,A1\n ashl A1,AL,AL\n",
290
291LS, INAREG|INTAREG|FORCC,
292 SAREG|AWD, TWORD,
293 SAREG|NIAWD, ANYSIGNED|ANYUSIGNED,
294 NAREG|NASL|NASR, RESC1|RESCC,
295 " ashl AR,AL,A1\n",
296
297LS, INAREG|INTAREG|FORCC,
298 SAREG|AWD, TWORD,
299 SSOREG, ANYSIGNED|ANYUSIGNED,
300 NAREG|NASL|NASR, RESC1|RESCC,
301 " ashl AR,AL,A1\n",
302
303LS, INAREG|INTAREG|FORCC,
304 SAREG|AWD, TWORD,
305 SOREG, ANYSIGNED|ANYUSIGNED,
306 NAREG|NASR, RESC1|RESCC,
307 " ZB AR,A1\n ashl A1,AL,A1\n",
308
309INCR, FOREFF,
9e4063b4 310 SAREG|AWD, TANY,
82818655 311 SCON|SNAME, TANY,
b1ca30fc
ML
312 0, RLEFT,
313 " ZE\n",
314
315DECR, FOREFF,
9e4063b4 316 SAREG|AWD, TANY,
82818655 317 SCON|SNAME, TANY,
b1ca30fc
ML
318 0, RLEFT,
319 " ZE\n",
320
b1ca30fc 321INCR, INAREG|INTAREG,
9e4063b4 322 SAREG|AWD, TANY,
82818655 323 SCON|SNAME, TANY,
b1ca30fc
ML
324 NAREG, RESC1,
325 " ZD\n",
326
327DECR, INAREG|INTAREG,
9e4063b4 328 SAREG|AWD, TANY,
82818655 329 SCON|SNAME, TANY,
b1ca30fc
ML
330 NAREG, RESC1,
331 " ZD\n",
332
1f7e73db
DS
333ASSIGN, INAREG|FOREFF|FORCC,
334 SAREG|AWD, TFLOAT|TDOUBLE,
335 SAREG|AWD, TUCHAR|TUSHORT,
a399c386 336 NAREG|NASR, RLEFT|RESCC,
1f7e73db
DS
337 " ZA\n",
338
b1ca30fc
ML
339ASSIGN, INAREG|FOREFF|FORCC,
340 SAREG|AWD, TANY,
341 SAREG|AWD, TANY,
eb9876d1 342 0, RLEFT|RESCC,
b1ca30fc
ML
343 " ZA\n",
344
485a3c32 345ASSIGN, FOREFF,
b1ca30fc
ML
346 SFLD, TANY,
347 SAREG|AWD, TWORD,
485a3c32 348 0, RNOP,
b1ca30fc
ML
349 " insv AR,$H,$S,AL\n",
350
485a3c32 351ASSIGN, INAREG,
48475039 352 SFLD, ANYSIGNED,
485a3c32
DS
353 SAREG|AWD, TWORD,
354 NAREG, RESC1,
355 " insv AR,$H,$S,AL\n extv $H,$S,AL,A1\n",
356
48475039
DS
357ASSIGN, INAREG,
358 SFLD, ANYUSIGNED,
359 SAREG|AWD, TWORD,
360 NAREG, RESC1,
361 " insv AR,$H,$S,AL\n extzv $H,$S,AL,A1\n",
362
b1ca30fc
ML
363ASSIGN, INAREG|FOREFF|FORCC,
364 SAREG|AWD, TWORD,
365 SFLD, ANYSIGNED,
366 0, RLEFT|RESCC,
367 " extv $H,$S,AR,AL\n",
368
369ASSIGN, INAREG|FOREFF|FORCC,
370 SAREG|AWD, TWORD,
371 SFLD, ANYUSIGNED,
372 0, RLEFT|RESCC,
373 " extzv $H,$S,AR,AL\n",
374
375/* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */
376UNARY MUL, FOREFF,
377 SCC, TANY,
378 SCC, TANY,
379 0, RNULL,
380 " HELP HELP HELP\n",
381
f955c41a
DS
382OREG, INTEMP,
383 SANY, TANY,
384 SOREG, TDOUBLE,
385 2*NTEMP, RESC1,
9e4063b4 386 " movq AR,A1\n",
f955c41a
DS
387
388OREG, INTEMP,
389 SANY, TANY,
390 SOREG, TANY,
391 NTEMP, RESC1,
a376cb2f 392 " movZR AR,A1\n",
f955c41a 393
b1ca30fc
ML
394REG, INTEMP,
395 SANY, TANY,
396 SAREG, TDOUBLE,
397 2*NTEMP, RESC1,
9e4063b4 398 " movq AR,A1\n",
b1ca30fc
ML
399
400REG, INTEMP,
401 SANY, TANY,
402 SAREG, TANY,
403 NTEMP, RESC1,
404 " movZF AR,A1\n",
405
4d89f1ac
RC
406#if defined(FORT) || defined(SPRECC)
407REG, FORARG,
b1ca30fc
ML
408 SANY, TANY,
409 SAREG, TFLOAT,
410 0, RNULL,
411 " cvtfd AR,-(sp)\n",
412
413REG, FORARG,
414 SANY, TANY,
415 SAREG, TDOUBLE,
416 0, RNULL,
9e4063b4 417 " movq AR,-(sp)\n",
b1ca30fc
ML
418#endif
419
420OPLEAF, FOREFF,
421 SANY, TANY,
422 SAREG|AWD, TANY,
423 0, RLEFT,
424 "",
425
b1ca30fc
ML
426OPLTYPE, INAREG|INTAREG,
427 SANY, TANY,
428 SANY, TANY,
429 NAREG|NASR, RESC1,
430 " ZA\n",
431
432OPLTYPE, FORCC,
433 SANY, TANY,
434 SANY, TANY,
435 0, RESCC,
436 " tstZR AR\n",
437
b1ca30fc
ML
438OPLTYPE, FORARG,
439 SANY, TANY,
b1ca30fc 440 SANY, TANY,
b1ca30fc 441 0, RNULL,
4aa53639 442 " ZV\n",
b1ca30fc 443
4d89f1ac 444#if defined(FORT) || defined(SPRECC)
472582a4 445UNARY MINUS, INTAREG|FORCC,
88bb0c9f 446 SAREG|AWD, TFLOAT,
472582a4
RC
447 SANY, TANY,
448 NAREG|NASL, RESC1|RESCC,
449 " mnegZL TAL,A1\n",
450
88bb0c9f 451#endif
472582a4 452
b1ca30fc 453UNARY MINUS, INTAREG|FORCC,
9e4063b4 454 SAREG|AWD, TWORD|TDOUBLE,
b1ca30fc
ML
455 SANY, TANY,
456 NAREG|NASL, RESC1|RESCC,
457 " mnegZL AL,A1\n",
458
459COMPL, INTAREG|FORCC,
9e4063b4 460 SAREG|AWD, TWORD,
b1ca30fc
ML
461 SANY, TANY,
462 NAREG|NASL, RESC1|RESCC,
463 " mcomZL AL,A1\n",
464
b1ca30fc 465AND, FORCC,
9e4063b4
DS
466 SAREG|AWD, TCHAR|TSHORT,
467 SCON, ANYFIXED,
468 NAREG|NASL, RESCC,
469 " ZZ\n",
b1ca30fc
ML
470
471AND, FORCC,
9e4063b4
DS
472 SAREG|AWD, TWORD|ANYUSIGNED,
473 SCON, ANYFIXED,
b1ca30fc 474 0, RESCC,
9e4063b4 475 " ZZ\n",
b1ca30fc
ML
476
477ASG AND, INAREG|FOREFF|FORCC,
478 SAREG, TWORD,
479 SCON, TWORD,
480 0, RLEFT|RESCC,
481 " bicl2 AR,AL\n",
482
9e4063b4
DS
483/* General cases for DIV and ASG DIV are handled below with OPMUL */
484/* Some special cases are handled in optim2() */
485
1b46eb1e
DS
486DIV, INAREG|FOREFF|FORCC,
487 SAREG|AWD, TUNSIGNED|TULONG,
1fe782ac 488 SCON, ANYUSIGNED,
1b46eb1e 489 NAREG|NEVEN, RESC1|RESCC,
a57b600c 490 " movl AL,A1\n clrl U1\n ediv AR,A1,A1,U1\n",
1b46eb1e
DS
491
492ASG DIV, INAREG|FOREFF|FORCC,
9e4063b4 493 SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG,
e9e2cefa
DS
494 SMCON, ANYUSIGNED,
495 0, RLEFT|RESCC,
496 " ZJ\n",
497
498ASG DIV, INAREG|FOREFF|FORCC,
9e4063b4 499 SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG,
e9e2cefa
DS
500 SCON, ANYUSIGNED,
501 NAREG|NEVEN, RLEFT|RESCC,
502 " movl AL,A1\n clrl U1\n ediv AR,A1,AL,U1\n",
503
1b46eb1e
DS
504MOD, INAREG|INTAREG,
505 SAREG|AWD, TINT|TLONG,
506 SAREG|AWD, TINT|TLONG,
507 NAREG, RESC1,
508 " divl3 AR,AL,A1\n mull2 AR,A1\n subl3 A1,AL,A1\n",
509
510MOD, INAREG|FOREFF,
511 SAREG|AWD, TUNSIGNED|TULONG,
1fe782ac 512 SMCON, ANYUSIGNED,
1b46eb1e
DS
513 NAREG|NASL, RLEFT|RESC1,
514 " ZJ\n",
515
1b46eb1e
DS
516MOD, INAREG|FOREFF,
517 SAREG|AWD, TUNSIGNED|TULONG,
1fe782ac 518 SCON, ANYUSIGNED,
9e4063b4 519 NAREG|NEVEN, RESC1,
a57b600c 520 " movl AL,A1\n clrl U1\n ediv AR,A1,U1,A1\n",
1b46eb1e 521
1fe782ac
DS
522/* should only see UNSIGNED lhs here if converted from UCHAR/USHORT lhs */
523ASG MOD, INAREG|FOREFF|FORCC,
524 SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG,
1b46eb1e
DS
525 SAREG|AWD, TINT|TLONG,
526 NAREG, RLEFT|RESCC,
527 " divl3 AR,AL,A1\n mull2 AR,A1\n subl2 A1,AL\n",
528
529ASG MOD, INAREG|FOREFF,
9e4063b4 530 SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG,
e9e2cefa 531 SMCON, ANYUSIGNED,
9e4063b4 532 0, RLEFT,
e9e2cefa
DS
533 " ZJ\n",
534
e9e2cefa 535ASG MOD, INAREG|FOREFF,
9e4063b4 536 SAREG|AWD, TINT|TLONG|TUNSIGNED|TULONG,
e9e2cefa 537 SCON, ANYUSIGNED,
9e4063b4 538 NAREG|NEVEN, RLEFT,
e9e2cefa
DS
539 " movl AL,A1\n clrl U1\n ediv AR,A1,A1,AL\n",
540
b1ca30fc
ML
541ASG OPMUL, INAREG|FOREFF|FORCC,
542 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
543 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
544 0, RLEFT|RESCC,
545 " OL2 AR,AL\n",
546
547OPMUL, INAREG|INTAREG|FORCC,
548 STAREG, TINT|TUNSIGNED|TLONG|TULONG,
549 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
550 0, RLEFT|RESCC,
551 " OL2 AR,AL\n",
552
553OPMUL, INAREG|INTAREG|FORCC,
554 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
555 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
556 NAREG|NASL|NASR, RESC1|RESCC,
557 " OL3 AR,AL,A1\n",
558
b1ca30fc 559ASG PLUS, INAREG|FOREFF|FORCC,
9e4063b4
DS
560 SAREG|AWD, ANYFIXED,
561 SONE, TANY,
b1ca30fc
ML
562 0, RLEFT|RESCC,
563 " incZL AL\n",
564
b1ca30fc 565ASG MINUS, INAREG|FOREFF|FORCC,
9e4063b4
DS
566 SAREG|AWD, ANYFIXED,
567 SONE, TANY,
b1ca30fc
ML
568 0, RLEFT|RESCC,
569 " decZL AL\n",
570
b1ca30fc
ML
571PLUS, INAREG|INTAREG|FORCC,
572 STAREG, TWORD,
573 SONE, TWORD,
574 0, RLEFT|RESCC,
575 " incZL AL\n",
576
b1ca30fc
ML
577MINUS, INAREG|INTAREG|FORCC,
578 STAREG, TWORD,
579 SONE, TWORD,
580 0, RLEFT|RESCC,
581 " decZL AL\n",
582
b1ca30fc
ML
583ASG OPSIMP, INAREG|FOREFF|FORCC,
584 SAREG|AWD, TWORD,
585 SAREG|AWD, TWORD,
586 0, RLEFT|RESCC,
587 " OL2 AR,AL\n",
588
b1ca30fc
ML
589ASG OPSIMP, INAREG|FOREFF|FORCC,
590 AWD, TSHORT|TUSHORT,
9e4063b4 591 SAREG|SNAME|STARNM, TSHORT|TUSHORT|TINT|TUNSIGNED|TLONG|TULONG,
b1ca30fc
ML
592 0, RLEFT|RESCC,
593 " OW2 AR,AL\n",
594
595ASG OPSIMP, INAREG|FOREFF|FORCC,
596 AWD, TSHORT|TUSHORT,
9e4063b4 597 SSOREG, TSHORT|TUSHORT|TINT|TUNSIGNED|TLONG|TULONG,
9d8c6b01
DS
598 0, RLEFT|RESCC,
599 " OW2 AR,AL\n",
600
601ASG OPSIMP, INAREG|FOREFF|FORCC,
602 AWD, TSHORT|TUSHORT,
603 SSCON, ANYFIXED,
604 0, RLEFT|RESCC,
605 " OW2 AR,AL\n",
606
607ASG OPSIMP, INAREG|FOREFF|FORCC,
608 AWD, TSHORT|TUSHORT,
609 AWD, TSHORT|TUSHORT,
b1ca30fc
ML
610 0, RLEFT|RESCC,
611 " OW2 AR,AL\n",
612
613ASG OPSIMP, INAREG|FOREFF|FORCC,
614 AWD, TCHAR|TUCHAR,
9d8c6b01 615 SSOREG, ANYFIXED,
b1ca30fc
ML
616 0, RLEFT|RESCC,
617 " OB2 AR,AL\n",
618
619ASG OPSIMP, INAREG|FOREFF|FORCC,
620 AWD, TCHAR|TUCHAR,
9d8c6b01
DS
621 SAREG|SNAME|STARNM, ANYFIXED,
622 0, RLEFT|RESCC,
623 " OB2 AR,AL\n",
624
625ASG OPSIMP, INAREG|FOREFF|FORCC,
626 AWD, TCHAR|TUCHAR,
627 SCCON, ANYFIXED,
628 0, RLEFT|RESCC,
629 " OB2 AR,AL\n",
630
631ASG OPSIMP, INAREG|FOREFF|FORCC,
632 AWD, TCHAR|TUCHAR,
633 AWD, TCHAR|TUCHAR,
b1ca30fc
ML
634 0, RLEFT|RESCC,
635 " OB2 AR,AL\n",
636
b1ca30fc
ML
637OPSIMP, INAREG|INTAREG|FORCC,
638 STAREG, ANYFIXED,
639 SAREG|AWD, TWORD,
640 0, RLEFT|RESCC,
641 " OL2 AR,AL\n",
642
643OPSIMP, INAREG|INTAREG|FORCC,
644 SAREG|AWD, TWORD,
645 SAREG|AWD, TWORD,
646 NAREG|NASL|NASR, RESC1|RESCC,
647 " OL3 AR,AL,A1\n",
648
649ASG OPFLOAT, INAREG|FOREFF|FORCC,
650 SAREG|AWD, TDOUBLE,
651 SAREG|AWD, TDOUBLE,
652 0, RLEFT|RESCC,
653 " OD2 AR,AL\n",
654
655ASG OPFLOAT, INAREG|FOREFF|FORCC,
656 SAREG|AWD, TFLOAT,
657 SAREG|AWD, TFLOAT,
658 0, RLEFT|RESCC,
4d89f1ac 659#if defined(FORT) || defined(SPRECC)
d1dcacf0
RC
660 " OF2 AR,TAL\n",
661#else
b1ca30fc 662 " OF2 AR,AL\n",
d1dcacf0 663#endif
b1ca30fc 664
b1ca30fc
ML
665ASG OPFLOAT, INAREG|INTAREG|FOREFF|FORCC,
666 SAREG|AWD, TFLOAT,
667 SAREG|AWD, TDOUBLE,
668 NAREG, RLEFT|RESC1|RESCC,
669 " cvtfd AL,A1\n OD2 AR,A1\n cvtdf A1,AL\n",
670
d4c2018b
DS
671ASG OPFLOAT, INAREG|FOREFF|FORCC,
672 SAREG|AWD, ANYFIXED,
673#ifndef SPRECC
674 SAREG|AWD, TDOUBLE, /* force FLOAT to register */
675#else
676 SAREG|AWD, TFLOAT|TDOUBLE,
677#endif
678 NAREG, RLEFT|RESCC, /* usable() knows we need a reg pair */
679 " ZG\n",
680
b1ca30fc
ML
681OPFLOAT, INAREG|INTAREG|FORCC,
682 STAREG, TDOUBLE,
683 SAREG|AWD, TDOUBLE,
684 0, RLEFT|RESCC,
685 " OD2 AR,AL\n",
686
687OPFLOAT, INAREG|INTAREG|FORCC,
688 SAREG|AWD, TDOUBLE,
689 SAREG|AWD, TDOUBLE,
690 NAREG|NASL|NASR, RESC1|RESCC,
691 " OD3 AR,AL,A1\n",
692
4d89f1ac 693#if defined(FORT) || defined(SPRECC)
b1ca30fc 694OPFLOAT, INAREG|INTAREG|FORCC,
d1dcacf0
RC
695 STAREG, TFLOAT,
696 SAREG|AWD, TFLOAT,
b1ca30fc 697 0, RLEFT|RESCC,
d1dcacf0 698 " OF2 AR,TAL\n",
b1ca30fc
ML
699
700OPFLOAT, INAREG|INTAREG|FORCC,
701 SAREG|AWD, TFLOAT,
702 SAREG|AWD, TFLOAT,
703 NAREG|NASL|NASR, RESC1|RESCC,
704 " OF3 AR,AL,TA1\n",
b1ca30fc
ML
705#endif
706
8b12ec80
DS
707#ifdef FORT
708/* perform some implicit conversions XXX SHOULD FIX f77 FRONT END */
709OPFLOAT, INAREG|INTAREG|FORCC,
710 SAREG|AWD, TFLOAT,
711 SAREG|AWD, TDOUBLE,
712 NAREG|NASL, RESC1|RESCC,
713 " cvtfd AL,A1\n OD2 AR,A1\n",
714
715OPFLOAT, INAREG|INTAREG|FORCC,
716 SAREG|AWD, TDOUBLE,
717 SAREG|AWD, TFLOAT,
718 NAREG|NASR, RESC1|RESCC,
719 " cvtfd AR,A1\n OD3 A1,AL,A1\n",
720#endif
721
b1ca30fc
ML
722 /* Default actions for hard trees ... */
723
724# define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
725
726UNARY MUL, DF( UNARY MUL ),
727
728INCR, DF(INCR),
729
730DECR, DF(INCR),
731
732ASSIGN, DF(ASSIGN),
733
734STASG, DF(STASG),
735
736FLD, DF(FLD),
737
738OPLEAF, DF(NAME),
739
740OPLOG, FORCC,
741 SANY, TANY,
742 SANY, TANY,
743 REWRITE, BITYPE,
744 "",
745
746OPLOG, DF(NOT),
747
748COMOP, DF(COMOP),
749
750INIT, DF(INIT),
751
752OPUNARY, DF(UNARY MINUS),
753
b1ca30fc
ML
754ASG OPANY, DF(ASG PLUS),
755
756OPANY, DF(BITYPE),
757
758FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" };