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