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