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