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