|
|
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: STARG, INTEMP,
145: SAREG, 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: UNARY CALL, INTAREG,
259: SCON, TANY,
260: SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
261: NAREG|NASL, RESC1, /* should be register 0 */
262: " calls ZC,CL\n",
263:
264: UNARY CALL, INTAREG,
265: SAREG, TANY,
266: SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
267: NAREG|NASL, RESC1, /* should be 0 */
268: " calls ZC,(AL)\n",
269:
270: UNARY CALL, INAREG|INTAREG,
271: SNAME, TANY,
272: SANY, TANY,
273: NAREG|NASL, RESC1, /* really reg 0 */
274: " calls ZC,*AL\n",
275:
276: UNARY CALL, INAREG|INTAREG,
277: SSOREG, TANY,
278: SANY, TANY,
279: NAREG|NASL, RESC1, /* really reg 0 */
280: " calls ZC,*AL\n",
281:
282: ASG RS, INAREG|FOREFF|FORCC,
283: SAREG, TWORD,
284: SCON, TINT,
285: 0, RLEFT|RESCC,
286: " extzv AR,ZU,AL,AL\n",
287:
288: ASG RS, INAREG|FOREFF|FORCC,
289: SAREG, TWORD,
290: SAREG, ANYFIXED,
291: NAREG, RLEFT|RESCC,
292: " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n",
293:
294: ASG RS, INAREG|FOREFF|FORCC,
295: SAREG, TWORD,
296: SAREG|AWD, TWORD,
297: NAREG, RLEFT|RESCC,
298: " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n",
299:
300: RS, INAREG|INTAREG|FORCC,
301: SAREG, TWORD,
302: SCON, TINT,
303: NAREG|NASL, RESC1|RESCC,
304: " extzv AR,ZU,AL,A1\n",
305:
306: ASG LS, INAREG|FOREFF|FORCC,
307: SAREG|AWD, TWORD,
308: SAREG|NIAWD, ANYSIGNED|ANYUSIGNED,
309: 0, RLEFT|RESCC,
310: " ashl AR,AL,AL\n",
311:
312: ASG LS, INAREG|FOREFF|FORCC,
313: SAREG|AWD, TWORD,
314: SSOREG, ANYSIGNED|ANYUSIGNED,
315: 0, RLEFT|RESCC,
316: " ashl AR,AL,AL\n",
317:
318: ASG LS, INAREG|FOREFF|FORCC,
319: SAREG|AWD, TWORD,
320: SOREG, ANYSIGNED|ANYUSIGNED,
321: NAREG, RLEFT|RESCC,
322: " ZB AR,A1\n ashl A1,AL,AL\n",
323:
324: LS, INAREG|INTAREG|FORCC,
325: SAREG|AWD, TWORD,
326: SAREG|NIAWD, 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: SSOREG, ANYSIGNED|ANYUSIGNED,
333: NAREG|NASL|NASR, RESC1|RESCC,
334: " ashl AR,AL,A1\n",
335:
336: LS, INAREG|INTAREG|FORCC,
337: SAREG|AWD, TWORD,
338: SOREG, ANYSIGNED|ANYUSIGNED,
339: NAREG|NASR, RESC1|RESCC,
340: " ZB AR,A1\n ashl A1,AL,A1\n",
341:
342: INCR, FOREFF,
343: AWD, TANY,
344: SCON, TANY,
345: 0, RLEFT,
346: " ZE\n",
347:
348: DECR, FOREFF,
349: AWD, TANY,
350: SCON, TANY,
351: 0, RLEFT,
352: " ZE\n",
353:
354: INCR, FOREFF,
355: SAREG, TWORD,
356: SCON, TANY,
357: 0, RLEFT,
358: " ZE\n",
359:
360: DECR, FOREFF,
361: SAREG, TWORD,
362: SCON, TANY,
363: 0, RLEFT,
364: " ZE\n",
365:
366: /* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */
367:
368: INCR, INAREG|INTAREG,
369: AWD, TANY,
370: SCON, TANY,
371: NAREG, RESC1,
372: " ZD\n",
373:
374: DECR, INAREG|INTAREG,
375: AWD, TANY,
376: SCON, TANY,
377: NAREG, RESC1,
378: " ZD\n",
379:
380: INCR, INAREG|INTAREG,
381: SAREG, TWORD,
382: SCON, TANY,
383: NAREG, RESC1,
384: " ZD\n",
385:
386: DECR, INAREG|INTAREG,
387: SAREG, TWORD,
388: SCON, TANY,
389: NAREG, RESC1,
390: " ZD\n",
391:
392: ASSIGN, INAREG|FOREFF|FORCC,
393: SAREG|AWD, TANY,
394: SAREG|AWD, TANY,
395: 0, RLEFT|RRIGHT|RESCC,
396: " ZA\n",
397:
398: ASSIGN, INAREG|FOREFF,
399: SFLD, TANY,
400: SAREG|AWD, TWORD,
401: 0, RRIGHT,
402: " insv AR,$H,$S,AL\n",
403:
404: ASSIGN, INAREG|FOREFF|FORCC,
405: SAREG|AWD, TWORD,
406: SFLD, ANYSIGNED,
407: 0, RLEFT|RESCC,
408: " extv $H,$S,AR,AL\n",
409:
410: ASSIGN, INAREG|FOREFF|FORCC,
411: SAREG|AWD, TWORD,
412: SFLD, ANYUSIGNED,
413: 0, RLEFT|RESCC,
414: " extzv $H,$S,AR,AL\n",
415:
416: /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */
417: UNARY MUL, FOREFF,
418: SCC, TANY,
419: SCC, TANY,
420: 0, RNULL,
421: " HELP HELP HELP\n",
422:
423: REG, INTEMP,
424: SANY, TANY,
425: SAREG, TDOUBLE,
426: 2*NTEMP, RESC1,
427: " movd AR,A1\n",
428:
429: REG, INTEMP,
430: SANY, TANY,
431: SAREG, TANY,
432: NTEMP, RESC1,
433: " movZF AR,A1\n",
434:
435: #ifdef FORT
436: REG, FORARG,
437: SANY, TANY,
438: SAREG, TFLOAT,
439: 0, RNULL,
440: " cvtfd AR,-(sp)\n",
441:
442: REG, FORARG,
443: SANY, TANY,
444: SAREG, TDOUBLE,
445: 0, RNULL,
446: " movZR AR,-(sp)\n",
447: #endif
448:
449: OPLEAF, FOREFF,
450: SANY, TANY,
451: SAREG|AWD, TANY,
452: 0, RLEFT,
453: "",
454:
455: OPLTYPE, INAREG|INTAREG,
456: SANY, TANY,
457: SANY, TFLOAT|TDOUBLE,
458: 2*NAREG|NASR, RESC1,
459: " ZA\n",
460:
461: OPLTYPE, INAREG|INTAREG,
462: SANY, TANY,
463: SANY, TANY,
464: NAREG|NASR, RESC1,
465: " ZA\n",
466:
467: OPLTYPE, FORCC,
468: SANY, TANY,
469: SANY, TANY,
470: 0, RESCC,
471: " tstZR AR\n",
472:
473: OPLTYPE, FORARG,
474: SANY, TANY,
475: SANY, TWORD,
476: 0, RNULL,
477: " pushl AR\n",
478:
479: OPLTYPE, FORARG,
480: SANY, TANY,
481: SANY, TCHAR|TSHORT,
482: 0, RNULL,
483: " cvtZRl AR,-(sp)\n",
484:
485: OPLTYPE, FORARG,
486: SANY, TANY,
487: SANY, TUCHAR|TUSHORT,
488: 0, RNULL,
489: " movzZRl AR,-(sp)\n",
490:
491: OPLTYPE, FORARG,
492: SANY, TANY,
493: SANY, TDOUBLE,
494: 0, RNULL,
495: " movd AR,-(sp)\n",
496:
497: OPLTYPE, FORARG,
498: SANY, TANY,
499: SANY, TFLOAT,
500: 0, RNULL,
501: " cvtfd AR,-(sp)\n",
502:
503: UNARY MINUS, INTAREG|FORCC,
504: SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE,
505: SANY, TANY,
506: NAREG|NASL, RESC1|RESCC,
507: " mnegZL AL,A1\n",
508:
509: COMPL, INTAREG|FORCC,
510: SAREG|AWD, TINT|TUNSIGNED,
511: SANY, TANY,
512: NAREG|NASL, RESC1|RESCC,
513: " mcomZL AL,A1\n",
514:
515: COMPL, INTAREG|FORCC,
516: SAREG|AWD, ANYSIGNED|ANYUSIGNED,
517: SANY, TANY,
518: NAREG|NASL, RESC1|RESCC,
519: " cvtZLl AL,A1\n mcoml A1,A1\n",
520:
521: AND, FORCC,
522: SAREG|AWD, TWORD,
523: SCON, TWORD,
524: 0, RESCC,
525: " bitl ZZ,AL\n",
526:
527: AND, FORCC,
528: SAREG|AWD, TSHORT|TUSHORT,
529: SSCON, TWORD,
530: 0, RESCC,
531: " bitw ZZ,AL\n",
532:
533: AND, FORCC,
534: SAREG|AWD, TCHAR|TUCHAR,
535: SCCON, TWORD,
536: 0, RESCC,
537: " bitb ZZ,AL\n",
538:
539: ASG AND, INAREG|FOREFF|FORCC,
540: SAREG, TWORD,
541: SCON, TWORD,
542: 0, RLEFT|RESCC,
543: " bicl2 AR,AL\n",
544:
545: ASG OPMUL, INAREG|FOREFF|FORCC,
546: SAREG|AWD, 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: STAREG, TINT|TUNSIGNED|TLONG|TULONG,
553: SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
554: 0, RLEFT|RESCC,
555: " OL2 AR,AL\n",
556:
557: OPMUL, INAREG|INTAREG|FORCC,
558: SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
559: SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
560: NAREG|NASL|NASR, RESC1|RESCC,
561: " OL3 AR,AL,A1\n",
562:
563: ASG MOD, INAREG|INTAREG|FOREFF|FORCC,
564: SAREG, TINT|TUNSIGNED|TLONG|TULONG,
565: SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
566: NAREG, RLEFT|RESCC,
567: " divl3 AR,AL,A1\n mull2 AR,A1\n subl2 A1,AL\n",
568:
569: MOD, INAREG|INTAREG,
570: SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
571: SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
572: NAREG, RESC1,
573: " divl3 AR,AL,A1\n mull2 AR,A1\n subl3 A1,AL,A1\n",
574:
575: ASG PLUS, INAREG|FOREFF|FORCC,
576: SAREG, TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
577: SONE, TINT|TLONG,
578: 0, RLEFT|RESCC,
579: " incZL AL\n",
580:
581: ASG PLUS, INAREG|FOREFF|FORCC,
582: AWD, ANYSIGNED|ANYUSIGNED,
583: SONE, TINT|TLONG,
584: 0, RLEFT|RESCC,
585: " incZL AL\n",
586:
587: ASG PLUS, INAREG|FOREFF|FORCC,
588: SAREG, TSHORT|TCHAR,
589: SONE, TINT|TLONG,
590: 0, RLEFT|RESCC,
591: " incZL AL\n cvtZLl AL,AL\n",
592:
593: ASG PLUS, INAREG|FOREFF|FORCC,
594: SAREG, TUSHORT|TUCHAR,
595: SONE, TINT|TLONG,
596: 0, RLEFT|RESCC,
597: " incZL AL\n movzZLl AL,AL\n",
598:
599: ASG MINUS, INAREG|FOREFF|FORCC,
600: SAREG, TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
601: SONE, TINT|TLONG,
602: 0, RLEFT|RESCC,
603: " decZL AL\n",
604:
605: ASG MINUS, INAREG|FOREFF|FORCC,
606: AWD, ANYSIGNED|ANYUSIGNED,
607: SONE, TINT|TLONG,
608: 0, RLEFT|RESCC,
609: " decZL AL\n",
610:
611: ASG MINUS, INAREG|FOREFF|FORCC,
612: SAREG, TSHORT|TCHAR,
613: SONE, TINT|TLONG,
614: 0, RLEFT|RESCC,
615: " decZL AL\n cvtZLl AL,AL\n",
616:
617: ASG MINUS, INAREG|FOREFF|FORCC,
618: SAREG, TUSHORT|TUCHAR,
619: SONE, TINT|TLONG,
620: 0, RLEFT|RESCC,
621: " decZL AL\n movzZLl AL,AL\n",
622:
623: PLUS, INAREG|INTAREG|FORCC,
624: STAREG, TWORD,
625: SONE, TWORD,
626: 0, RLEFT|RESCC,
627: " incZL AL\n",
628:
629: PLUS, INAREG|INTAREG|FORCC,
630: STAREG, TSHORT|TCHAR,
631: SONE, TWORD,
632: 0, RLEFT|RESCC,
633: " incZL AL\n cvtZLl AL,AL\n",
634:
635: PLUS, INAREG|INTAREG|FORCC,
636: STAREG, TUSHORT|TUCHAR,
637: SONE, TWORD,
638: 0, RLEFT|RESCC,
639: " incZL AL\n movzZLl AL,AL\n",
640:
641: MINUS, INAREG|INTAREG|FORCC,
642: STAREG, TWORD,
643: SONE, TWORD,
644: 0, RLEFT|RESCC,
645: " decZL AL\n",
646:
647: MINUS, INAREG|INTAREG|FORCC,
648: STAREG, TSHORT|TCHAR,
649: SONE, TWORD,
650: 0, RLEFT|RESCC,
651: " decZL AL\n cvtZLl AL,AL\n",
652:
653: MINUS, INAREG|INTAREG|FORCC,
654: STAREG, TUSHORT|TUCHAR,
655: SONE, TWORD,
656: 0, RLEFT|RESCC,
657: " decZL AL\n movzZLl AL,AL\n",
658:
659: ASG OPSIMP, INAREG|FOREFF|FORCC,
660: SAREG|AWD, TWORD,
661: SAREG|AWD, TWORD,
662: 0, RLEFT|RESCC,
663: " OL2 AR,AL\n",
664:
665: ASG OPSIMP, INAREG|FOREFF|FORCC,
666: SAREG, TWORD,
667: SAREG, TSHORT|TUSHORT|TCHAR|TUCHAR,
668: 0, RLEFT|RESCC,
669: " OL2 AR,AL\n",
670:
671: ASG OPSIMP, INAREG|FOREFF|FORCC,
672: AWD, TSHORT|TUSHORT,
673: SAREG|AWD, TSHORT|TUSHORT,
674: 0, RLEFT|RESCC,
675: " OW2 AR,AL\n",
676:
677: ASG OPSIMP, INAREG|FOREFF|FORCC,
678: AWD, TSHORT|TUSHORT,
679: SSCON, TWORD,
680: 0, RLEFT|RESCC,
681: " OW2 AR,AL\n",
682:
683: ASG OPSIMP, INAREG|FOREFF|FORCC,
684: AWD, TCHAR|TUCHAR,
685: SAREG|AWD, TCHAR|TUCHAR,
686: 0, RLEFT|RESCC,
687: " OB2 AR,AL\n",
688:
689: ASG OPSIMP, INAREG|FOREFF|FORCC,
690: AWD, TCHAR|TUCHAR,
691: SCCON, TWORD,
692: 0, RLEFT|RESCC,
693: " OB2 AR,AL\n",
694:
695: ASG OPSIMP, INAREG|FOREFF|FORCC,
696: SAREG, TSHORT,
697: SAREG|AWD, ANYFIXED,
698: 0, RLEFT|RESCC,
699: " OW2 AR,AL\n cvtZLl AL,AL\n",
700:
701: ASG OPSIMP, INAREG|FOREFF|FORCC,
702: SAREG, TUSHORT,
703: SAREG|AWD, ANYFIXED,
704: 0, RLEFT|RESCC,
705: " OW2 AR,AL\n movzZLl AL,AL\n",
706:
707: ASG OPSIMP, INAREG|FOREFF|FORCC,
708: SAREG, TCHAR,
709: SAREG|AWD, ANYFIXED,
710: 0, RLEFT|RESCC,
711: " OB2 AR,AL\n cvtZLl AL,AL\n",
712:
713: ASG OPSIMP, INAREG|FOREFF|FORCC,
714: SAREG, TUCHAR,
715: SAREG|AWD, ANYFIXED,
716: 0, RLEFT|RESCC,
717: " OB2 AR,AL\n movzZLl AL,AL\n",
718:
719: OPSIMP, INAREG|INTAREG|FORCC,
720: STAREG, ANYFIXED,
721: SAREG|AWD, TWORD,
722: 0, RLEFT|RESCC,
723: " OL2 AR,AL\n",
724:
725: OPSIMP, INAREG|INTAREG|FORCC,
726: SAREG|AWD, TWORD,
727: SAREG|AWD, TWORD,
728: NAREG|NASL|NASR, RESC1|RESCC,
729: " OL3 AR,AL,A1\n",
730:
731: ASG OPFLOAT, INAREG|FOREFF|FORCC,
732: SAREG|AWD, TDOUBLE,
733: SAREG|AWD, TDOUBLE,
734: 0, RLEFT|RESCC,
735: " OD2 AR,AL\n",
736:
737: ASG OPFLOAT, INAREG|FOREFF|FORCC,
738: SAREG|AWD, TFLOAT,
739: SAREG|AWD, TFLOAT,
740: 0, RLEFT|RESCC,
741: " OF2 AR,AL\n",
742:
743: ASG OPFLOAT, INAREG|FOREFF|FORCC,
744: SAREG|AWD, TDOUBLE,
745: SAREG|AWD, TFLOAT,
746: NAREG|NASR, RLEFT|RESCC,
747: " cvtfd AR,A1\n OD2 A1,AL\n",
748:
749: ASG OPFLOAT, INAREG|INTAREG|FOREFF|FORCC,
750: SAREG|AWD, TFLOAT,
751: SAREG|AWD, TDOUBLE,
752: NAREG, RLEFT|RESC1|RESCC,
753: " cvtfd AL,A1\n OD2 AR,A1\n cvtdf A1,AL\n",
754:
755: OPFLOAT, INAREG|INTAREG|FORCC,
756: STAREG, TDOUBLE,
757: SAREG|AWD, TDOUBLE,
758: 0, RLEFT|RESCC,
759: " OD2 AR,AL\n",
760:
761: OPFLOAT, INAREG|INTAREG|FORCC,
762: SAREG|AWD, TDOUBLE,
763: SAREG|AWD, TDOUBLE,
764: NAREG|NASL|NASR, RESC1|RESCC,
765: " OD3 AR,AL,A1\n",
766:
767: OPFLOAT, INAREG|INTAREG|FORCC,
768: SAREG|AWD, TFLOAT,
769: SAREG|AWD, TDOUBLE,
770: NAREG|NASL, RESC1|RESCC,
771: " cvtfd AL,A1\n OD2 AR,A1\n",
772:
773: OPFLOAT, INAREG|INTAREG|FORCC,
774: SAREG|AWD, TDOUBLE,
775: SAREG|AWD, TFLOAT,
776: NAREG|NASR, RESC1|RESCC,
777: " cvtfd AR,A1\n OD3 A1,AL,A1\n",
778:
779: #ifdef FLOAT
780: OPFLOAT, INAREG|INTAREG|FORCC,
781: STAREG, TFLOAT,
782: SAREG|AWD, TFLOAT,
783: 0, RLEFT|RESCC,
784: " OF2 TAR,AL\n",
785:
786: OPFLOAT, INAREG|INTAREG|FORCC,
787: SAREG|AWD, TFLOAT,
788: SAREG|AWD, TFLOAT,
789: NAREG|NASL|NASR, RESC1|RESCC,
790: " OF3 AR,AL,TA1\n",
791:
792: #else
793: OPFLOAT, INAREG|INTAREG|FORCC,
794: SAREG|AWD, TFLOAT,
795: SAREG|AWD, TFLOAT,
796: NAREG|NASL|NASR, RESC1|RESCC,
797: " OF3 AR,AL,A1\n cvtfd A1,A1\n",
798: #endif
799:
800: /* Default actions for hard trees ... */
801:
802: # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
803:
804: UNARY MUL, DF( UNARY MUL ),
805:
806: INCR, DF(INCR),
807:
808: DECR, DF(INCR),
809:
810: ASSIGN, DF(ASSIGN),
811:
812: STASG, DF(STASG),
813:
814: FLD, DF(FLD),
815:
816: OPLEAF, DF(NAME),
817:
818: OPLOG, FORCC,
819: SANY, TANY,
820: SANY, TANY,
821: REWRITE, BITYPE,
822: "",
823:
824: OPLOG, DF(NOT),
825:
826: COMOP, DF(COMOP),
827:
828: INIT, DF(INIT),
829:
830: OPUNARY, DF(UNARY MINUS),
831:
832:
833: ASG OPANY, DF(ASG PLUS),
834:
835: OPANY, DF(BITYPE),
836:
837: 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.