Bell 32V development
[unix-history] / usr / src / cmd / pcc / table.c
CommitLineData
7e20097b
TL
1# include "mfile2"
2
3# define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG
4# define AWD SNAME|SOREG|SCON|STARNM|STARREG
5/* tbl */
6# define ANYSIGNED TPOINT|TINT|TLONG|TSHORT|TCHAR
7# define ANYUSIGNED TUNSIGNED|TULONG|TUSHORT|TUCHAR
8# define ANYFIXED ANYSIGNED|ANYUSIGNED
9# define TWORD TINT|TUNSIGNED|TPOINT|TLONG|TULONG
10/* tbl */
11
12struct optab table[] = {
13
14PCONV, INAREG|INTAREG,
15 SAREG|AWD, TCHAR|TSHORT,
16 SANY, TPOINT,
17 NAREG|NASL, RESC1,
18 " cvtZLl AL,A1\n",
19
20PCONV, INAREG|INTAREG,
21 SAREG|AWD, TUCHAR|TUSHORT,
22 SANY, TPOINT,
23 NAREG|NASL, RESC1,
24 " movzZLl AL,A1\n",
25
26SCONV, INTAREG|FORCC,
27 SAREG, TDOUBLE,
28 SANY, TDOUBLE,
29 0, RLEFT,
30 "",
31
32SCONV, INTAREG|FORCC,
33 SAREG|AWD, TANY,
34 SANY, TFLOAT|TDOUBLE,
35 NAREG|NASL, RESC1|RESCC,
36 " cvtZLd AL,A1\n",
37
38SCONV, INTAREG|FORCC,
39 SAREG|AWD, TFLOAT|TDOUBLE,
40 SANY, ANYFIXED,
41 NAREG|NASL, RESC1|RESCC,
42 " cvtZLZF AL,A1\n",
43
44SCONV, INTAREG|FORCC,
45 SAREG|SNAME|SCON|STARNM, TANY,
46 SANY, ANYUSIGNED,
47 NAREG|NASL, RESC1|RESCC,
48 " movzZRl AL,A1\n",
49
50SCONV, INTAREG|FORCC,
51 SSOREG, TANY,
52 SANY, ANYUSIGNED,
53 NAREG|NASL, RESC1|RESCC,
54 " movzZRl AL,A1\n",
55
56SCONV, INTAREG|FORCC,
57 SAREG|SNAME|SCON|STARNM, TANY,
58 SANY, TANY,
59 NAREG|NASL, RESC1|RESCC,
60 " cvtZRl AL,A1\n",
61
62SCONV, INTAREG|FORCC,
63 SSOREG, TANY,
64 SANY, TANY,
65 NAREG|NASL, RESC1|RESCC,
66 " cvtZRl AL,A1\n",
67
68
69INIT, FOREFF,
70 SCON, TANY,
71 SANY, TWORD,
72 0, RNOP,
73 " .long CL\n",
74
75INIT, FOREFF,
76 SCON, TANY,
77 SANY, TSHORT|TUSHORT,
78 0, RNOP,
79 " .word CL\n",
80
81INIT, FOREFF,
82 SCON, TANY,
83 SANY, TCHAR|TUCHAR,
84 0, RNOP,
85 " .byte CL\n",
86
87 /* for the use of fortran only */
88
89GOTO, FOREFF,
90 SCON, TANY,
91 SANY, TANY,
92 0, RNOP,
93 " jbr CL\n",
94
95GOTO, FOREFF,
96 SAREG, TANY,
97 SANY, TANY,
98 0, RNOP,
99 " jmp (AL)\n",
100
101STARG, INTEMP,
102 SCON|SAREG, TANY,
103 SANY, TANY,
104 NTEMP+2*NAREG, RESC3,
105 "ZS",
106
107STASG, FORARG,
108 SNAME|SOREG, TANY,
109 SCON|SAREG, TANY,
110 0, RNULL,
111 " subl2 ZT,sp\nZS",
112
113STASG, FOREFF,
114 SNAME|SOREG, TANY,
115 SCON|SAREG, TANY,
116 0, RNOP,
117 "ZS",
118
119STASG, INAREG,
120 SNAME|SOREG, TANY,
121 SCON, TANY,
122 NAREG, RESC1,
123 "ZS movl AR,A1\n",
124
125STASG, INAREG,
126 SNAME|SOREG, TANY,
127 SAREG, TANY,
128 0, RRIGHT,
129 " pushl AR\nZS movl (sp)+,AR\n",
130
131FLD, INAREG|INTAREG,
132 SANY, TANY,
133 SFLD, ANYSIGNED,
134 NAREG|NASR, RESC1,
135 " extv H,S,AR,A1\n",
136
137FLD, INAREG|INTAREG,
138 SANY, TANY,
139 SFLD, ANYUSIGNED,
140 NAREG|NASR, RESC1,
141 " extzv H,S,AR,A1\n",
142
143FLD, FORARG,
144 SANY, TANY,
145 SFLD, ANYSIGNED,
146 0, RNULL,
147 " extv H,S,AR,-(sp)\n",
148
149FLD, FORARG,
150 SANY, TANY,
151 SFLD, ANYUSIGNED,
152 0, RNULL,
153 " extzv H,S,AR,-(sp)\n",
154
155OPLOG, FORCC,
156 SAREG|AWD, TWORD,
157 SAREG|AWD, TWORD,
158 0, RESCC,
159 " cmpl AL,AR\nZP",
160
161OPLOG, FORCC,
162 SAREG|AWD, TSHORT|TUSHORT,
163 SAREG|AWD, TSHORT|TUSHORT,
164 0, RESCC,
165 " cmpw AL,AR\nZP",
166
167OPLOG, FORCC,
168 SAREG|AWD, TCHAR|TUCHAR,
169 SAREG|AWD, TCHAR|TUCHAR,
170 0, RESCC,
171 " cmpb AL,AR\nZP",
172
173OPLOG, FORCC,
174 SAREG|AWD, TSHORT|TUSHORT,
175 SSCON, TANY,
176 0, RESCC,
177 " cmpw AL,AR\nZP",
178
179OPLOG, FORCC,
180 SAREG|AWD, TCHAR|TUCHAR,
181 SCCON, TANY,
182 0, RESCC,
183 " cmpb AL,AR\nZP",
184
185OPLOG, FORCC,
186 SAREG|AWD, TDOUBLE,
187 SAREG|AWD, TDOUBLE,
188 0, RESCC,
189 " cmpd AL,AR\nZP",
190
191OPLOG, FORCC,
192 SAREG|AWD, TFLOAT|TDOUBLE,
193 SAREG|AWD, TFLOAT|TDOUBLE,
194 0, RESCC,
195 " cmpf AL,AR\nZP",
196
197CCODES, INAREG|INTAREG,
198 SANY, TANY,
199 SANY, TANY,
200 NAREG, RESC1,
201 " movl $1,A1\nZN",
202
203UNARY CALL, INTAREG,
204 SCON, TANY,
205 SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
206 NAREG|NASL, RESC1, /* should be register 0 */
207 " calls ZC,CL\n",
208
209UNARY CALL, INTAREG,
210 SAREG, TANY,
211 SANY, TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
212 NAREG|NASL, RESC1, /* should be 0 */
213 " calls ZC,(AL)\n",
214
215UNARY CALL, INAREG|INTAREG,
216 SNAME, TANY,
217 SANY, TANY,
218 NAREG|NASL, RESC1, /* really reg 0 */
219 " calls ZC,*AL\n",
220
221UNARY CALL, INAREG|INTAREG,
222 SSOREG, TANY,
223 SANY, TANY,
224 NAREG|NASL, RESC1, /* really reg 0 */
225 " calls ZC,*AL\n",
226
227ASG RS, INAREG|FOREFF|FORCC,
228 SAREG, TWORD,
229 SCON, TINT,
230 0, RLEFT|RESCC,
231 " extzv AR,ZU,AL,AL\n",
232
233ASG RS, INAREG|FOREFF|FORCC,
234 SAREG, TWORD,
235 SAREG, ANYFIXED,
236 NAREG, RLEFT|RESCC,
237 " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n",
238
239ASG RS, INAREG|FOREFF|FORCC,
240 SAREG, TWORD,
241 SAREG|AWD, TWORD,
242 NAREG, RLEFT|RESCC,
243 " subl3 AR,$32,A1\n extzv AR,A1,AL,AL\n",
244
245RS, INAREG|INTAREG|FORCC,
246 SAREG, TWORD,
247 SCON, TINT,
248 NAREG|NASL, RESC1|RESCC,
249 " extzv AR,ZU,AL,A1\n",
250
251ASG LS, INAREG|FOREFF|FORCC,
252 SAREG|AWD, TWORD,
253 SAREG|AWD, ANYSIGNED|ANYUSIGNED,
254 0, RLEFT|RESCC,
255 " ashl AR,AL,AL\n",
256
257LS, INAREG|INTAREG|FORCC,
258 SAREG|AWD, TWORD,
259 SAREG|AWD, ANYSIGNED|ANYUSIGNED,
260 NAREG|NASL|NASR, RESC1|RESCC,
261 " ashl AR,AL,A1\n",
262
263INCR, FOREFF,
264 SAREG|AWD, TANY,
265 SANY, TANY,
266 0, RLEFT,
267 " ZE\n",
268
269DECR, FOREFF,
270 SAREG|AWD, TANY,
271 SCON, TANY,
272 0, RLEFT,
273 " ZE\n",
274
275INCR, INAREG|INTAREG,
276 SAREG|AWD, TANY,
277 SCON, TANY,
278 NAREG, RESC1,
279 " ZD\n",
280
281DECR, INAREG|INTAREG,
282 SAREG|AWD, TANY,
283 SCON, TANY,
284 NAREG, RESC1,
285 " ZD\n",
286
287ASSIGN, INAREG|FOREFF|FORCC,
288 SAREG|AWD, TANY,
289 SAREG|AWD, TANY,
290 0, RLEFT|RRIGHT|RESCC,
291 " ZA\n",
292
293ASSIGN, INAREG|FOREFF|FORCC,
294 SFLD, TANY,
295 SAREG|AWD, TWORD,
296 0, RRIGHT|RESCC,
297 " insv AR,H,S,AL\n",
298
299ASSIGN, INAREG|FOREFF|FORCC,
300 SAREG|AWD, TWORD,
301 SFLD, ANYSIGNED,
302 0, RLEFT|RESCC,
303 " extv H,S,AR,AL\n",
304
305ASSIGN, INAREG|FOREFF|FORCC,
306 SAREG|AWD, TWORD,
307 SFLD, ANYUSIGNED,
308 0, RLEFT|RESCC,
309 " extzv H,S,AR,AL\n",
310
311/* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */
312UNARY MUL, FOREFF,
313 SCC, TANY,
314 SCC, TANY,
315 0, RNULL,
316 " HELP HELP HELP\n",
317
318REG, FORARG,
319 SANY, TANY,
320 SAREG, TDOUBLE|TFLOAT,
321 0, RNULL,
322 " movZR AR,-(sp)\n",
323
324REG, INTEMP,
325 SANY, TANY,
326 SAREG, TDOUBLE,
327 2*NTEMP, RESC1,
328 " movd AR,A1\n",
329
330REG, INTEMP,
331 SANY, TANY,
332 SAREG, TANY,
333 NTEMP, RESC1,
334 " movZF AR,A1\n",
335
336OPLEAF, FOREFF,
337 SANY, TANY,
338 SAREG|AWD, TANY,
339 0, RLEFT,
340 "",
341
342OPLTYPE, INAREG|INTAREG,
343 SANY, TANY,
344 SANY, TFLOAT|TDOUBLE,
345 2*NAREG|NASR, RESC1,
346 " ZA\n",
347
348OPLTYPE, INAREG|INTAREG,
349 SANY, TANY,
350 SANY, TANY,
351 NAREG|NASR, RESC1,
352 " ZA\n",
353
354OPLTYPE, FORCC,
355 SANY, TANY,
356 SANY, TANY,
357 0, RESCC,
358 " tstZR AR\n",
359
360OPLTYPE, FORARG,
361 SANY, TANY,
362 SANY, TWORD,
363 0, RNULL,
364 " pushl AR\n",
365
366OPLTYPE, FORARG,
367 SANY, TANY,
368 SANY, TCHAR|TSHORT,
369 0, RNULL,
370 " cvtZRl AR,-(sp)\n",
371
372OPLTYPE, FORARG,
373 SANY, TANY,
374 SANY, TUCHAR|TUSHORT,
375 0, RNULL,
376 " movzZRl AR,-(sp)\n",
377
378OPLTYPE, FORARG,
379 SANY, TANY,
380 SANY, TDOUBLE,
381 0, RNULL,
382 " movd AR,-(sp)\n",
383
384OPLTYPE, FORARG,
385 SANY, TANY,
386 SANY, TFLOAT,
387 0, RNULL,
388 " cvtfd AR,-(sp)\n",
389
390UNARY MINUS, INTAREG|FORCC,
391 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE,
392 SANY, TANY,
393 NAREG|NASL, RESC1|RESCC,
394 " mnegZL AL,A1\n",
395
396COMPL, INTAREG|FORCC,
397 SAREG|AWD, TINT|TUNSIGNED,
398 SANY, TANY,
399 NAREG|NASL, RESC1|RESCC,
400 " mcomZL AL,A1\n",
401
402COMPL, INTAREG|FORCC,
403 SAREG|AWD, ANYSIGNED|ANYUSIGNED,
404 SANY, TANY,
405 NAREG|NASL, RESC1|RESCC,
406 " cvtZLl AL,A1\n mcoml A1,A1\n",
407
408AND, FORCC,
409 SAREG|AWD, TWORD,
410 SCON, TWORD,
411 0, RESCC,
412 " bitl ZZ,AL\n",
413
414AND, FORCC,
415 SAREG|AWD, TSHORT|TUSHORT,
416 SSCON, TWORD,
417 0, RESCC,
418 " bitw ZZ,AL\n",
419
420AND, FORCC,
421 SAREG|AWD, TCHAR|TUCHAR,
422 SCCON, TWORD,
423 0, RESCC,
424 " bitb ZZ,AL\n",
425
426ASG AND, INAREG|FOREFF|FORCC,
427 SAREG, ANYFIXED,
428 SCON, TWORD,
429 0, RLEFT|RESCC,
430 " bicl2 AR,AL\n",
431
432ASG OPMUL, INAREG|FOREFF|FORCC,
433 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
434 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
435 0, RLEFT|RESCC,
436 " OL2 AR,AL\n",
437
438OPMUL, INAREG|INTAREG|FORCC,
439 STAREG, TINT|TUNSIGNED|TLONG|TULONG,
440 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
441 0, RLEFT|RESCC,
442 " OL2 AR,AL\n",
443
444OPMUL, INAREG|INTAREG|FORCC,
445 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
446 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
447 NAREG|NASL|NASR, RESC1|RESCC,
448 " OL3 AR,AL,A1\n",
449
450ASG MOD, INAREG|INTAREG|FOREFF|FORCC,
451 SAREG, TINT|TUNSIGNED|TLONG|TULONG,
452 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
453 NAREG, RLEFT|RESCC,
454 " divl3 AR,AL,A1\n mull2 AR,A1\n subl2 A1,AL\n",
455
456MOD, INAREG|INTAREG,
457 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
458 SAREG|AWD, TINT|TUNSIGNED|TLONG|TULONG,
459 NAREG, RESC1,
460 " divl3 AR,AL,A1\n mull2 AR,A1\n subl3 A1,AL,A1\n",
461
462ASG PLUS, INAREG|FOREFF|FORCC,
463 SAREG|AWD, ANYSIGNED|ANYUSIGNED,
464 SONE, TINT|TLONG,
465 0, RLEFT|RESCC,
466 " incZL AL\n",
467
468ASG MINUS, INAREG|FOREFF|FORCC,
469 SAREG|AWD, ANYSIGNED|ANYUSIGNED,
470 SONE, TINT|TLONG,
471 0, RLEFT|RESCC,
472 " decZL AL\n",
473
474PLUS, INAREG|INTAREG|FORCC,
475 STAREG, ANYFIXED,
476 SONE, TWORD,
477 0, RLEFT|RESCC,
478 " incZL AL\n",
479
480MINUS, INAREG|INTAREG|FORCC,
481 STAREG, ANYFIXED,
482 SONE, TWORD,
483 0, RLEFT|RESCC,
484 " decZL AL\n",
485
486ASG OPSIMP, INAREG|FOREFF|FORCC,
487 SAREG|AWD, TWORD,
488 SAREG|AWD, TWORD,
489 0, RLEFT|RESCC,
490 " OL2 AR,AL\n",
491
492ASG OPSIMP, INAREG|FOREFF|FORCC,
493 AWD, TSHORT|TUSHORT,
494 SAREG|AWD, TSHORT|TUSHORT,
495 0, RLEFT|RESCC,
496 " OW2 AR,AL\n",
497
498ASG OPSIMP, INAREG|FOREFF|FORCC,
499 AWD, TSHORT|TUSHORT,
500 SSCON, TWORD,
501 0, RLEFT|RESCC,
502 " OW2 AR,AL\n",
503
504ASG OPSIMP, INAREG|FOREFF|FORCC,
505 AWD, TCHAR|TUCHAR,
506 SAREG|AWD, TCHAR|TUCHAR,
507 0, RLEFT|RESCC,
508 " OB2 AR,AL\n",
509
510ASG OPSIMP, INAREG|FOREFF|FORCC,
511 AWD, TCHAR|TUCHAR,
512 SCCON, TWORD,
513 0, RLEFT|RESCC,
514 " OB2 AR,AL\n",
515
516OPSIMP, INAREG|INTAREG|FORCC,
517 STAREG, ANYFIXED,
518 SAREG|AWD, TWORD,
519 0, RLEFT|RESCC,
520 " OL2 AR,AL\n",
521
522OPSIMP, INAREG|INTAREG|FORCC,
523 SAREG|AWD, TWORD,
524 SAREG|AWD, TWORD,
525 NAREG|NASL|NASR, RESC1|RESCC,
526 " OL3 AR,AL,A1\n",
527
528ASG OPFLOAT, INAREG|FOREFF|FORCC,
529 SAREG|AWD, TDOUBLE,
530 SAREG|AWD, TDOUBLE,
531 0, RLEFT|RESCC,
532 " OD2 AR,AL\n",
533
534ASG OPFLOAT, INAREG|FOREFF|FORCC,
535 SAREG|AWD, TFLOAT,
536 SAREG|AWD, TFLOAT,
537 0, RLEFT|RESCC,
538 " OF2 AR,AL\n",
539
540ASG OPFLOAT, INAREG|FOREFF|FORCC,
541 SAREG|AWD, TDOUBLE,
542 SAREG|AWD, TFLOAT,
543 NAREG|NASR, RLEFT|RESCC,
544 " cvtfd AR,A1\n OD2 A1,AL\n",
545
546ASG OPFLOAT, INAREG|INTAREG|FOREFF|FORCC,
547 SAREG|AWD, TFLOAT,
548 SAREG|AWD, TDOUBLE,
549 NAREG, RLEFT|RESC1|RESCC,
550 " cvtfd AL,A1\n OD2 AR,A1\n cvtdf A1,AL\n",
551
552OPFLOAT, INAREG|INTAREG|FORCC,
553 STAREG, TDOUBLE,
554 SAREG|AWD, TDOUBLE,
555 0, RLEFT|RESCC,
556 " OD2 AR,AL\n",
557
558OPFLOAT, INAREG|INTAREG|FORCC,
559 SAREG|AWD, TDOUBLE,
560 SAREG|AWD, TDOUBLE,
561 NAREG|NASL|NASR, RESC1|RESCC,
562 " OD3 AR,AL,A1\n",
563
564OPFLOAT, INAREG|INTAREG|FORCC,
565 SAREG|AWD, TFLOAT,
566 SAREG|AWD, TDOUBLE,
567 NAREG|NASL, RESC1|RESCC,
568 " cvtfd AL,A1\n OD2 AR,A1\n",
569
570OPFLOAT, INAREG|INTAREG|FORCC,
571 SAREG|AWD, TDOUBLE,
572 SAREG|AWD, TFLOAT,
573 NAREG|NASR, RESC1|RESCC,
574 " cvtfd AR,A1\n OD3 A1,AL,A1\n",
575
576OPFLOAT, INAREG|INTAREG|FORCC,
577 SAREG|AWD, TFLOAT,
578 SAREG|AWD, TFLOAT,
579 NAREG|NASL|NASR, RESC1|RESCC,
580 " OF3 AR,AL,A1\n cvtfd A1,A1\n",
581
582 /* Default actions for hard trees ... */
583
584# define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
585
586UNARY MUL, DF( UNARY MUL ),
587
588INCR, DF(INCR),
589
590DECR, DF(INCR),
591
592ASSIGN, DF(ASSIGN),
593
594STASG, DF(STASG),
595
596OPLEAF, DF(NAME),
597
598OPLOG, FORCC,
599 SANY, TANY,
600 SANY, TANY,
601 REWRITE, BITYPE,
602 "",
603
604OPLOG, DF(NOT),
605
606COMOP, DF(COMOP),
607
608INIT, DF(INIT),
609
610OPUNARY, DF(UNARY MINUS),
611
612
613ASG OPANY, DF(ASG PLUS),
614
615OPANY, DF(BITYPE),
616
617FREE, FREE, FREE, FREE, FREE, FREE, FREE, FREE, "help; I'm in trouble\n" };