xref: /original-bsd/old/pcc/ccom.vax/table.c (revision 92d3de31)
1 static char *sccsid ="@(#)table.c	1.1 (Berkeley) 12/15/82";
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" };
832