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