xref: /csrg-svn/old/pcc/ccom.vax/table.c (revision 19934)
117740Sralph #ifndef lint
2*19934Smckusick static char *sccsid ="@(#)table.c	1.9 (Berkeley) 05/03/85";
317740Sralph #endif lint
417740Sralph 
518558Sralph # include "pass2.h"
69705Slinton 
79705Slinton # define WPTR TPTRTO|TINT|TLONG|TFLOAT|TDOUBLE|TPOINT|TUNSIGNED|TULONG
89705Slinton # define AWD SNAME|SOREG|SCON|STARNM|STARREG
99705Slinton /* tbl */
109705Slinton # define ANYSIGNED TPOINT|TINT|TLONG|TSHORT|TCHAR
119705Slinton # define ANYUSIGNED TUNSIGNED|TULONG|TUSHORT|TUCHAR
129705Slinton # define ANYFIXED ANYSIGNED|ANYUSIGNED
139705Slinton # define TWORD TINT|TUNSIGNED|TPOINT|TLONG|TULONG
149705Slinton # define NIAWD SNAME|SCON|STARNM
159705Slinton /* tbl */
169705Slinton 
179705Slinton struct optab  table[] = {
189705Slinton 
199705Slinton PCONV,	INAREG|INTAREG,
209705Slinton 	SAREG|AWD,	TCHAR|TSHORT,
219705Slinton 	SANY,	TPOINT,
229705Slinton 		NAREG|NASL,	RESC1,
239705Slinton 		"	cvtZLl	AL,A1\n",
249705Slinton 
259705Slinton PCONV,	INAREG|INTAREG,
269705Slinton 	SAREG|AWD,	TUCHAR|TUSHORT,
279705Slinton 	SANY,	TPOINT,
289705Slinton 		NAREG|NASL,	RESC1,
299705Slinton 		"	movzZLl	AL,A1\n",
309705Slinton 
319705Slinton 	/* the following entry is to fix a problem with
329705Slinton 	   the manner that the first pass handles the
339705Slinton 	   type of a shift expression                 */
349705Slinton PCONV,	INAREG|INTAREG,
359705Slinton 	SAREG|AWD,	TINT|TUNSIGNED,
369705Slinton 	SANY,	TPOINT,
379705Slinton 		NAREG|NASL,	RLEFT,
389705Slinton 		"",
399705Slinton 
4017740Sralph #if defined(FORT) || defined(SPRECC)
419705Slinton SCONV,	INTAREG|FORCC,
4216182Sralph 	SAREG|AWD,	TDOUBLE,
4316182Sralph 	SANY,	TFLOAT,
4416182Sralph 		NAREG|NASL,	RESC1|RESCC,
4516182Sralph 		"	cvtdf	AL,A1\n",
469705Slinton 
479705Slinton SCONV,	INTAREG|FORCC,
4816937Sralph 	SAREG|AWD,	ANYSIGNED|TUNSIGNED|TULONG,
499705Slinton 	SANY,	TFLOAT,
509705Slinton 		NAREG|NASL,	RESC1|RESCC,
519705Slinton 		"	cvtZLf	AL,TA1\n",
529705Slinton 
539705Slinton SCONV,	INTAREG|FORCC,
549705Slinton 	SAREG|AWD,	TUCHAR|TUSHORT,
559705Slinton 	SANY,	TFLOAT,
569705Slinton 		NAREG|NASL,	RESC1|RESCC,
579705Slinton 		"	movzZLl	AL,A1\n	cvtlf	A1,TA1\n",
589705Slinton #endif
599705Slinton 
609705Slinton SCONV,	INTAREG|FORCC,
619705Slinton 	SAREG|AWD,	TUCHAR|TUSHORT,
629705Slinton 	SANY,	TFLOAT|TDOUBLE,
639705Slinton 		NAREG|NASL,	RESC1|RESCC,
649705Slinton 		"	movzZLl	AL,A1\n	cvtld	A1,A1\n",
659705Slinton 
66*19934Smckusick /* char -> ushort, result in reg (forced to int type by reclaim()) */
67*19934Smckusick SCONV,	INTAREG|INAREG,
68*19934Smckusick 	SAREG|AWD,	TCHAR,
69*19934Smckusick 	SANY,	TUSHORT,
70*19934Smckusick 		NAREG|NASL,	RESC1,
71*19934Smckusick 		"	cvtbw	AL,A1\n	movzwl	A1,A1\n",
72*19934Smckusick 
73*19934Smckusick /* uchar, ushort -> wider */
74*19934Smckusick SCONV,	INTAREG|INAREG,
75*19934Smckusick 	SAREG|AWD,	TUCHAR|TUSHORT,
76*19934Smckusick 	SANY,	TSHORT|TUSHORT|TINT|TUNSIGNED|TLONG|TULONG,
77*19934Smckusick 		NAREG|NASL,	RESC1,
78*19934Smckusick 		"	movzZLl	AL,A1\n",
79*19934Smckusick 
80*19934Smckusick /* char, short -> wider */
81*19934Smckusick SCONV,	INTAREG|INAREG,
82*19934Smckusick 	SAREG|AWD,	TCHAR|TSHORT,
83*19934Smckusick 	SANY,	TSHORT|TUSHORT|TINT|TUNSIGNED|TLONG|TULONG,
84*19934Smckusick 		NAREG|NASL,	RESC1,
85*19934Smckusick 		"	cvtZLl	AL,A1\n",
86*19934Smckusick 
87*19934Smckusick /* take care of redundant conversions introduced by reclaim() */
88*19934Smckusick SCONV,	INTAREG,
89*19934Smckusick 	STAREG,	TWORD,
90*19934Smckusick 	SANY,	TWORD,
91*19934Smckusick 		0,	RLEFT,
92*19934Smckusick 		"",
93*19934Smckusick 
949705Slinton SCONV,	INTAREG|FORCC,
9516182Sralph 	SAREG|AWD,	TANY,
969705Slinton 	SANY,	TANY,
979705Slinton 		NAREG|NASL,	RESC1|RESCC,
9816182Sralph 		"	ZA\n",
999705Slinton 
1009705Slinton 
1019705Slinton INIT,	FOREFF,
1029705Slinton 	SCON,	TANY,
1039705Slinton 	SANY,	TWORD,
1049705Slinton 		0,	RNOP,
1059705Slinton 		"	.long	CL\n",
1069705Slinton 
1079705Slinton INIT,	FOREFF,
1089705Slinton 	SCON,	TANY,
1099705Slinton 	SANY,	TSHORT|TUSHORT,
1109705Slinton 		0,	RNOP,
1119705Slinton 		"	.word	CL\n",
1129705Slinton 
1139705Slinton INIT,	FOREFF,
1149705Slinton 	SCON,	TANY,
1159705Slinton 	SANY,	TCHAR|TUCHAR,
1169705Slinton 		0,	RNOP,
1179705Slinton 		"	.byte	CL\n",
1189705Slinton 
1199705Slinton 	/* for the use of fortran only */
1209705Slinton 
1219705Slinton GOTO,	FOREFF,
1229705Slinton 	SCON,	TANY,
1239705Slinton 	SANY,	TANY,
1249705Slinton 		0,	RNOP,
1259705Slinton 		"	jbr	CL\n",
1269705Slinton 
1279705Slinton GOTO,	FOREFF,
12817740Sralph 	SNAME|SOREG,	TANY,
1299705Slinton 	SANY,	TANY,
1309705Slinton 		0,	RNOP,
1319705Slinton 		"	jmp	*AL\n",
1329705Slinton 
1339705Slinton GOTO,	FOREFF,
1349705Slinton 	SAREG,	TANY,
1359705Slinton 	SANY,	TANY,
1369705Slinton 		0,	RNOP,
1379705Slinton 		"	jmp	(AL)\n",
1389705Slinton 
1399705Slinton STARG,	FORARG,
1409705Slinton 	SCON|SOREG,	TANY,
1419705Slinton 	SANY,	TANY,
1429705Slinton 		0,	RNULL,
1439705Slinton 		"	subl2	ZT,sp\nZS",
1449705Slinton 
1459705Slinton STASG,	FOREFF,
1469705Slinton 	SNAME|SOREG,	TANY,
1479705Slinton 	SCON|SAREG,	TANY,
1489705Slinton 		0,	RNOP,
1499705Slinton 		"ZS",
1509705Slinton 
1519705Slinton STASG,	INAREG,
1529705Slinton 	SNAME|SOREG,	TANY,
1539705Slinton 	SCON,	TANY,
1549705Slinton 		NAREG,	RESC1,
1559705Slinton 		"ZS	movl	AR,A1\n",
1569705Slinton 
1579705Slinton STASG,	INAREG,
1589705Slinton 	SNAME|SOREG,	TANY,
1599705Slinton 	SAREG,	TANY,
1609705Slinton 		0,	RRIGHT,
1619705Slinton 		"	pushl	AR\nZS	movl	(sp)+,AR\n",
1629705Slinton 
1639705Slinton FLD,	INAREG|INTAREG,
1649705Slinton 	SANY,	TANY,
1659705Slinton 	SFLD,	ANYSIGNED,
1669705Slinton 		NAREG|NASR,	RESC1,
1679705Slinton 		"	extv	$H,$S,AR,A1\n",
1689705Slinton 
1699705Slinton FLD,	INAREG|INTAREG,
1709705Slinton 	SANY,	TANY,
1719705Slinton 	SFLD,	ANYUSIGNED,
1729705Slinton 		NAREG|NASR,	RESC1,
1739705Slinton 		"	extzv	$H,$S,AR,A1\n",
1749705Slinton 
1759705Slinton FLD,	FORARG,
1769705Slinton 	SANY,	TANY,
1779705Slinton 	SFLD,	ANYSIGNED,
1789705Slinton 		0,	RNULL,
1799705Slinton 		"	extv	$H,$S,AR,-(sp)\n",
1809705Slinton 
1819705Slinton FLD,	FORARG,
1829705Slinton 	SANY,	TANY,
1839705Slinton 	SFLD,	ANYUSIGNED,
1849705Slinton 		0,	RNULL,
1859705Slinton 		"	extzv	$H,$S,AR,-(sp)\n",
1869705Slinton 
1879705Slinton OPLOG,	FORCC,
1889705Slinton 	SAREG|AWD,	TWORD,
1899705Slinton 	SAREG|AWD,	TWORD,
1909705Slinton 		0,	RESCC,
1919705Slinton 		"	cmpl	AL,AR\nZP",
1929705Slinton 
1939705Slinton OPLOG,	FORCC,
194*19934Smckusick 	SAREG|AWD,	TSHORT,
195*19934Smckusick 	SAREG|AWD,	TSHORT,
1969705Slinton 		0,	RESCC,
1979705Slinton 		"	cmpw	AL,AR\nZP",
1989705Slinton 
1999705Slinton OPLOG,	FORCC,
200*19934Smckusick 	SAREG|AWD,	TUSHORT,
201*19934Smckusick 	SAREG|AWD,	TUSHORT,
2029705Slinton 		0,	RESCC,
203*19934Smckusick 		"	cmpw	AL,AR\nZP",
204*19934Smckusick 
205*19934Smckusick OPLOG,	FORCC,
206*19934Smckusick 	SAREG|AWD,	TCHAR,
207*19934Smckusick 	SAREG|AWD,	TCHAR,
208*19934Smckusick 		0,	RESCC,
2099705Slinton 		"	cmpb	AL,AR\nZP",
2109705Slinton 
2119705Slinton OPLOG,	FORCC,
212*19934Smckusick 	SAREG|AWD,	TUCHAR,
213*19934Smckusick 	SAREG|AWD,	TUCHAR,
214*19934Smckusick 		0,	RESCC,
215*19934Smckusick 		"	cmpb	AL,AR\nZP",
216*19934Smckusick 
217*19934Smckusick OPLOG,	FORCC,
2189705Slinton 	SAREG|AWD,	TSHORT|TUSHORT,
2199705Slinton 	SSCON,	TANY,
2209705Slinton 		0,	RESCC,
2219705Slinton 		"	cmpw	AL,AR\nZP",
2229705Slinton 
2239705Slinton OPLOG,	FORCC,
2249705Slinton 	SAREG|AWD,	TCHAR|TUCHAR,
2259705Slinton 	SCCON,	TANY,
2269705Slinton 		0,	RESCC,
2279705Slinton 		"	cmpb	AL,AR\nZP",
2289705Slinton 
2299705Slinton OPLOG,	FORCC,
2309705Slinton 	SAREG|AWD,	TDOUBLE,
2319705Slinton 	SAREG|AWD,	TDOUBLE,
2329705Slinton 		0,	RESCC,
2339705Slinton 		"	cmpd	AL,AR\nZP",
2349705Slinton 
2359705Slinton OPLOG,	FORCC,
2369705Slinton 	SAREG|AWD,	TDOUBLE,
2379705Slinton 	SAREG|AWD,	TFLOAT,
23817205Sralph 		NAREG|NASR,	RESCC,
2399705Slinton 		"	cvtfd	AR,A1\n	cmpd	AL,A1\nZP",
2409705Slinton 
2419705Slinton OPLOG,	FORCC,
2429705Slinton 	SAREG|AWD,	TFLOAT,
2439705Slinton 	SAREG|AWD,	TDOUBLE,
24417205Sralph 		NAREG|NASL,	RESCC,
2459705Slinton 		"	cvtfd	AL,A1\n	cmpd	A1,AR\nZP",
2469705Slinton 
2479705Slinton OPLOG,	FORCC,
2489705Slinton 	SAREG|AWD,	TFLOAT,
2499705Slinton 	SAREG|AWD,	TFLOAT,
2509705Slinton 		0,	RESCC,
2519705Slinton 		"	cmpf	AL,AR\nZP",
2529705Slinton 
2539705Slinton CCODES,	INAREG|INTAREG,
2549705Slinton 	SANY,	TANY,
2559705Slinton 	SANY,	TANY,
2569705Slinton 		NAREG,	RESC1,
2579705Slinton 		"	movl	$1,A1\nZN",
2589705Slinton 
2599705Slinton UNARY CALL,	INTAREG,
2609705Slinton 	SCON,	TANY,
26116182Sralph 	SANY,	TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
26216182Sralph 		NAREG|NASL,	RESC1,
26316182Sralph 		"	calls	ZC,CL\n",
26416182Sralph 
26516182Sralph UNARY CALL,	INTAREG,
2669705Slinton 	SAREG,	TANY,
2679705Slinton 	SANY,	TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
2689705Slinton 		NAREG|NASL,	RESC1,	/* should be 0 */
2699705Slinton 		"	calls	ZC,(AL)\n",
2709705Slinton 
2719705Slinton UNARY CALL,	INAREG|INTAREG,
2729705Slinton 	SNAME,	TANY,
2739705Slinton 	SANY,	TANY,
2749705Slinton 		NAREG|NASL,	RESC1,	/* really reg 0 */
2759705Slinton 		"	calls	ZC,*AL\n",
2769705Slinton 
2779705Slinton UNARY CALL,	INAREG|INTAREG,
2789705Slinton 	SSOREG,	TANY,
2799705Slinton 	SANY,	TANY,
2809705Slinton 		NAREG|NASL,	RESC1,	/* really reg 0 */
2819705Slinton 		"	calls	ZC,*AL\n",
2829705Slinton 
2839705Slinton ASG RS,	INAREG|FOREFF|FORCC,
2849705Slinton 	SAREG,	TWORD,
2859705Slinton 	SCON,	TINT,
2869705Slinton 		0,	RLEFT|RESCC,
2879705Slinton 		"	extzv	AR,ZU,AL,AL\n",
2889705Slinton 
2899705Slinton ASG RS,	INAREG|FOREFF|FORCC,
2909705Slinton 	SAREG,	TWORD,
2919705Slinton 	SAREG,	ANYFIXED,
2929705Slinton 		NAREG,	RLEFT|RESCC,
2939705Slinton 		"	subl3	AR,$32,A1\n	extzv	AR,A1,AL,AL\n",
2949705Slinton 
2959705Slinton ASG RS,	INAREG|FOREFF|FORCC,
2969705Slinton 	SAREG,	TWORD,
2979705Slinton 	SAREG|AWD,	TWORD,
2989705Slinton 		NAREG,	RLEFT|RESCC,
2999705Slinton 		"	subl3	AR,$32,A1\n	extzv	AR,A1,AL,AL\n",
3009705Slinton 
3019705Slinton RS,	INAREG|INTAREG|FORCC,
3029705Slinton 	SAREG,	TWORD,
3039705Slinton 	SCON,	TINT,
3049705Slinton 		NAREG|NASL,	RESC1|RESCC,
3059705Slinton 		"	extzv	AR,ZU,AL,A1\n",
3069705Slinton 
3079705Slinton ASG LS,	INAREG|FOREFF|FORCC,
3089705Slinton 	SAREG|AWD,	TWORD,
3099705Slinton 	SAREG|NIAWD,	ANYSIGNED|ANYUSIGNED,
3109705Slinton 		0,	RLEFT|RESCC,
3119705Slinton 		"	ashl	AR,AL,AL\n",
3129705Slinton 
3139705Slinton ASG LS,	INAREG|FOREFF|FORCC,
3149705Slinton 	SAREG|AWD,	TWORD,
3159705Slinton 	SSOREG,	ANYSIGNED|ANYUSIGNED,
3169705Slinton 		0,	RLEFT|RESCC,
3179705Slinton 		"	ashl	AR,AL,AL\n",
3189705Slinton 
3199705Slinton ASG LS,	INAREG|FOREFF|FORCC,
3209705Slinton 	SAREG|AWD,	TWORD,
3219705Slinton 	SOREG,	ANYSIGNED|ANYUSIGNED,
3229705Slinton 		NAREG,	RLEFT|RESCC,
3239705Slinton 		"	ZB	AR,A1\n	ashl	A1,AL,AL\n",
3249705Slinton 
3259705Slinton LS,	INAREG|INTAREG|FORCC,
3269705Slinton 	SAREG|AWD,	TWORD,
3279705Slinton 	SAREG|NIAWD,	ANYSIGNED|ANYUSIGNED,
3289705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
3299705Slinton 		"	ashl	AR,AL,A1\n",
3309705Slinton 
3319705Slinton LS,	INAREG|INTAREG|FORCC,
3329705Slinton 	SAREG|AWD,	TWORD,
3339705Slinton 	SSOREG,	ANYSIGNED|ANYUSIGNED,
3349705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
3359705Slinton 		"	ashl	AR,AL,A1\n",
3369705Slinton 
3379705Slinton LS,	INAREG|INTAREG|FORCC,
3389705Slinton 	SAREG|AWD,	TWORD,
3399705Slinton 	SOREG,	ANYSIGNED|ANYUSIGNED,
3409705Slinton 		NAREG|NASR,	RESC1|RESCC,
3419705Slinton 		"	ZB	AR,A1\n	ashl	A1,AL,A1\n",
3429705Slinton 
3439705Slinton INCR,	FOREFF,
3449705Slinton 	AWD,	TANY,
3459705Slinton 	SCON,	TANY,
3469705Slinton 		0,	RLEFT,
3479705Slinton 		"	ZE\n",
3489705Slinton 
3499705Slinton DECR,	FOREFF,
3509705Slinton 	AWD,	TANY,
3519705Slinton 	SCON,	TANY,
3529705Slinton 		0,	RLEFT,
3539705Slinton 		"	ZE\n",
3549705Slinton 
3559705Slinton INCR,	FOREFF,
3569705Slinton 	SAREG,	TWORD,
3579705Slinton 	SCON,	TANY,
3589705Slinton 		0,	RLEFT,
3599705Slinton 		"	ZE\n",
3609705Slinton 
3619705Slinton DECR,	FOREFF,
3629705Slinton 	SAREG,	TWORD,
3639705Slinton 	SCON,	TANY,
3649705Slinton 		0,	RLEFT,
3659705Slinton 		"	ZE\n",
3669705Slinton 
3679705Slinton /* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */
3689705Slinton 
3699705Slinton INCR,	INAREG|INTAREG,
3709705Slinton 	AWD,	TANY,
3719705Slinton 	SCON,	TANY,
3729705Slinton 		NAREG,	RESC1,
3739705Slinton 		"	ZD\n",
3749705Slinton 
3759705Slinton DECR,	INAREG|INTAREG,
3769705Slinton 	AWD,	TANY,
3779705Slinton 	SCON,	TANY,
3789705Slinton 		NAREG,	RESC1,
3799705Slinton 		"	ZD\n",
3809705Slinton 
3819705Slinton INCR,	INAREG|INTAREG,
3829705Slinton 	SAREG,	TWORD,
3839705Slinton 	SCON,	TANY,
3849705Slinton 		NAREG,	RESC1,
3859705Slinton 		"	ZD\n",
3869705Slinton 
3879705Slinton DECR,	INAREG|INTAREG,
3889705Slinton 	SAREG,	TWORD,
3899705Slinton 	SCON,	TANY,
3909705Slinton 		NAREG,	RESC1,
3919705Slinton 		"	ZD\n",
3929705Slinton 
3939705Slinton ASSIGN,	INAREG|FOREFF|FORCC,
39416182Sralph 	SAREG|AWD,	TDOUBLE,
39516182Sralph 	SAREG|AWD,	TUCHAR|TUSHORT,
39616182Sralph 		NAREG|NASR,	RLEFT|RESCC,
39716182Sralph 		"	movzZRl	AR,A1\n	cvtld	A1,AL\n",
39816182Sralph 
39916182Sralph ASSIGN,	INAREG|FOREFF|FORCC,
40016182Sralph 	SAREG|AWD,	TFLOAT,
40116182Sralph 	SAREG|AWD,	TUCHAR|TUSHORT,
40216182Sralph 		NAREG|NASR,	RLEFT|RESCC,
40316182Sralph 		"	movzZRl	AR,A1\n	cvtlf	A1,AL\n",
40416182Sralph 
40516182Sralph ASSIGN,	INAREG|FOREFF|FORCC,
4069705Slinton 	SAREG|AWD,	TANY,
4079705Slinton 	SAREG|AWD,	TANY,
4089705Slinton 		0,	RLEFT|RRIGHT|RESCC,
4099705Slinton 		"	ZA\n",
4109705Slinton 
4119705Slinton ASSIGN,	INAREG|FOREFF,
4129705Slinton 	SFLD,	TANY,
4139705Slinton 	SAREG|AWD,	TWORD,
4149705Slinton 		0,	RRIGHT,
4159705Slinton 		"	insv	AR,$H,$S,AL\n",
4169705Slinton 
4179705Slinton ASSIGN,	INAREG|FOREFF|FORCC,
4189705Slinton 	SAREG|AWD,	TWORD,
4199705Slinton 	SFLD,	ANYSIGNED,
4209705Slinton 		0,	RLEFT|RESCC,
4219705Slinton 		"	extv	$H,$S,AR,AL\n",
4229705Slinton 
4239705Slinton ASSIGN,	INAREG|FOREFF|FORCC,
4249705Slinton 	SAREG|AWD,	TWORD,
4259705Slinton 	SFLD,	ANYUSIGNED,
4269705Slinton 		0,	RLEFT|RESCC,
4279705Slinton 		"	extzv	$H,$S,AR,AL\n",
4289705Slinton 
4299705Slinton /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */
4309705Slinton UNARY MUL,	FOREFF,
4319705Slinton 	SCC,	TANY,
4329705Slinton 	SCC,	TANY,
4339705Slinton 		0,	RNULL,
4349705Slinton 		"	HELP HELP HELP\n",
4359705Slinton 
4369705Slinton REG,	INTEMP,
4379705Slinton 	SANY,	TANY,
4389705Slinton 	SAREG,	TDOUBLE,
4399705Slinton 		2*NTEMP,	RESC1,
4409705Slinton 		"	movd	AR,A1\n",
4419705Slinton 
4429705Slinton REG,	INTEMP,
4439705Slinton 	SANY,	TANY,
4449705Slinton 	SAREG,	TANY,
4459705Slinton 		NTEMP,	RESC1,
4469705Slinton 		"	movZF	AR,A1\n",
4479705Slinton 
44817740Sralph #if defined(FORT) || defined(SPRECC)
44917740Sralph REG,	FORARG,
4509705Slinton 	SANY,	TANY,
4519705Slinton 	SAREG,	TFLOAT,
4529705Slinton 		0,	RNULL,
4539705Slinton 		"	cvtfd	AR,-(sp)\n",
4549705Slinton 
4559705Slinton REG,	FORARG,
4569705Slinton 	SANY,	TANY,
4579705Slinton 	SAREG,	TDOUBLE,
4589705Slinton 		0,	RNULL,
4599705Slinton 		"	movZR	AR,-(sp)\n",
4609705Slinton #endif
4619705Slinton 
4629705Slinton OPLEAF,	FOREFF,
4639705Slinton 	SANY,	TANY,
4649705Slinton 	SAREG|AWD,	TANY,
4659705Slinton 		0,	RLEFT,
4669705Slinton 		"",
4679705Slinton 
4689705Slinton OPLTYPE,	INAREG|INTAREG,
4699705Slinton 	SANY,	TANY,
4709705Slinton 	SANY,	TANY,
4719705Slinton 		NAREG|NASR,	RESC1,
4729705Slinton 		"	ZA\n",
4739705Slinton 
4749705Slinton OPLTYPE,	FORCC,
4759705Slinton 	SANY,	TANY,
4769705Slinton 	SANY,	TANY,
4779705Slinton 		0,	RESCC,
4789705Slinton 		"	tstZR	AR\n",
4799705Slinton 
4809705Slinton OPLTYPE,	FORARG,
4819705Slinton 	SANY,	TANY,
4829705Slinton 	SANY,	TWORD,
4839705Slinton 		0,	RNULL,
4849705Slinton 		"	pushl	AR\n",
4859705Slinton 
4869705Slinton OPLTYPE,	FORARG,
4879705Slinton 	SANY,	TANY,
4889705Slinton 	SANY,	TCHAR|TSHORT,
4899705Slinton 		0,	RNULL,
4909705Slinton 		"	cvtZRl	AR,-(sp)\n",
4919705Slinton 
4929705Slinton OPLTYPE,	FORARG,
4939705Slinton 	SANY,	TANY,
4949705Slinton 	SANY,	TUCHAR|TUSHORT,
4959705Slinton 		0,	RNULL,
4969705Slinton 		"	movzZRl	AR,-(sp)\n",
4979705Slinton 
4989705Slinton OPLTYPE,	FORARG,
4999705Slinton 	SANY,	TANY,
5009705Slinton 	SANY,	TDOUBLE,
5019705Slinton 		0,	RNULL,
5029705Slinton 		"	movd	AR,-(sp)\n",
5039705Slinton 
5049705Slinton OPLTYPE,	FORARG,
5059705Slinton 	SANY,	TANY,
5069705Slinton 	SANY,	TFLOAT,
5079705Slinton 		0,	RNULL,
5089705Slinton 		"	cvtfd	AR,-(sp)\n",
5099705Slinton 
51017740Sralph #if defined(FORT) || defined(SPRECC)
5119705Slinton UNARY MINUS,	INTAREG|FORCC,
51216182Sralph 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG|TFLOAT|TDOUBLE,
51316182Sralph 	SANY,	TANY,
51416182Sralph 		NAREG|NASL,	RESC1|RESCC,
51516182Sralph 		"	mnegZL	TAL,A1\n",
51616182Sralph 
51716182Sralph #else
51816182Sralph 
51916182Sralph UNARY MINUS,	INTAREG|FORCC,
5209705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE,
5219705Slinton 	SANY,	TANY,
5229705Slinton 		NAREG|NASL,	RESC1|RESCC,
5239705Slinton 		"	mnegZL	AL,A1\n",
52416182Sralph #endif
5259705Slinton 
5269705Slinton COMPL,	INTAREG|FORCC,
5279705Slinton 	SAREG|AWD,	TINT|TUNSIGNED,
5289705Slinton 	SANY,	TANY,
5299705Slinton 		NAREG|NASL,	RESC1|RESCC,
5309705Slinton 		"	mcomZL	AL,A1\n",
5319705Slinton 
5329705Slinton COMPL,	INTAREG|FORCC,
5339705Slinton 	SAREG|AWD,	ANYSIGNED|ANYUSIGNED,
5349705Slinton 	SANY,	TANY,
5359705Slinton 		NAREG|NASL,	RESC1|RESCC,
5369705Slinton 		"	cvtZLl	AL,A1\n	mcoml	A1,A1\n",
5379705Slinton 
5389705Slinton AND,	FORCC,
5399705Slinton 	SAREG|AWD,	TWORD,
5409705Slinton 	SCON,	TWORD,
5419705Slinton 		0,	RESCC,
5429705Slinton 		"	bitl	ZZ,AL\n",
5439705Slinton 
5449705Slinton AND,	FORCC,
5459705Slinton 	SAREG|AWD,	TSHORT|TUSHORT,
5469705Slinton 	SSCON,	TWORD,
5479705Slinton 		0,	RESCC,
5489705Slinton 		"	bitw	ZZ,AL\n",
5499705Slinton 
5509705Slinton AND,	FORCC,
5519705Slinton 	SAREG|AWD,	TCHAR|TUCHAR,
5529705Slinton 	SCCON,	TWORD,
5539705Slinton 		0,	RESCC,
5549705Slinton 		"	bitb	ZZ,AL\n",
5559705Slinton 
5569705Slinton ASG AND,	INAREG|FOREFF|FORCC,
5579705Slinton 	SAREG,	TWORD,
5589705Slinton 	SCON,	TWORD,
5599705Slinton 		0,	RLEFT|RESCC,
5609705Slinton 		"	bicl2	AR,AL\n",
5619705Slinton 
5629705Slinton ASG OPMUL,	INAREG|FOREFF|FORCC,
5639705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5649705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5659705Slinton 		0,	RLEFT|RESCC,
5669705Slinton 		"	OL2	AR,AL\n",
5679705Slinton 
5689705Slinton OPMUL,	INAREG|INTAREG|FORCC,
5699705Slinton 	STAREG,	TINT|TUNSIGNED|TLONG|TULONG,
5709705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5719705Slinton 		0,	RLEFT|RESCC,
5729705Slinton 		"	OL2	AR,AL\n",
5739705Slinton 
5749705Slinton OPMUL,	INAREG|INTAREG|FORCC,
5759705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5769705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5779705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
5789705Slinton 		"	OL3	AR,AL,A1\n",
5799705Slinton 
5809705Slinton ASG MOD,	INAREG|INTAREG|FOREFF|FORCC,
5819705Slinton 	SAREG,	TINT|TUNSIGNED|TLONG|TULONG,
5829705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5839705Slinton 		NAREG,	RLEFT|RESCC,
5849705Slinton 		"	divl3	AR,AL,A1\n	mull2	AR,A1\n	subl2	A1,AL\n",
5859705Slinton 
5869705Slinton MOD,	INAREG|INTAREG,
5879705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5889705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5899705Slinton 		NAREG,	RESC1,
5909705Slinton 		"	divl3	AR,AL,A1\n	mull2	AR,A1\n	subl3	A1,AL,A1\n",
5919705Slinton 
5929705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
5939705Slinton 	SAREG,	TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
5949705Slinton 	SONE,	TINT|TLONG,
5959705Slinton 		0,	RLEFT|RESCC,
5969705Slinton 		"	incZL	AL\n",
5979705Slinton 
5989705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
5999705Slinton 	AWD,	ANYSIGNED|ANYUSIGNED,
6009705Slinton 	SONE,	TINT|TLONG,
6019705Slinton 		0,	RLEFT|RESCC,
6029705Slinton 		"	incZL	AL\n",
6039705Slinton 
6049705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
6059705Slinton 	SAREG,	TSHORT|TCHAR,
6069705Slinton 	SONE,	TINT|TLONG,
6079705Slinton 		0,	RLEFT|RESCC,
6089705Slinton 		"	incZL	AL\n	cvtZLl	AL,AL\n",
6099705Slinton 
6109705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
6119705Slinton 	SAREG,	TUSHORT|TUCHAR,
6129705Slinton 	SONE,	TINT|TLONG,
6139705Slinton 		0,	RLEFT|RESCC,
6149705Slinton 		"	incZL	AL\n	movzZLl	AL,AL\n",
6159705Slinton 
6169705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6179705Slinton 	SAREG,	TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
6189705Slinton 	SONE,	TINT|TLONG,
6199705Slinton 		0,	RLEFT|RESCC,
6209705Slinton 		"	decZL	AL\n",
6219705Slinton 
6229705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6239705Slinton 	AWD,	ANYSIGNED|ANYUSIGNED,
6249705Slinton 	SONE,	TINT|TLONG,
6259705Slinton 		0,	RLEFT|RESCC,
6269705Slinton 		"	decZL	AL\n",
6279705Slinton 
6289705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6299705Slinton 	SAREG,	TSHORT|TCHAR,
6309705Slinton 	SONE,	TINT|TLONG,
6319705Slinton 		0,	RLEFT|RESCC,
6329705Slinton 		"	decZL	AL\n	cvtZLl	AL,AL\n",
6339705Slinton 
6349705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6359705Slinton 	SAREG,	TUSHORT|TUCHAR,
6369705Slinton 	SONE,	TINT|TLONG,
6379705Slinton 		0,	RLEFT|RESCC,
6389705Slinton 		"	decZL	AL\n	movzZLl	AL,AL\n",
6399705Slinton 
6409705Slinton PLUS,	INAREG|INTAREG|FORCC,
6419705Slinton 	STAREG,	TWORD,
6429705Slinton 	SONE,	TWORD,
6439705Slinton 		0,	RLEFT|RESCC,
6449705Slinton 		"	incZL	AL\n",
6459705Slinton 
6469705Slinton PLUS,	INAREG|INTAREG|FORCC,
6479705Slinton 	STAREG,	TSHORT|TCHAR,
6489705Slinton 	SONE,	TWORD,
6499705Slinton 		0,	RLEFT|RESCC,
6509705Slinton 		"	incZL	AL\n	cvtZLl	AL,AL\n",
6519705Slinton 
6529705Slinton PLUS,	INAREG|INTAREG|FORCC,
6539705Slinton 	STAREG,	TUSHORT|TUCHAR,
6549705Slinton 	SONE,	TWORD,
6559705Slinton 		0,	RLEFT|RESCC,
6569705Slinton 		"	incZL	AL\n	movzZLl	AL,AL\n",
6579705Slinton 
6589705Slinton MINUS,	INAREG|INTAREG|FORCC,
6599705Slinton 	STAREG,	TWORD,
6609705Slinton 	SONE,	TWORD,
6619705Slinton 		0,	RLEFT|RESCC,
6629705Slinton 		"	decZL	AL\n",
6639705Slinton 
6649705Slinton MINUS,	INAREG|INTAREG|FORCC,
6659705Slinton 	STAREG,	TSHORT|TCHAR,
6669705Slinton 	SONE,	TWORD,
6679705Slinton 		0,	RLEFT|RESCC,
6689705Slinton 		"	decZL	AL\n	cvtZLl	AL,AL\n",
6699705Slinton 
6709705Slinton MINUS,	INAREG|INTAREG|FORCC,
6719705Slinton 	STAREG,	TUSHORT|TUCHAR,
6729705Slinton 	SONE,	TWORD,
6739705Slinton 		0,	RLEFT|RESCC,
6749705Slinton 		"	decZL	AL\n	movzZLl	AL,AL\n",
6759705Slinton 
6769705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6779705Slinton 	SAREG|AWD,	TWORD,
6789705Slinton 	SAREG|AWD,	TWORD,
6799705Slinton 		0,	RLEFT|RESCC,
6809705Slinton 		"	OL2	AR,AL\n",
6819705Slinton 
6829705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6839705Slinton 	SAREG,	TWORD,
6849705Slinton 	SAREG,	TSHORT|TUSHORT|TCHAR|TUCHAR,
6859705Slinton 		0,	RLEFT|RESCC,
6869705Slinton 		"	OL2	AR,AL\n",
6879705Slinton 
6889705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6899705Slinton 	AWD,	TSHORT|TUSHORT,
6909705Slinton 	SAREG|AWD,	TSHORT|TUSHORT,
6919705Slinton 		0,	RLEFT|RESCC,
6929705Slinton 		"	OW2	AR,AL\n",
6939705Slinton 
6949705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6959705Slinton 	AWD,	TSHORT|TUSHORT,
6969705Slinton 	SSCON,	TWORD,
6979705Slinton 		0,	RLEFT|RESCC,
6989705Slinton 		"	OW2	AR,AL\n",
6999705Slinton 
7009705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7019705Slinton 	AWD,	TCHAR|TUCHAR,
7029705Slinton 	SAREG|AWD,	TCHAR|TUCHAR,
7039705Slinton 		0,	RLEFT|RESCC,
7049705Slinton 		"	OB2	AR,AL\n",
7059705Slinton 
7069705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7079705Slinton 	AWD,	TCHAR|TUCHAR,
7089705Slinton 	SCCON,	TWORD,
7099705Slinton 		0,	RLEFT|RESCC,
7109705Slinton 		"	OB2	AR,AL\n",
7119705Slinton 
7129705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7139705Slinton 	SAREG,	TSHORT,
7149705Slinton 	SAREG|AWD,	ANYFIXED,
7159705Slinton 		0,	RLEFT|RESCC,
7169705Slinton 		"	OW2	AR,AL\n	cvtZLl	AL,AL\n",
7179705Slinton 
7189705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7199705Slinton 	SAREG,	TUSHORT,
7209705Slinton 	SAREG|AWD,	ANYFIXED,
7219705Slinton 		0,	RLEFT|RESCC,
7229705Slinton 		"	OW2	AR,AL\n	movzZLl	AL,AL\n",
7239705Slinton 
7249705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7259705Slinton 	SAREG,	TCHAR,
7269705Slinton 	SAREG|AWD,	ANYFIXED,
7279705Slinton 		0,	RLEFT|RESCC,
7289705Slinton 		"	OB2	AR,AL\n	cvtZLl	AL,AL\n",
7299705Slinton 
7309705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7319705Slinton 	SAREG,	TUCHAR,
7329705Slinton 	SAREG|AWD,	ANYFIXED,
7339705Slinton 		0,	RLEFT|RESCC,
7349705Slinton 		"	OB2	AR,AL\n	movzZLl	AL,AL\n",
7359705Slinton 
7369705Slinton OPSIMP,	INAREG|INTAREG|FORCC,
7379705Slinton 	STAREG,	ANYFIXED,
7389705Slinton 	SAREG|AWD,	TWORD,
7399705Slinton 		0,	RLEFT|RESCC,
7409705Slinton 		"	OL2	AR,AL\n",
7419705Slinton 
7429705Slinton OPSIMP,	INAREG|INTAREG|FORCC,
7439705Slinton 	SAREG|AWD,	TWORD,
7449705Slinton 	SAREG|AWD,	TWORD,
7459705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
7469705Slinton 		"	OL3	AR,AL,A1\n",
7479705Slinton 
7489705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7499705Slinton 	SAREG|AWD,	TDOUBLE,
7509705Slinton 	SAREG|AWD,	TDOUBLE,
7519705Slinton 		0,	RLEFT|RESCC,
7529705Slinton 		"	OD2	AR,AL\n",
7539705Slinton 
7549705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7559705Slinton 	SAREG|AWD,	TFLOAT,
7569705Slinton 	SAREG|AWD,	TFLOAT,
7579705Slinton 		0,	RLEFT|RESCC,
75817740Sralph #if defined(FORT) || defined(SPRECC)
75916937Sralph 		"	OF2	AR,TAL\n",
76016937Sralph #else
7619705Slinton 		"	OF2	AR,AL\n",
76216937Sralph #endif
7639705Slinton 
7649705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7659705Slinton 	SAREG|AWD,	TDOUBLE,
7669705Slinton 	SAREG|AWD,	TFLOAT,
7679705Slinton 		NAREG|NASR,	RLEFT|RESCC,
7689705Slinton 		"	cvtfd	AR,A1\n	OD2	A1,AL\n",
7699705Slinton 
7709705Slinton ASG OPFLOAT,	INAREG|INTAREG|FOREFF|FORCC,
7719705Slinton 	SAREG|AWD,	TFLOAT,
7729705Slinton 	SAREG|AWD,	TDOUBLE,
7739705Slinton 		NAREG,	RLEFT|RESC1|RESCC,
7749705Slinton 		"	cvtfd	AL,A1\n	OD2	AR,A1\n	cvtdf	A1,AL\n",
7759705Slinton 
7769705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7779705Slinton 	STAREG,	TDOUBLE,
7789705Slinton 	SAREG|AWD,	TDOUBLE,
7799705Slinton 		0,	RLEFT|RESCC,
7809705Slinton 		"	OD2	AR,AL\n",
7819705Slinton 
7829705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7839705Slinton 	SAREG|AWD,	TDOUBLE,
7849705Slinton 	SAREG|AWD,	TDOUBLE,
7859705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
7869705Slinton 		"	OD3	AR,AL,A1\n",
7879705Slinton 
7889705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7899705Slinton 	SAREG|AWD,	TFLOAT,
7909705Slinton 	SAREG|AWD,	TDOUBLE,
7919705Slinton 		NAREG|NASL,	RESC1|RESCC,
7929705Slinton 		"	cvtfd	AL,A1\n	OD2	AR,A1\n",
7939705Slinton 
7949705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7959705Slinton 	SAREG|AWD,	TDOUBLE,
7969705Slinton 	SAREG|AWD,	TFLOAT,
7979705Slinton 		NAREG|NASR,	RESC1|RESCC,
7989705Slinton 		"	cvtfd	AR,A1\n	OD3	A1,AL,A1\n",
7999705Slinton 
80017740Sralph #if defined(FORT) || defined(SPRECC)
8019705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
80216937Sralph 	STAREG,		TFLOAT,
80316937Sralph 	SAREG|AWD,	TFLOAT,
8049705Slinton 		0,	RLEFT|RESCC,
80516937Sralph 		"	OF2	AR,TAL\n",
8069705Slinton 
8079705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
8089705Slinton 	SAREG|AWD,	TFLOAT,
8099705Slinton 	SAREG|AWD,	TFLOAT,
8109705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
8119705Slinton 		"	OF3	AR,AL,TA1\n",
8129705Slinton #endif
8139705Slinton 
8149705Slinton 	/* Default actions for hard trees ... */
8159705Slinton 
8169705Slinton # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
8179705Slinton 
8189705Slinton UNARY MUL, DF( UNARY MUL ),
8199705Slinton 
8209705Slinton INCR, DF(INCR),
8219705Slinton 
8229705Slinton DECR, DF(INCR),
8239705Slinton 
8249705Slinton ASSIGN, DF(ASSIGN),
8259705Slinton 
8269705Slinton STASG, DF(STASG),
8279705Slinton 
8289705Slinton FLD, DF(FLD),
8299705Slinton 
8309705Slinton OPLEAF, DF(NAME),
8319705Slinton 
8329705Slinton OPLOG,	FORCC,
8339705Slinton 	SANY,	TANY,
8349705Slinton 	SANY,	TANY,
8359705Slinton 		REWRITE,	BITYPE,
8369705Slinton 		"",
8379705Slinton 
8389705Slinton OPLOG,	DF(NOT),
8399705Slinton 
8409705Slinton COMOP, DF(COMOP),
8419705Slinton 
8429705Slinton INIT, DF(INIT),
8439705Slinton 
8449705Slinton OPUNARY, DF(UNARY MINUS),
8459705Slinton 
8469705Slinton 
8479705Slinton ASG OPANY, DF(ASG PLUS),
8489705Slinton 
8499705Slinton OPANY, DF(BITYPE),
8509705Slinton 
8519705Slinton FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	"help; I'm in trouble\n" };
852