completely redo handling of SCONV nodes to cope with Tahoe's
[unix-history] / usr / src / old / pcc / ccom.tahoe / table.c
CommitLineData
0c90e030 1#ifndef lint
f1824a4b 2static char sccsid[] = "@(#)table.c 1.5 (Berkeley) %G%";
0c90e030
SL
3#endif
4
f8a5269a 5# include "pass2.h"
0c90e030
SL
6/* special shapes (SSOREG,SZERO etc.) shouldn't be or-ed */
7# define AWD SNAME|SOREG|SCON|STARNM|STARREG
8/* tbl */
9# define ANYSIGNED TPOINT|TINT|TSHORT|TCHAR
10# define ANYUSIGNED TUNSIGNED|TUSHORT|TUCHAR
11# define ANYFIXED ANYSIGNED|ANYUSIGNED
12# define TWORD TINT|TUNSIGNED|TPOINT
13/* tbl */
14
15struct optab table[] = {
16
17PCONV, INAREG|INTAREG,
18 SAREG|AWD, TCHAR|TSHORT,
19 SANY, TPOINT,
20 NAREG|NASL, RESC1,
21 " cvtZLl AL,A1\n",
22
23PCONV, INAREG|INTAREG,
24 SAREG|AWD, TUCHAR|TUSHORT,
25 SANY, TPOINT,
26 NAREG|NASL, RESC1,
27 " movzZLl AL,A1\n",
28
29 /* the following entry is to fix a problem with
30 the manner that the first pass handles the
31 type of a shift expression */
32PCONV, INAREG|INTAREG,
33 SAREG|AWD, TINT|TUNSIGNED,
34 SANY, TPOINT,
35 NAREG|NASL, RLEFT,
36 "",
37
38SCONV, INAREG|INTAREG|FORCC,
39 SAREG|AWD, TDOUBLE,
40 SANY, TFLOAT,
41 NAREG|NASL, RESC1|RESCC,
42 " ldd AL\n cvdf\n stf TA1\n",
43
44SCONV, INAREG|INTAREG|FORCC,
45 SAREG|AWD, TFLOAT,
46 SANY, TDOUBLE,
47 NAREG|NASL, RESC1|RESCC,
48 " ldfd AL\n std A1\n",
49
50SCONV, INAREG|INTAREG|FORCC,
51 SAREG|AWD, TINT|TUNSIGNED,
52 SANY, TFLOAT|TDOUBLE,
53 NAREG|NASL, RESC1|RESCC,
54 " cvlZR AL\n stZR TA1\n",
55
56SCONV, INAREG|INTAREG|FORCC,
57 SAREG|AWD, TFLOAT|TDOUBLE,
58 SANY, ANYFIXED,
59 NAREG|NASL, RESC1|RESCC,
60 " ldZL AL\n cvZLl A1\n",
61
f1824a4b
SL
62SCONV, INAREG|INTAREG,
63 SAREG|AWD, ANYFIXED,
0c90e030
SL
64 SANY, ANYFIXED,
65 NAREG|NASL, RESC1|RESCC,
f1824a4b 66 "ZU",
0c90e030
SL
67
68SCONV, INAREG|INTAREG|FORCC,
f1824a4b 69 SAREG|AWD, ANYFIXED,
0c90e030
SL
70 SANY, ANYFIXED,
71 NAREG|NASL, RESC1|RESCC,
f1824a4b 72 "ZV",
0c90e030
SL
73
74INIT, FOREFF,
75 SCON, TANY,
76 SANY, TWORD,
77 0, RNOP,
78 " .long CL\n",
79
80INIT, FOREFF,
81 SCON, TANY,
82 SANY, TSHORT|TUSHORT,
83 0, RNOP,
84 " .word CL\n",
85
86INIT, FOREFF,
87 SCON, TANY,
88 SANY, TCHAR|TUCHAR,
89 0, RNOP,
90 " .byte CL\n",
91
92 /* for the use of fortran only */
93
94GOTO, FOREFF,
95 SCON, TANY,
96 SANY, TANY,
97 0, RNOP,
98 " jbr CL\n",
99
100GOTO, FOREFF,
101 AWD, TANY,
102 SANY, TANY,
103 0, RNOP,
104 " jmp *AL\n",
105
106GOTO, FOREFF,
107 SAREG, TANY,
108 SANY, TANY,
109 0, RNOP,
110 " jmp (AL)\n",
111
112STARG, FORARG,
113 SCON|SOREG, TANY,
114 SANY, TANY,
115 NTEMP+2*NAREG, RESC3,
116 "ZS",
117
118STASG, FORARG,
119 SNAME|SOREG, TANY,
120 SCON|SAREG, TANY,
121 0, RNULL,
122 " ZT\nZS",
123
124STASG, FOREFF,
125 SNAME|SOREG, TANY,
126 SCON|SAREG, TANY,
127 0, RNOP,
128 "ZS",
129
130STASG, INAREG,
131 SNAME|SOREG, TANY,
132 SCON, TANY,
133 NAREG, RESC1,
134 "ZS movl AR,A1\n",
135
136STASG, INAREG,
137 SNAME|SOREG, TANY,
138 SAREG, TANY,
139 0, RRIGHT,
140 " pushl AR\nZS movl (sp)+,AR\n",
141
142OPLOG, FORCC,
143 SAREG|AWD, TWORD,
144 SAREG|AWD, TWORD,
145 0, RESCC,
146 " cmpl AL,AR\nZP",
147
148OPLOG, FORCC,
f1824a4b
SL
149 AWD, TUSHORT,
150 SCON, TANY,
0c90e030
SL
151 NAREG, RESCC,
152 " movzwl AL,A1\n cmpw A1,AR\nZP",
0c90e030
SL
153
154OPLOG, FORCC,
155 SAREG|AWD, TSHORT|TUSHORT,
f1824a4b 156 SCON, TANY,
0c90e030 157 0, RESCC,
f1824a4b 158 " cmpw AL,ZZ\nZP",
0c90e030
SL
159
160OPLOG, FORCC,
161 SAREG|AWD, TSHORT|TUSHORT,
162 SAREG|AWD, TSHORT|TUSHORT,
163 0, RESCC,
164 " cmpw AL,AR\nZP",
165
166OPLOG, FORCC,
f1824a4b
SL
167 AWD, TUCHAR,
168 SCON, TANY,
169 NAREG, RESCC,
170 " movzbl AL,A1\n cmpb A1,AR\nZP",
0c90e030
SL
171
172OPLOG, FORCC,
f1824a4b
SL
173 SAREG|AWD, TCHAR|TUCHAR,
174 SCON, TANY,
0c90e030 175 0, RESCC,
f1824a4b 176 " cmpb AL,ZZ\nZP",
0c90e030
SL
177
178OPLOG, FORCC,
179 SAREG|AWD, TCHAR|TUCHAR,
f1824a4b 180 SAREG|AWD, TCHAR|TUCHAR,
0c90e030
SL
181 0, RESCC,
182 " cmpb AL,AR\nZP",
183
184OPLOG, FORCC,
185 SAREG|AWD, TFLOAT,
186 SAREG|AWD, TFLOAT,
187 0, RESCC,
188 " cmpZL2 AL,AR\nZP",
189
190OPLOG, FORCC,
191 SZERO, TDOUBLE,
192 SAREG|AWD, TDOUBLE,
193 0, RESCC,
194 " cmpf2 AL,AR\nZP",
195
196OPLOG, FORCC,
197 SAREG|AWD, TDOUBLE,
198 SAREG|AWD, TDOUBLE,
199 0, RESCC,
200 " cmpZL2 AL,AR\nZP",
201
202CCODES, INAREG|INTAREG,
203 SANY, TANY,
204 SANY, TANY,
205 NAREG, RESC1,
206 " movl $1,A1\nZN",
207
208UNARY CALL, INAREG|INTAREG,
209 SCON, TANY,
210 SANY, TANY,
211 NAREG|NASL, RESC1, /* should be register 0 */
212 " ZC,CL\n",
213
214UNARY CALL, INAREG|INTAREG,
215 SAREG, TANY,
216 SANY, TANY,
217 NAREG|NASL, RESC1, /* should be 0 */
218 " ZC,(AL)\n",
219
220UNARY CALL, INAREG|INTAREG,
221 SNAME, TANY,
222 SANY, TANY,
223 NAREG|NASL, RESC1, /* really reg 0 */
224 " ZC,*AL\n",
225
226UNARY CALL, INAREG|INTAREG,
227 SSOREG, TANY,
228 SANY, TANY,
229 NAREG|NASL, RESC1, /* really reg 0 */
230 " ZC,*AL\n",
231
232FORTCALL, INAREG|INTAREG,
233 SCON, TANY,
234 SAREG|AWD, TFLOAT,
235 NAREG|NASL|NASR, RESC1,
236 " ldf AR\n CLf\n stf TA1\n",
237
238ASG OPSHFT, INAREG|FOREFF|FORCC,
239 SAREG|AWD, TWORD,
240 SAREG|SCON, ANYFIXED,
241 0, RLEFT|RESCC,
242 " ZH AR,AL,AL\n",
243
244ASG OPSHFT, INAREG|FOREFF|FORCC,
245 SAREG|AWD, TWORD,
246 AWD, TCHAR|TUCHAR,
247 0, RLEFT|RESCC,
248 " ZH AR,AL,AL\n",
249
250ASG OPSHFT, INAREG|FOREFF|FORCC,
251 SAREG|AWD, TWORD,
252 AWD, ANYFIXED,
253 NAREG, RLEFT|RESCC,
254 " ZB AR,A1\n ZH A1,AL,AL\n",
255
256OPSHFT, INAREG|INTAREG|FORCC,
257 SAREG|AWD, TWORD,
258 SAREG|SCON, ANYFIXED,
259 NAREG|NASL|NASR, RESC1|RESCC,
260 " ZH AR,AL,A1\n",
261
262OPSHFT, INAREG|INTAREG|FORCC,
263 SAREG|AWD, TWORD,
264 AWD, TCHAR|TUCHAR,
265 NAREG|NASL|NASR, RESC1|RESCC,
266 " ZH AR,AL,A1\n",
267
268OPSHFT, INAREG|INTAREG|FORCC,
269 SAREG|AWD, TWORD,
270 AWD, ANYFIXED,
271 NAREG|NASR, RESC1|RESCC,
272 " ZB AR,A1\n ZH A1,AL,A1\n",
273
274INCR, FOREFF,
275 AWD, TWORD,
276 SCON, TANY,
277 0, RLEFT,
278 " ZE\n",
279
280DECR, FOREFF,
281 AWD, TWORD,
282 SCON, TANY,
283 0, RLEFT,
284 " ZE\n",
285
286INCR, FOREFF,
287 SAREG, TWORD,
288 SCON, TANY,
289 0, RLEFT,
290 " ZE\n",
291
292DECR, FOREFF,
293 SAREG, TWORD,
294 SCON, TANY,
295 0, RLEFT,
296 " ZE\n",
297
298/* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */
299
300INCR, INAREG|INTAREG,
301 AWD, TANY,
302 SCON, TANY,
303 NAREG, RESC1,
304 " ZD\n",
305
306DECR, INAREG|INTAREG,
307 AWD, TANY,
308 SCON, TANY,
309 NAREG, RESC1,
310 " ZD\n",
311
312INCR, INAREG|INTAREG,
313 SAREG, TWORD,
314 SCON, TANY,
315 NAREG, RESC1,
316 " ZD\n",
317
318DECR, INAREG|INTAREG,
319 SAREG, TWORD,
320 SCON, TANY,
321 NAREG, RESC1,
322 " ZD\n",
323
324ASSIGN, INAREG|FOREFF|FORCC,
325 SIREG, TDOUBLE,
326 SZERO, TANY,
327 0, RLEFT|RESCC,
328 " cvld $0\n std AL\n",
329
330ASSIGN, INAREG|FOREFF|FORCC,
331 SAREG|SNAME|SOREG, TDOUBLE,
332 SZERO, TANY,
333 0, RLEFT|RESCC,
334 " clrl UL\n clrl AL\n",
335
336ASSIGN, INAREG|FOREFF|FORCC,
337 SAREG|AWD, TDOUBLE,
338 SIREG, TDOUBLE,
339 0, RLEFT|RRIGHT|RESCC,
340 " ldd AR\n std AL\n",
341
342ASSIGN, INAREG|FOREFF|FORCC,
343 SIREG, TDOUBLE,
344 SAREG|AWD, TDOUBLE,
345 0, RLEFT|RRIGHT|RESCC,
346 " ldd AR\n std AL\n",
347
348ASSIGN, INAREG|FOREFF|FORCC,
349 SAREG|SNAME|SOREG, TDOUBLE,
350 SAREG|SNAME|SOREG, TDOUBLE,
351 0, RLEFT|RRIGHT|RESCC,
352 " movl UR,UL\n movl AR,AL\n",
353
354ASSIGN, INAREG|FOREFF|FORCC,
355 SAREG|AWD, TFLOAT,
356 SZERO, TANY,
357 0, RLEFT|RESCC,
358 " clrl TAL\n",
359
360ASSIGN, INAREG|FOREFF|FORCC,
361 SAREG|AWD, TFLOAT,
362 SAREG|AWD, TFLOAT,
363 0, RLEFT|RRIGHT|RESCC,
364 " movl AR,TAL\n",
365
366ASSIGN, INAREG|FOREFF|FORCC,
367 SAREG|AWD, ANYFIXED,
368 SAREG|AWD, ANYFIXED,
369 0, RLEFT|RRIGHT|RESCC,
370 " ZA\n",
371
372ASSIGN, INAREG|FOREFF,
373 SFLD, TANY,
374 SZERO, TANY,
375 0, RRIGHT,
376 " andl2 N,AL\n",
377
378ASSIGN, INAREG|FOREFF,
379 SFLD, TANY,
380 SCON, TANY,
381 0, RRIGHT,
382 " andl2 N,AL\n orl2 ZF,AL\n",
383
384ASSIGN, INAREG|FOREFF,
385 SFLD, TANY,
386 SAREG|AWD, TWORD,
387 NAREG|NASL, RRIGHT,
388 " shll $H,AR,A1\n andl2 M,A1\n andl2 N,AL\n\
389 orl2 A1,AL\n",
390
391/* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */
392UNARY MUL, FOREFF,
393 SCC, TANY,
394 SCC, TANY,
395 0, RNULL,
396 " help help help\n",
397
398REG, INTEMP,
399 SANY, TANY,
400 SAREG, TDOUBLE,
401 2*NTEMP, RESC1,
402 " movl UR,U1\n movl AR,A1\n",
403
404REG, INTEMP,
405 SANY, TANY,
406 SAREG, TANY,
407 NTEMP, RESC1,
408 " movl AR,A1\n",
409
410REG, FORARG,
411 SANY, TANY,
412 SAREG, TFLOAT,
413 0, RNULL,
414 " pushl $0\n pushl AR\n",
415
416REG, FORARG,
417 SANY, TANY,
418 SAREG, TDOUBLE,
419 0, RNULL,
420 " pushl UR\n pushl AR\n",
421
422OPLEAF, FOREFF,
423 SANY, TANY,
424 SAREG|AWD, TANY,
425 0, RLEFT,
426 "",
427
428OPLTYPE, INAREG|INTAREG,
429 SANY, TANY,
430 SZERO, TDOUBLE,
431 NAREG|NASR, RESC1,
432 " clrl U1\n clrl A1\n",
433
434OPLTYPE, INAREG|INTAREG,
435 SANY, TANY,
436 SIREG, TDOUBLE,
437 NAREG|NASR, RESC1,
438 " ldd AR\n std A1\n",
439
440OPLTYPE, INAREG|INTAREG,
441 SANY, TANY,
442 SAREG|SNAME|SOREG|SCON, TDOUBLE,
443 NAREG, RESC1,
444 " movl AR,A1\n movl UR,U1\n",
445
446OPLTYPE, INAREG|INTAREG,
447 SANY, TANY,
448 SZERO, TANY,
449 NAREG|NASR, RESC1,
450 " clrl TA1\n",
451
452OPLTYPE, INAREG|INTAREG,
453 SANY, TANY,
454 SAREG|AWD, TFLOAT,
455 NAREG|NASR, RESC1,
456 " movl AR,TA1\n",
457
458OPLTYPE, INAREG|INTAREG,
459 SANY, TANY,
460 SANY, ANYFIXED,
461 NAREG|NASR, RESC1,
462 " ZA\n",
463
464OPLTYPE, FORCC,
465 SANY, TANY,
466 SIREG, TDOUBLE,
467 0, RESCC,
468 " ldd AR\n tstd\n",
469
470OPLTYPE, FORCC,
471 SANY, TANY,
ae97d244 472 SAREG|AWD, TFLOAT,
0c90e030 473 0, RESCC,
ae97d244
SL
474 " ldf AR\n tstf\n",
475
476OPLTYPE, FORCC,
477 SANY, TANY,
478 SAREG|AWD, TDOUBLE,
479 0, RESCC,
480 " ldd AR\n tstd\n",
0c90e030
SL
481
482OPLTYPE, FORCC,
483 SANY, TANY,
484 SANY, ANYFIXED,
485 0, RESCC,
486 " tstZR AR\n",
487
488OPLTYPE, FORARG,
489 SANY, TANY,
490 SANY, TWORD,
491 0, RNULL,
492 " pushl AR\n",
493
494OPLTYPE, FORARG,
495 SANY, TANY,
496 SANY, TCHAR|TSHORT,
497 0, RNULL,
498 " pushZR AR\n",
499
500OPLTYPE, FORARG,
501 SANY, TANY,
502 SANY, TUCHAR|TUSHORT,
503 0, RNULL,
504 " movzZRl AR,-(sp)\n",
505
506OPLTYPE, FORARG,
507 SANY, TANY,
508 SZERO, TFLOAT|TDOUBLE,
509 0, RNULL,
510 " pushl $0\n pushl $0\n",
511
512OPLTYPE, FORARG,
513 SANY, TANY,
514 SIREG, TDOUBLE,
515 0, RNULL,
516 " ldd AR\n pushd\n",
517
518OPLTYPE, FORARG,
519 SANY, TANY,
520 SAREG|AWD, TDOUBLE,
521 0, RNULL,
522 " pushl UR\n pushl AR\n",
523
524OPLTYPE, FORARG,
525 SANY, TANY,
526 SAREG|AWD, TFLOAT,
527 0, RNULL,
528 " pushl $0\n pushl AR\n",
529
530UNARY MINUS, INAREG|INTAREG|FORCC,
531 SAREG|AWD, ANYSIGNED|TUNSIGNED,
532 SANY, TANY,
533 NAREG|NASL, RESC1|RESCC,
534 " mnegZL AL,A1\n",
535
536UNARY MINUS, INAREG|INTAREG|FORCC,
537 SAREG|AWD, TFLOAT|TDOUBLE,
538 SANY, TANY,
539 NAREG|NASL, RESC1|RESCC,
540 " lnZL AL\n stZL TA1\n",
541
542COMPL, INAREG|INTAREG|FORCC,
543 SAREG|AWD, ANYSIGNED|TUNSIGNED,
544 SANY, TANY,
545 NAREG|NASL, RESC1|RESCC,
546 " mcomZL AL,A1\n",
547
548COMPL, INAREG|INTAREG|FORCC,
549 SAREG|AWD, ANYFIXED,
550 SANY, TANY,
551 NAREG|NASL, RESC1|RESCC,
552 " cvtZLl AL,A1\n mcoml A1,A1\n",
553
554AND, FORCC,
555 SAREG|AWD, TWORD,
556 SAREG|AWD, TWORD,
557 0, RESCC,
558 " bitl AR,AL\n",
559
560AND, FORCC,
561 SAREG|AWD, TSHORT|TUSHORT,
562 SSCON, TWORD,
563 0, RESCC,
564 " bitw AR,AL\n",
565
566AND, FORCC,
567 SAREG|AWD, TSHORT|TUSHORT,
568 SAREG|AWD, TSHORT|TUSHORT,
569 0, RESCC,
570 " bitw AR,AL\n",
571
572AND, FORCC,
573 SAREG|AWD, TCHAR|TUCHAR,
574 SCCON, TWORD,
575 0, RESCC,
576 " bitb AR,AL\n",
577
578AND, FORCC,
579 SAREG|AWD, TCHAR|TUCHAR,
580 SAREG|AWD, TCHAR|TUCHAR,
581 0, RESCC,
582 " bitb AR,AL\n",
583
584ASG DIV, INAREG|FOREFF|FORCC, /* should have been done in mip */
585 SAREG|AWD, ANYFIXED,
586 SONE, TWORD,
587 0, RLEFT|RESCC,
588 " tstZL AL\n",
589
590ASG DIV, INAREG|FOREFF|FORCC,
ae97d244
SL
591 SAREG|AWD, TUCHAR|TUSHORT,
592 SAREG|AWD, TUCHAR|TUSHORT,
593 2*NAREG, RLEFT|RESC1|RESCC,
594 "ZX OL2 A2,A1\n cvtlZL A1,AL\n",
0c90e030
SL
595
596ASG DIV, INAREG|FOREFF|FORCC,
0c90e030 597 SAREG|AWD, TWORD,
ae97d244
SL
598 SAREG|AWD, TUNSIGNED,
599 3*NAREG|NEVEN, RLEFT|RESCC,
600 "ZM OE AR,A1,A2,A3\n movl A2,AL\n",
0c90e030
SL
601
602DIV, INAREG|INTAREG|FORCC,
ae97d244
SL
603 SAREG|AWD, TUCHAR|TUSHORT,
604 SAREG|AWD, TUCHAR|TUSHORT,
605 2*NAREG, RESC1|RESCC,
606 "ZX OL2 A2,A1\n",
0c90e030
SL
607
608DIV, INAREG|INTAREG|FORCC,
0c90e030 609 SAREG|AWD, TWORD,
ae97d244 610 SAREG|AWD, TUNSIGNED,
0c90e030
SL
611 3*NAREG|NEVEN, RESC2|RESCC,
612 "ZM OE AR,A1,A2,A3\n",
613
614ASG MOD, INAREG|FOREFF,
615 SAREG|AWD, ANYFIXED,
616 SONE, TWORD,
617 0, RLEFT,
618 " clrZL AL\n",
619
620MOD, INAREG|INTAREG,
621 STAREG, TWORD,
622 SONE, TWORD,
623 0, RLEFT,
624 " clrl AL\n",
625
626MOD, INAREG|INTAREG,
627 SAREG|AWD, ANYFIXED,
628 SONE, TWORD,
629 0, RESC1,
630 " clrl A1\n",
631
632ASG MOD, INAREG|FOREFF,
633 SAREG|AWD, TWORD,
634 SAREG|AWD, TWORD,
635 3*NAREG|NEVEN, RLEFT,
636 "ZM OE AR,A1,A2,A3\n movl A3,AL\n",
637
638MOD, INAREG|INTAREG,
639 SAREG|AWD, TWORD,
640 SAREG|AWD, TWORD,
641 3*NAREG|NEVEN, RESC3,
642 "ZM OE AR,A1,A2,A3\n",
643
ae97d244
SL
644ASG MUL, INAREG|FOREFF|FORCC,
645 SAREG|AWD, TCHAR|TUCHAR,
646 SAREG|AWD, TCHAR|TUCHAR,
647 2*NAREG, RLEFT|RESCC,
648 "ZX OL2 A2,A1\n cvtlb A1,AL\n",
649
650ASG MUL, INAREG|FOREFF|FORCC,
651 SAREG|AWD, TUNSIGNED,
652 SAREG|AWD, TUNSIGNED|TINT,
653 NAREG|NEVEN, RLEFT|RESCC,
654 " emul AR,AL,$0,A1\n movl U1,AL\n",
655
656ASG MUL, INAREG|FOREFF|FORCC,
657 SAREG|AWD, TUNSIGNED|TINT,
658 SAREG|AWD, TUNSIGNED,
659 NAREG|NEVEN, RLEFT|RESCC,
660 " emul AR,AL,$0,A1\n movl U1,AL\n",
0c90e030
SL
661
662ASG OPMUL, INAREG|FOREFF|FORCC,
663 SAREG|AWD, TWORD,
664 SAREG|AWD, TWORD,
ae97d244
SL
665 0, RLEFT|RESCC,
666 " OL2 AR,AL\n",
667
668MUL, INAREG|INTAREG|FORCC,
669 STAREG, TUNSIGNED,
670 SAREG|AWD, TUNSIGNED|TINT,
0c90e030
SL
671 NAREG|NEVEN, RLEFT|RESCC,
672 " emul AR,AL,$0,A1\n movl U1,AL\n",
673
ae97d244
SL
674MUL, INAREG|INTAREG|FORCC,
675 STAREG, TUNSIGNED|TINT,
676 SAREG|AWD, TUNSIGNED,
677 NAREG|NEVEN, RLEFT|RESCC,
678 " emul AR,AL,$0,A1\n movl U1,AL\n",
0c90e030
SL
679
680OPMUL, INAREG|INTAREG|FORCC,
ae97d244
SL
681 STAREG, TWORD,
682 SAREG|AWD, TWORD,
0c90e030
SL
683 0, RLEFT|RESCC,
684 " OL2 AR,AL\n",
685
ae97d244
SL
686MUL, INAREG|INTAREG|FORCC,
687 SAREG|AWD, TCHAR|TUCHAR,
688 SAREG|AWD, TCHAR|TUCHAR,
689 2*NAREG, RESC1|RESCC,
690 "ZX mull2 A2,A1\n",
0c90e030 691
ae97d244
SL
692MUL, INAREG|INTAREG|FORCC,
693 SAREG|AWD, TUNSIGNED,
694 SAREG|AWD, TUNSIGNED|TINT,
695 NAREG|NEVEN, RESC1|RESCC,
696 " emul AR,AL,$0,A1\n movl U1,A1\n",
697
698MUL, INAREG|INTAREG|FORCC,
699 SAREG|AWD, TUNSIGNED|TINT,
700 SAREG|AWD, TUNSIGNED,
701 NAREG|NEVEN, RESC1|RESCC,
702 " emul AR,AL,$0,A1\n movl U1,A1\n",
0c90e030
SL
703
704OPMUL, INAREG|INTAREG|FORCC,
705 SAREG|AWD, TWORD,
706 SAREG|AWD, TWORD,
ae97d244
SL
707 NAREG|NASL|NASR, RESC1|RESCC,
708 " OL3 AR,AL,A1\n",
0c90e030
SL
709
710ASG PLUS, INAREG|FOREFF|FORCC,
711 SAREG, TWORD,
712 SONE, TINT,
713 0, RLEFT|RESCC,
714 " incZL AL\n",
715
716ASG PLUS, INAREG|FOREFF|FORCC,
717 AWD, ANYFIXED,
718 SONE, TINT,
719 0, RLEFT|RESCC,
720 " incZL AL\n",
721
722ASG MINUS, INAREG|FOREFF|FORCC,
723 SAREG, TWORD,
724 SONE, TINT,
725 0, RLEFT|RESCC,
726 " decZL AL\n",
727
728ASG MINUS, INAREG|FOREFF|FORCC,
729 AWD, ANYFIXED,
730 SONE, TINT,
731 0, RLEFT|RESCC,
732 " decZL AL\n",
733
734PLUS, INAREG|INTAREG|FORCC,
735 STAREG, TWORD,
736 SONE, TWORD,
737 0, RLEFT|RESCC,
738 " incZL AL\n",
739
740MINUS, INAREG|INTAREG|FORCC,
741 STAREG, TWORD,
742 SONE, TWORD,
743 0, RLEFT|RESCC,
744 " decZL AL\n",
745
746ASG OPSIMP, INAREG|FOREFF|FORCC,
747 SAREG|AWD, TWORD,
748 SAREG|AWD, TWORD,
749 0, RLEFT|RESCC,
750 " OL2 AR,AL\n",
751
752ASG OPSIMP, INAREG|FOREFF|FORCC,
753 SAREG, TWORD,
754 SAREG, TSHORT|TUSHORT|TCHAR|TUCHAR,
755 0, RLEFT|RESCC,
756 " OL2 AR,AL\n",
757
758ASG OPSIMP, INAREG|FOREFF|FORCC,
759 AWD, TSHORT|TUSHORT,
760 SAREG|AWD, TSHORT|TUSHORT,
761 0, RLEFT|RESCC,
762 " OW2 AR,AL\n",
763
764ASG OPSIMP, INAREG|FOREFF|FORCC,
765 AWD, TSHORT|TUSHORT,
766 SSCON, TWORD,
767 0, RLEFT|RESCC,
768 " OW2 AR,AL\n",
769
770ASG OPSIMP, INAREG|FOREFF|FORCC,
771 AWD, TCHAR|TUCHAR,
772 SAREG|AWD, TCHAR|TUCHAR,
773 0, RLEFT|RESCC,
774 " OB2 AR,AL\n",
775
776ASG OPSIMP, INAREG|FOREFF|FORCC,
777 AWD, TCHAR|TUCHAR,
778 SCCON, TWORD,
779 0, RLEFT|RESCC,
780 " OB2 AR,AL\n",
781
782OPSIMP, INAREG|INTAREG|FORCC,
783 STAREG, ANYFIXED,
784 SAREG|AWD, TWORD,
785 0, RLEFT|RESCC,
786 " OL2 AR,AL\n",
787
788OPSIMP, INAREG|INTAREG|FORCC,
789 SAREG|AWD, TWORD,
790 SAREG|AWD, TWORD,
791 NAREG|NASL|NASR, RESC1|RESCC,
792 " OL3 AR,AL,A1\n",
793
794ASG OPSIMP, INAREG|FOREFF,
795 SAREG|AWD, TFLOAT|TDOUBLE,
796 SZERO, TANY,
797 0, RLEFT,
798 "",
799
800ASG MUL, INAREG|FOREFF|FORCC,
801 SIREG, TDOUBLE,
802 SZERO, TANY,
803 0, RLEFT|RESCC,
804 " cvld $0\n std AL\n",
805
806ASG MUL, INAREG|FOREFF|FORCC,
807 SAREG|SNAME|SOREG, TDOUBLE,
808 SZERO, TANY,
809 0, RLEFT|RESCC,
810 " clrl UL\n clrl AL\n",
811
812ASG MUL, INAREG|FOREFF|FORCC,
813 SAREG|AWD, TFLOAT,
814 SZERO, TANY,
815 0, RLEFT|RESCC,
816 " clrl TAL\n",
817
818ASG OPFLOAT, INAREG|FOREFF|FORCC,
819 SAREG|AWD, TFLOAT,
820 SAREG|AWD, TFLOAT,
821 0, RLEFT|RESCC,
822 " ldf AL\n OF AR\n stf TAL\n",
823
824ASG OPFLOAT, INAREG|FOREFF|FORCC,
825 SAREG|AWD, TDOUBLE,
826 SAREG|AWD, TDOUBLE,
827 0, RLEFT|RESCC,
828 " ldd AL\n OD AR\n std AL\n",
829
830OPSIMP, INAREG|INTAREG,
831 SAREG, TFLOAT|TDOUBLE,
832 SZERO, TANY,
833 0, RLEFT,
7285cb64 834#if defined(FORT) || defined(SPRECC)
ae97d244 835 "T",
7285cb64
SL
836#else
837 "",
838#endif
0c90e030
SL
839
840OPSIMP, INAREG|INTAREG|FORCC,
841 AWD, TFLOAT,
842 SZERO, TANY,
843 NAREG, RESC1|RESCC,
844 " movl AL,A1\n",
845
846OPSIMP, INAREG|INTAREG|FORCC,
847 AWD, TDOUBLE,
848 SZERO, TANY,
849 NAREG, RESC1|RESCC,
850 " movl UL,U1\n movl AL,A1\n",
851
852MUL, INAREG|INTAREG|FORCC,
853 SAREG|AWD, TDOUBLE,
854 SZERO, TANY,
855 NAREG|NASR, RESC1|RESCC,
856 " clrl U1\n clrl A1\n",
857
858MUL, INAREG|INTAREG|FORCC,
859 SAREG|AWD, TFLOAT,
860 SZERO, TANY,
861 NAREG|NASR, RESC1|RESCC,
862 " clrl TA1\n",
863
864OPFLOAT, INAREG|INTAREG|FORCC,
865 SAREG|AWD, TFLOAT,
866 SAREG|AWD, TFLOAT,
867 NAREG|NASL|NASR, RESC1|RESCC,
868 " ldf AL\n OF AR\n stf TA1\n",
869
ae97d244
SL
870OPFLOAT, INAREG|INTAREG|FORCC,
871 SZERO, TANY,
872 SAREG|AWD, TDOUBLE,
873 NAREG, RESC1|RESCC,
874 "\tclrl\tA1\n\tclrl\tU1\n\tldd\tA1\n\tOD\tAR\n\tstd\tA1\n",
875
0c90e030
SL
876OPFLOAT, INAREG|INTAREG|FORCC,
877 SAREG|AWD, TDOUBLE,
878 SAREG|AWD, TDOUBLE,
879 NAREG|NASL|NASR, RESC1|RESCC,
880 " ldd AL\n OD AR\n std A1\n",
881
882 /* Default actions for hard trees ... */
883
884# define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
885
886UNARY MUL, DF( UNARY MUL ),
887
888INCR, DF(INCR),
889
890DECR, DF(INCR),
891
892ASSIGN, DF(ASSIGN),
893
894STASG, DF(STASG),
895
896FLD, DF(FLD),
897
898OPLEAF, DF(NAME),
899
900OPLOG, FORCC,
901 SANY, TANY,
902 SANY, TANY,
903 REWRITE, BITYPE,
904 "",
905
906OPLOG, DF(NOT),
907
908COMOP, DF(COMOP),
909
910INIT, DF(INIT),
911
912OPUNARY, DF(UNARY MINUS),
913
914
915ASG OPANY, DF(ASG PLUS),
916
917OPANY, DF(BITYPE),
918
919FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" };