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