Research V7 development
[unix-history] / usr / src / cmd / pcc / table.c
CommitLineData
3c5d933b
SJ
1# include "mfile2"
2
3# define AWD SNAME|SOREG|SCON|STARNM|STARREG|SAREG
4# define LWD SNAME|SOREG|SCON|SAREG
5
6struct optab table[] = {
7
8ASSIGN, INAREG|FOREFF|FORCC,
9 AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR,
10 SZERO, TANY,
11 0, RLEFT|RRIGHT|RESCC,
12 " clrZB AL\n",
13
14ASSIGN, INAREG|FOREFF|FORCC,
15 AWD, TINT|TUNSIGNED,
16 AWD, TCHAR,
17 NAREG|NASR, RLEFT|RESC1|RESCC,
18 " movb AR,A1\n mov A1,AL\n",
19
20ASSIGN, INAREG|FOREFF|FORCC,
21 AWD, TINT|TUNSIGNED,
22 AWD, TUCHAR,
23 0, RLEFT|RESCC,
24 " movb AR,AL\n bic $!377,AL\n",
25
26ASSIGN, INAREG|FOREFF|FORCC,
27 AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR,
28 AWD, TPOINT|TINT|TUNSIGNED|TCHAR|TUCHAR,
29 0, RLEFT|RRIGHT|RESCC,
30 " movZB AR,AL\n",
31
32ASSIGN, INAREG|FOREFF,
33 LWD, TLONG|TULONG,
34 SZERO, TANY,
35 0, RLEFT|RRIGHT,
36 " clr AL\n clr UL\n",
37
38ASSIGN, INAREG|FOREFF,
39 LWD, TLONG|TULONG,
40 LWD, TLONG|TULONG,
41 0, RLEFT|RRIGHT,
42 " mov AR,AL\n mov UR,UL\n",
43
44ASSIGN, FOREFF|INAREG,
45 STARNM, TLONG|TULONG,
46 LWD, TLONG|TULONG,
47 NAREG|NASL, RRIGHT,
48 " mov ZU,A1\n mov AR,(A1)+\n mov UR,(A1)\n",
49
50ASSIGN, FOREFF,
51 STARNM, TLONG|TULONG,
52 AWD, TUNSIGNED|TPOINT,
53 NAREG|NASL, RRIGHT,
54 " mov ZU,A1\n clr (A1)+\n mov AR,(A1)\n",
55
56ASSIGN, FOREFF,
57 STARNM, TLONG|TULONG,
58 AWD, TINT,
59 NAREG|NASL, RRIGHT,
60 " mov ZU,A1\n mov AR,2(A1)\n sxt (A1)\n",
61
62 /* PANIC! */
63ASSIGN, FOREFF|INAREG,
64 STARNM, TLONG|TULONG,
65 AWD, TUNSIGNED|TPOINT,
66 NAREG|NASL|NASR, RESC1,
67 "\tmov\tAR,-(sp)\n\tmov\tZU,A1\n\tclr\t(A1)+\n\tmov\t(sp)+,(A1)\
68 \nF\tmov\t(A1),U1\nF\tclr\tA1\n",
69
70ASSIGN, FOREFF|INAREG,
71 STARNM, TLONG|TULONG,
72 AWD, TINT,
73 NAREG|NASL|NASR, RESC1,
74 "\tmov\tAR,-(sp)\n\tmov\tZU,A1\n\tmov\t(sp)+,2(A1)\nF\tmov\t2(A1),U1\
75 \n\tsxt\t(A1)\nF\tsxt\tA1\n",
76
77ASSIGN, FOREFF|INAREG,
78 STARNM, TLONG|TULONG,
79 SAREG, TLONG|TULONG,
80 0, RRIGHT,
81 " mov AR,AL\n mov ZU,AR\n mov UR,2(AR)\nF mov (AR),AR\n",
82
83ASSIGN, INAREG|FOREFF,
84 LWD, TLONG|TULONG,
85 AWD, TCHAR,
86 NAREG, RESC1,
87 " movb AR,U1\n mov U1,UL\n sxt AL\nF sxt A1\n",
88
89ASSIGN, INAREG|FOREFF,
90 LWD, TLONG|TULONG,
91 AWD, TUCHAR,
92 0, RLEFT,
93 " movb AR,UL\n bic $!377,UL\n clr AL\n",
94
95ASSIGN, INAREG|FOREFF,
96 LWD, TLONG|TULONG,
97 AWD, TINT,
98 0, RLEFT,
99 " mov AR,UL\n sxt AL\n",
100
101ASSIGN, INAREG|FOREFF,
102 LWD, TLONG|TULONG,
103 AWD, TUNSIGNED|TPOINT,
104 0, RLEFT,
105 " mov AR,UL\n clr AL\n",
106
107ASSIGN, INBREG|INTBREG|FOREFF,
108 AWD, TDOUBLE,
109 SBREG, TDOUBLE,
110 0, RRIGHT,
111 " movf AR,AL\n",
112
113ASSIGN, INBREG|INTBREG|FOREFF,
114 AWD, TFLOAT,
115 SBREG, TDOUBLE,
116 0, RRIGHT,
117 " movfo AR,AL\n",
118
119ASSIGN, INAREG|FOREFF,
120 SFLD, TANY,
121 SZERO, TANY,
122 0, RRIGHT,
123 " bic $M.,AL\n",
124
125ASSIGN, INTAREG|INAREG|FOREFF,
126 SFLD, TANY,
127 STAREG, TANY,
128 0, RRIGHT,
129 "F\tmov\tAR,-(sp)\n\tash\t$H.,AR\n\tbic\t$!M.,AR\n\tbic\t$M.,AL\n\tbis\tAR,AL\nF\tmov\t(sp)+,AR\n",
130
131ASSIGN, INAREG|FOREFF,
132 SFLD, TANY,
133 AWD, TANY,
134 NAREG, RRIGHT,
135 "\tmov\tAR,A1\n\tash\t$H.,A1\n\tbic\t$!M.,A1\n\tbic\t$M.,AL\n\tbis\tA1,AL\n",
136
137ASSIGN, FOREFF,
138 AWD, TFLOAT,
139 AWD, TFLOAT,
140 NBREG, RESC1,
141 " movof AR,A1\n movfo A1,AL\n",
142
143/* put this here so UNARY MUL nodes match OPLTYPE when appropriate */
144UNARY MUL, INTAREG|INAREG,
145 SANY, TANY,
146 STARNM, TLONG|TULONG,
147 NAREG|NASR, RESC1,
148 " mov AL,U1\n mov (U1)+,A1\n mov (U1),U1\n",
149
150OPLTYPE, FOREFF,
151 SANY, TANY,
152 LWD, TANY,
153 0, RRIGHT,
154 "", /* this entry throws away computations which don't do anything */
155OPLTYPE, INTAREG|INAREG,
156 SANY, TANY,
157 SZERO, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
158 NAREG|NASR, RESC1,
159 " clr A1\n",
160
161OPLTYPE, INTAREG|INAREG,
162 SANY, TANY,
163 SZERO, TLONG|TULONG,
164 NAREG|NASR, RESC1,
165 " clr A1\n clr U1\n",
166
167OPLTYPE, INTAREG|INAREG,
168 SANY, TANY,
169 SANY, TINT|TUNSIGNED|TPOINT|TCHAR,
170 NAREG|NASR, RESC1,
171 " movZB AR,A1\n",
172
173OPLTYPE, INTEMP,
174 SANY, TANY,
175 SANY, TINT|TUNSIGNED|TPOINT,
176 NTEMP, RESC1,
177 " mov AR,A1\n",
178
179OPLTYPE, FORCC,
180 SANY, TANY,
181 SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
182 0, RESCC,
183 " tstZB AR\n",
184
185
186OPLTYPE, FORARG,
187 SANY, TANY,
188 SANY, TINT|TUNSIGNED|TPOINT,
189 0, RNULL,
190 " mov AR,Z-\n",
191
192OPLTYPE, INTAREG|INAREG,
193 SANY, TANY,
194 AWD, TUCHAR,
195 NAREG|NASR, RESC1,
196 " movb AR,A1\n bic $!377,A1\n",
197
198OPLTYPE, INTAREG|INAREG,
199 SANY, TANY,
200 LWD, TLONG|TULONG,
201 NAREG, RESC1,
202 " mov UR,U1\n mov AR,A1\n",
203
204OPLTYPE, INTAREG|INAREG, /* for use when there are no free regs */
205 SANY, TANY,
206 LWD, TLONG|TULONG,
207 NAREG|NASR, RESC1,
208 " mov AR,-(sp)\n mov UR,U1\n mov (sp)+,A1\n",
209
210OPLTYPE, INTEMP,
211 SANY, TANY,
212 LWD, TLONG|TULONG,
213 2*NTEMP, RESC1,
214 " mov AR,A1\n mov UR,U1\n",
215
216OPLTYPE, FORCC,
217 SANY, TANY,
218 LWD, TLONG|TULONG,
219 0, RESCC,
220 "ZA",
221
222OPLTYPE, FORARG,
223 SANY, TANY,
224 LWD, TLONG|TULONG,
225 0, RNULL,
226 " mov UR,Z-\n mov AR,Z-\n",
227
228UNARY MUL, FORARG,
229 STARNM, TANY,
230 SANY, TLONG|TULONG,
231 NAREG|NASR, RNULL,
232 " mov AL,A1\n mov 2(A1),Z-\n mov (A1),Z-\n",
233
234OPLTYPE, FORARG,
235 SANY, TANY,
236 SBREG, TDOUBLE,
237 0, RNULL,
238 " movf AR,Z4\n",
239
240OPLTYPE, INTBREG|INBREG,
241 SANY, TANY,
242 AWD, TDOUBLE,
243 NBREG, RESC1,
244 " movf AR,A1\n",
245
246OPLTYPE, INTEMP,
247 SANY, TANY,
248 SBREG, TDOUBLE,
249 4*NTEMP, RESC1,
250 " movf AR,A1\n",
251
252OPLTYPE, FORCC,
253 SANY, TANY,
254 AWD, TDOUBLE,
255 0, RESCC,
256 " tstf AR\n cfcc\n",
257
258OPLTYPE, INTBREG|INBREG,
259 SANY, TANY,
260 AWD, TFLOAT,
261 NBREG, RESC1,
262 " movof AR,A1\n",
263
264OPLTYPE, FORCC,
265 SANY, TANY,
266 AWD, TFLOAT,
267 NBREG, RESCC,
268 " movof AR,A1\n cfcc\n",
269
270
271OPLOG, FORCC,
272 AWD, TPOINT|TINT|TUNSIGNED,
273 AWD, TPOINT|TINT|TUNSIGNED,
274 0, RESCC,
275 " cmp AL,AR\nZI",
276
277OPLOG, FORCC,
278 AWD, TCHAR|TUCHAR,
279 AWD, TCHAR|TUCHAR,
280 0, RESCC,
281 " cmpb AL,AR\nZI",
282
283OPLOG, FORCC,
284 AWD, TCHAR|TUCHAR,
285 SCCON, TINT, /* look for constants between -128 and 127 */
286 0, RESCC,
287 " cmpb AL,AR\nZI",
288
289OPLOG, FORCC,
290 LWD, TLONG|TULONG,
291 LWD, TLONG|TULONG,
292 0, RESCC,
293 "ZCZI",
294
295OPLOG, FORCC,
296 SBREG, TDOUBLE,
297 AWD, TFLOAT,
298 NBREG, RESCC,
299 " movof AR,A1\n cmpf A1,AL\n cfcc\nZF",
300
301OPLOG, FORCC,
302 SBREG, TDOUBLE,
303 SBREG|AWD, TDOUBLE,
304 0, RESCC,
305 " cmpf AR,AL\n cfcc\nZF",
306
307CCODES, INTAREG|INAREG,
308 SANY, TANY,
309 SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
310 NAREG, RESC1,
311 " mov $1,A1\nZN",
312
313CCODES, INTAREG|INAREG,
314 SANY, TANY,
315 SANY, TLONG|TULONG,
316 NAREG, RESC1,
317 " clr A1\n mov $1,U1\nZN",
318
319UNARY MINUS, INTAREG|INAREG,
320 STAREG, TINT|TUNSIGNED,
321 SANY, TANY,
322 0, RLEFT,
323 " neg AL\n",
324
325UNARY MINUS, INTAREG|INAREG,
326 STAREG, TLONG|TULONG,
327 SANY, TANY,
328 0, RLEFT,
329 " neg AL\n neg UL\n sbc AL\n",
330
331UNARY MINUS, INTBREG|INBREG,
332 STBREG, TDOUBLE,
333 SANY, TANY,
334 0, RLEFT,
335 " negf AL\n",
336
337COMPL, INTAREG|INAREG,
338 STAREG, TINT|TUNSIGNED,
339 SANY, TANY,
340 0, RLEFT,
341 " com AL\n",
342
343INCR, INTAREG|INAREG|FOREFF,
344 AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
345 SONE, TANY,
346 NAREG, RESC1,
347 "F movZB AL,A1\n incZB AL\n",
348
349DECR, INTAREG|INAREG|FOREFF,
350 AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
351 SONE, TANY,
352 NAREG, RESC1,
353 "F movZB AL,A1\n decZB AL\n",
354
355INCR, INTAREG|INAREG|FOREFF,
356 AWD, TINT|TUNSIGNED|TPOINT,
357 SCON, TANY,
358 NAREG, RESC1,
359 "F mov AL,A1\n add AR,AL\n",
360
361DECR, INTAREG|INAREG|FOREFF,
362 AWD, TINT|TUNSIGNED|TPOINT,
363 SCON, TANY,
364 NAREG, RESC1,
365 "F mov AL,A1\n sub AR,AL\n",
366
367INCR, INTAREG|INAREG|FOREFF,
368 LWD, TLONG|TULONG,
369 SCON, TANY,
370 NAREG, RESC1,
371 "F mov AL,A1\nF mov UL,U1\n add AR,AL\n add UR,UL\n adc AL\n",
372
373DECR, INTAREG|INAREG|FOREFF,
374 LWD, TLONG|TULONG,
375 SCON, TANY,
376 NAREG, RESC1,
377 "F mov AL,A1\nF mov UL,U1\n sub AR,AL\n sub UR,UL\n sbc AL\n",
378
379COMPL, INTAREG|INAREG,
380 STAREG, TLONG|TULONG,
381 SANY, TANY,
382 0, RLEFT,
383 " com AL\n com UL\n",
384
385AND, FORCC,
386 AWD, TINT|TUNSIGNED|TPOINT,
387 SCON, TANY,
388 0, RESCC,
389 " bit AL,$Z~\n",
390
391ASG MUL, INAREG,
392 STAREG, TINT|TUNSIGNED|TPOINT,
393 AWD, TINT|TUNSIGNED|TPOINT,
394 NAREG, RLEFT,
395 " mul AR,AL\n",
396
397ASG DIV, INAREG,
398 STAREG, TINT|TUNSIGNED|TPOINT,
399 AWD, TINT|TUNSIGNED|TPOINT,
400 NAREG, RESC1,
401 "ZV div AR,r0\n", /* since lhs must be in r1 */
402
403ASG MOD, INAREG,
404 STAREG, TINT|TUNSIGNED|TPOINT,
405 AWD, TINT|TUNSIGNED|TPOINT,
406 NAREG, RLEFT,
407 "ZV div AR,r0\n", /* since lhs must be in r1 */
408
409ASG PLUS, INAREG|FORCC,
410 AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
411 SONE, TINT,
412 0, RLEFT|RESCC,
413 " incZB AL\n",
414
415ASG PLUS, INAREG|FORCC,
416 AWD, TINT|TUNSIGNED|TPOINT,
417 AWD, TINT|TUNSIGNED|TPOINT,
418 0, RLEFT|RESCC,
419 " add AR,AL\n",
420
421ASG MINUS, INAREG|FORCC,
422 AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
423 SONE, TINT,
424 0, RLEFT|RESCC,
425 " decZB AL\n",
426
427ASG MINUS, INAREG|FORCC,
428 AWD, TINT|TUNSIGNED|TPOINT,
429 AWD, TINT|TUNSIGNED|TPOINT,
430 0, RLEFT|RESCC,
431 " sub AR,AL\n",
432
433ASG OR, INAREG|FORCC,
434 AWD, TINT|TUNSIGNED|TPOINT,
435 AWD, TINT|TUNSIGNED|TPOINT,
436 0, RLEFT|RESCC,
437 " bis AR,AL\n",
438
439/* AND transformed to "pdp11 bic" in first pass. */
440ASG AND, INAREG|FORCC,
441 AWD, TINT|TUNSIGNED|TPOINT,
442 AWD, TINT|TUNSIGNED|TPOINT,
443 0, RLEFT|RESCC,
444 " bic AR,AL\n",
445
446ASG ER, INAREG|FORCC,
447 AWD, TINT|TUNSIGNED|TPOINT,
448 SAREG, TINT|TUNSIGNED|TPOINT,
449 0, RLEFT|RESCC,
450 " xor AR,AL\n",
451
452ASG OPSHFT, INAREG,
453 SAREG, TINT|TUNSIGNED|TPOINT,
454 SONE, TINT,
455 0, RLEFT,
456 " OI AL\nZH",
457
458ASG LS, INAREG,
459 SAREG, TINT|TUNSIGNED|TPOINT,
460 AWD, TINT|TUNSIGNED|TPOINT,
461 0, RLEFT,
462 " ash AR,AL\n",
463
464ASG RS, INAREG,
465 SAREG, TINT|TUNSIGNED|TPOINT,
466 SCON, TANY,
467 0, RLEFT,
468 " ash $ZM,AL\nZH",
469
470ASG RS, INAREG,
471 SAREG, TINT|TUNSIGNED|TPOINT,
472 STAREG, TINT|TUNSIGNED|TPOINT,
473 0, RLEFT,
474 " neg AR\n ash AR,AL\nZH",
475
476ASG RS, INAREG,
477 SAREG, TINT|TUNSIGNED|TPOINT,
478 AWD, TINT|TUNSIGNED|TPOINT,
479 NAREG|NASR, RLEFT,
480 " mov AR,A1\n neg A1\n ash A1,AL\nZH",
481
482ASG RS, INAREG,
483 SAREG, TINT,
484 AWD, TINT,
485 0, RLEFT,
486 " mov AR,-(sp)\n neg (sp)\n ash (sp)+,AL\nZH",
487
488ASG RS, INAREG,
489 SAREG, TINT|TUNSIGNED|TPOINT,
490 AWD, TINT|TUNSIGNED|TPOINT,
491 NTEMP, RLEFT,
492 " mov AR,A1\n neg A1\n ash A1,AL\nZH",
493
494ASG OR, INAREG|FORCC,
495 AWD, TCHAR|TUCHAR,
496 AWD, TCHAR|TUCHAR,
497 0, RLEFT|RESCC,
498 " bisb AR,AL\n",
499
500/* AND transformed to "pdp11 bic" in first pass. */
501ASG AND, INAREG|FORCC,
502 AWD, TCHAR|TUCHAR,
503 AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
504 0, RLEFT|RESCC,
505 " bicb AR,AL\n",
506
507ASG PLUS, INAREG,
508 LWD, TLONG|TULONG,
509 SICON, TINT|TLONG|TULONG,
510 0, RLEFT,
511 " add UR,UL\n adc AL\n",
512
513ASG PLUS, INAREG,
514 STARNM, TLONG|TULONG,
515 LWD, TLONG|TULONG,
516 NAREG, RLEFT,
517 " mov ZU,A1\n add AR,(A1)+\n add UR,(A1)\n adc -(A1)\n",
518
519ASG PLUS, INAREG,
520 LWD, TLONG|TULONG,
521 LWD, TLONG|TULONG,
522 0, RLEFT,
523 " add AR,AL\n add UR,UL\n adc AL\n",
524
525ASG PLUS, INAREG,
526 AWD, TPOINT,
527 LWD, TLONG|TULONG,
528 0, RLEFT,
529 " add UR,AL\n",
530
531ASG MINUS, INAREG,
532 LWD, TLONG|TULONG,
533 SICON, TINT|TLONG|TULONG,
534 0, RLEFT,
535 " sub UR,UL\n sbc AL\n",
536
537ASG MINUS, INAREG,
538 STARNM, TLONG|TULONG,
539 LWD, TLONG|TULONG,
540 NAREG, RLEFT,
541 " mov ZU,A1\n sub AR,(A1)+\n sub UR,(A1)\n sbc -(A1)\n",
542
543ASG MINUS, INAREG,
544 LWD, TLONG|TULONG,
545 LWD, TLONG|TULONG,
546 0, RLEFT,
547 " sub AR,AL\n sub UR,UL\n sbc AL\n",
548
549ASG MINUS, INAREG,
550 AWD, TPOINT,
551 LWD, TLONG|TULONG,
552 0, RLEFT,
553 " sub UR,AL\n",
554
555ASG OR, INAREG,
556 LWD, TLONG|TULONG,
557 LWD, TLONG|TULONG,
558 0, RLEFT,
559 " bis AR,AL\n bis UR,UL\n",
560
561/* AND transformed to "pdp11 bic" in first pass. */
562ASG AND, INAREG,
563 LWD, TLONG|TULONG,
564 LWD, TLONG|TULONG,
565 0, RLEFT,
566 " bic AR,AL\n bic UR,UL\n",
567
568ASG ER, INAREG,
569 LWD, TLONG|TULONG,
570 SAREG, TLONG|TULONG,
571 0, RLEFT,
572 " xor AR,AL\n xor UR,UL\n",
573
574 /* table entries for ^ which correspond to the usual way of doing busingess
575 (rhs in a temp register */
576
577ASG ER, INAREG|INTAREG,
578 STAREG, TLONG|TULONG,
579 LWD, TLONG|TULONG,
580 0, RLEFT,
581 "\tmov\tAL,-(sp)\n\tmov\tUR,AL\n\txor\tAL,UL\n\tmov\tAR,AL\n\txor\tAL,(sp)\n\tmov\t(sp)+,AL\n",
582
583ASG ER, INAREG|INTAREG,
584 STAREG, TINT|TUNSIGNED|TPOINT,
585 AWD, TINT|TUNSIGNED|TPOINT,
586 0, RLEFT,
587 "\tmov\tAL,-(sp)\n\tmov\tAR,AL\n\txor\tAL,(sp)\n\tmov\t(sp)+,AL\n",
588
589ASG LS, INAREG,
590 SAREG, TLONG|TULONG,
591 AWD, TINT|TUNSIGNED|TPOINT,
592 0, RLEFT,
593 " ashc AR,AL\n",
594
595ASG RS, INAREG,
596 SAREG, TLONG|TULONG,
597 SCON, TANY,
598 0, RLEFT,
599 " ashc $ZM,AL\nZH",
600
601ASG RS, INAREG,
602 SAREG, TLONG|TULONG,
603 STAREG, TINT|TUNSIGNED|TPOINT,
604 0, RLEFT,
605 " neg AR\n ashc AR,AL\nZH",
606
607ASG RS, INAREG,
608 SAREG, TLONG|TULONG,
609 AWD, TINT|TUNSIGNED|TPOINT,
610 NAREG|NASR, RLEFT,
611 " mov AR,A1\n neg A1\n ashc A1,AL\nZH",
612
613ASG RS, INAREG,
614 SAREG, TLONG|TULONG,
615 AWD, TINT|TUNSIGNED|TPOINT,
616 NTEMP, RLEFT,
617 " mov AR,A1\n neg A1\n ashc A1,AL\nZH",
618
619ASG OPFLOAT, INBREG|INTBREG,
620 STBREG, TDOUBLE,
621 SBREG|AWD, TDOUBLE,
622 0, RLEFT|RESCC,
623 " OF AR,AL\n",
624
625ASG OPFLOAT, INBREG|INTBREG,
626 STBREG, TDOUBLE,
627 AWD, TFLOAT,
628 NBREG|NBSR, RLEFT|RESCC,
629 " movof AR,A1\n OF A1,AL\n",
630
631ASG OPFLOAT, FORCC,
632 STBREG, TDOUBLE,
633 SBREG|AWD, TDOUBLE,
634 0, RESCC,
635 " OF AR,AL\n cfcc\n",
636
637ASG OPFLOAT, FORCC,
638 STBREG, TDOUBLE,
639 AWD, TFLOAT,
640 NBREG|NBSR, RESCC,
641 " movof AR,A1\n OF A1,AL\n cfcc\n",
642
643UNARY CALL, INTAREG,
644 SAREG|SNAME|SOREG|SCON, TANY,
645 SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR|TLONG|TULONG,
646 NAREG|NASL, RESC1, /* should be register 0 */
647 " jsr pc,*AL\n",
648
649UNARY CALL, INTBREG,
650 SAREG|SNAME|SOREG|SCON, TANY,
651 SANY, TDOUBLE|TFLOAT,
652 NBREG, RESC1, /* should be register FR0 */
653 " jsr pc,*AL\n",
654
655SCONV, INTAREG,
656 STAREG, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
657 SANY, TUCHAR,
658 0, RLEFT,
659 " bic $!377,AL\n",
660
661SCONV, INTAREG,
662 AWD, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
663 SANY, TCHAR|TINT,
664 NAREG|NASL, RESC1,
665 " movZB AL,A1\n",
666
667SCONV, INAREG|INTAREG,
668 LWD, TLONG|TULONG,
669 SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
670 0, RLEFT,
671 "ZT",
672
673SCONV, INTAREG,
674 AWD, TUCHAR,
675 SANY, TLONG|TULONG,
676 NAREG|NASL, RESC1,
677 " movb AL,U1\n bic $!377,U1\n clr A1\n",
678
679SCONV, INTAREG,
680 AWD, TINT,
681 SANY, TLONG|TULONG,
682 NAREG|NASL, RESC1,
683 " mov AL,U1\n sxt A1\n",
684
685SCONV, INTAREG,
686 AWD, TUNSIGNED|TPOINT,
687 SANY, TLONG|TULONG,
688 NAREG|NASL, RESC1,
689 " mov AL,U1\n clr A1\n",
690
691SCONV, INTAREG,
692 SBREG, TDOUBLE,
693 SANY, TINT|TUNSIGNED|TPOINT|TCHAR|TUCHAR,
694 NAREG, RESC1,
695 " movfi AL,A1\n",
696
697SCONV, INTAREG,
698 STBREG, TDOUBLE,
699 SANY, TLONG|TULONG,
700 NAREG, RESC1,
701 " setl\n movfi AL,-(sp)\n seti\n mov (sp)+,A1\n mov (sp)+,U1\n",
702
703SCONV, FORARG,
704 STBREG, TDOUBLE,
705 SANY, TLONG|TULONG,
706 0, RNULL,
707 " setl\n movfi AL,Z4\n seti\n",
708
709SCONV, INTBREG,
710 SAREG, TLONG,
711 SANY, TANY,
712 NBREG, RESC1,
713 "\tmov\tUL,-(sp)\n\tmov\tAL,-(sp)\n\tsetl\n\tmovif\t(sp)+,A1\n\tseti\n",
714
715SCONV, INTBREG,
716 LWD, TLONG,
717 SANY, TANY,
718 NBREG, RESC1,
719 "\tsetl\n\tmovif\tAL,A1\n\tseti\n",
720
721SCONV, INTBREG,
722 AWD, TINT,
723 SANY, TANY,
724 NBREG, RESC1,
725 " movif AL,A1\n",
726
727SCONV, INTBREG,
728 SAREG, TULONG,
729 SANY, TANY,
730 NBREG, RESC1,
731 "\tmov\tUL,-(sp)\n\tmov\tAL,-(sp)\n\tsetl\n\tmovif\t(sp)+,A1\n\tseti\n\tcfcc\n\tbpl\t1f\n\taddf\t$050200,A1\n1:\n",
732
733SCONV, INTBREG,
734 LWD, TULONG,
735 SANY, TANY,
736 NBREG, RESC1,
737 "\tsetl\n\tmovif\tAL,A1\n\tseti\n\tcfcc\n\tbpl\t1f\n\taddf\t$050200,A1\n1:\n",
738
739SCONV, INTBREG,
740 STAREG, TUNSIGNED|TPOINT,
741 SANY, TANY,
742 NBREG, RESC1,
743 "\tmovif\tAL,A1\n\tcfcc\n\tbpl\t1f\n\taddf\t$044200,A1\n1:\n",
744
745PCONV, INTAREG,
746 AWD, TCHAR|TUCHAR,
747 SANY, TPOINT,
748 NAREG|NASL, RESC1,
749 " movb AL,A1\n",
750
751PCONV, INAREG|INTAREG,
752 LWD, TLONG|TULONG,
753 SANY, TPOINT,
754 0, RLEFT,
755 "ZT",
756
757STARG, FORARG,
758 SNAME|SOREG, TANY,
759 SANY, TANY,
760 0, RNULL,
761 "ZS",
762
763STASG, FOREFF,
764 SNAME|SOREG, TANY,
765 SCON|SAREG, TANY,
766 0, RNOP,
767 "ZS",
768
769STASG, INTAREG|INAREG,
770 SNAME|SOREG, TANY,
771 STAREG, TANY,
772 0, RRIGHT,
773 "ZS",
774
775STASG, INAREG|INTAREG,
776 SNAME|SOREG, TANY,
777 SCON|SAREG, TANY,
778 NAREG, RESC1,
779 "ZS mov AR,A1\n",
780
781INIT, FOREFF,
782 SCON, TANY,
783 SANY, TINT|TUNSIGNED|TPOINT,
784 0, RNOP,
785 " CL\n",
786
787INIT, FOREFF,
788 SCON, TANY,
789 SANY, TLONG|TULONG,
790 0, RNOP,
791 "ZL",
792
793INIT, FOREFF,
794 SCON, TANY,
795 SANY, TCHAR|TUCHAR,
796 0, RNOP,
797 " .byte CL\n",
798
799 /* for the use of fortran only */
800
801GOTO, FOREFF,
802 SCON, TANY,
803 SANY, TANY,
804 0, RNOP,
805 " jbr CL\n",
806
807GOTO, FOREFF,
808 SNAME, TLONG|TULONG,
809 SANY, TANY,
810 0, RNOP,
811 " jmp *UL\n",
812
813GOTO, FOREFF,
814 SNAME, TINT|TUNSIGNED|TCHAR|TUCHAR|TPOINT,
815 SANY, TANY,
816 0, RNOP,
817 " jmp *AL\n",
818
819 /* Default actions for hard trees ... */
820
821# define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
822
823UNARY MUL, DF( UNARY MUL ),
824
825INCR, DF(INCR),
826
827DECR, DF(INCR),
828
829ASSIGN, DF(ASSIGN),
830
831STASG, DF(STASG),
832
833OPLEAF, DF(NAME),
834
835OPLOG, FORCC,
836 SANY, TANY,
837 SANY, TANY,
838 REWRITE, BITYPE,
839 "",
840
841OPLOG, DF(NOT),
842
843COMOP, DF(COMOP),
844
845INIT, DF(INIT),
846
847OPUNARY, DF(UNARY MINUS),
848
849
850ASG OPANY, DF(ASG PLUS),
851
852OPANY, DF(BITYPE),
853
854FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" };