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