xref: /csrg-svn/old/pcc/ccom.vax/table.c (revision 32959)
117740Sralph #ifndef lint
2*32959Sdonn static char *sccsid ="@(#)table.c	1.15 (Berkeley) 12/11/87";
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,
4825753Sdonn 	SAREG|AWD,	ANYSIGNED,
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 
6619934Smckusick /* take care of redundant conversions introduced by reclaim() */
6719934Smckusick SCONV,	INTAREG,
6819934Smckusick 	STAREG,	TWORD,
6919934Smckusick 	SANY,	TWORD,
7019934Smckusick 		0,	RLEFT,
7119934Smckusick 		"",
7219934Smckusick 
739705Slinton SCONV,	INTAREG|FORCC,
7416182Sralph 	SAREG|AWD,	TANY,
759705Slinton 	SANY,	TANY,
769705Slinton 		NAREG|NASL,	RESC1|RESCC,
7716182Sralph 		"	ZA\n",
789705Slinton 
799705Slinton 
809705Slinton INIT,	FOREFF,
819705Slinton 	SCON,	TANY,
829705Slinton 	SANY,	TWORD,
839705Slinton 		0,	RNOP,
849705Slinton 		"	.long	CL\n",
859705Slinton 
869705Slinton INIT,	FOREFF,
879705Slinton 	SCON,	TANY,
889705Slinton 	SANY,	TSHORT|TUSHORT,
899705Slinton 		0,	RNOP,
909705Slinton 		"	.word	CL\n",
919705Slinton 
929705Slinton INIT,	FOREFF,
939705Slinton 	SCON,	TANY,
949705Slinton 	SANY,	TCHAR|TUCHAR,
959705Slinton 		0,	RNOP,
969705Slinton 		"	.byte	CL\n",
979705Slinton 
989705Slinton 	/* for the use of fortran only */
999705Slinton 
1009705Slinton GOTO,	FOREFF,
1019705Slinton 	SCON,	TANY,
1029705Slinton 	SANY,	TANY,
1039705Slinton 		0,	RNOP,
1049705Slinton 		"	jbr	CL\n",
1059705Slinton 
1069705Slinton GOTO,	FOREFF,
10717740Sralph 	SNAME|SOREG,	TANY,
1089705Slinton 	SANY,	TANY,
1099705Slinton 		0,	RNOP,
1109705Slinton 		"	jmp	*AL\n",
1119705Slinton 
1129705Slinton GOTO,	FOREFF,
1139705Slinton 	SAREG,	TANY,
1149705Slinton 	SANY,	TANY,
1159705Slinton 		0,	RNOP,
1169705Slinton 		"	jmp	(AL)\n",
1179705Slinton 
1189705Slinton STARG,	FORARG,
1199705Slinton 	SCON|SOREG,	TANY,
1209705Slinton 	SANY,	TANY,
1219705Slinton 		0,	RNULL,
1229705Slinton 		"	subl2	ZT,sp\nZS",
1239705Slinton 
1249705Slinton STASG,	FOREFF,
1259705Slinton 	SNAME|SOREG,	TANY,
1269705Slinton 	SCON|SAREG,	TANY,
1279705Slinton 		0,	RNOP,
1289705Slinton 		"ZS",
1299705Slinton 
1309705Slinton STASG,	INAREG,
1319705Slinton 	SNAME|SOREG,	TANY,
1329705Slinton 	SCON,	TANY,
1339705Slinton 		NAREG,	RESC1,
1349705Slinton 		"ZS	movl	AR,A1\n",
1359705Slinton 
1369705Slinton STASG,	INAREG,
1379705Slinton 	SNAME|SOREG,	TANY,
1389705Slinton 	SAREG,	TANY,
1399705Slinton 		0,	RRIGHT,
1409705Slinton 		"	pushl	AR\nZS	movl	(sp)+,AR\n",
1419705Slinton 
1429705Slinton FLD,	INAREG|INTAREG,
1439705Slinton 	SANY,	TANY,
1449705Slinton 	SFLD,	ANYSIGNED,
1459705Slinton 		NAREG|NASR,	RESC1,
1469705Slinton 		"	extv	$H,$S,AR,A1\n",
1479705Slinton 
1489705Slinton FLD,	INAREG|INTAREG,
1499705Slinton 	SANY,	TANY,
1509705Slinton 	SFLD,	ANYUSIGNED,
1519705Slinton 		NAREG|NASR,	RESC1,
1529705Slinton 		"	extzv	$H,$S,AR,A1\n",
1539705Slinton 
1549705Slinton FLD,	FORARG,
1559705Slinton 	SANY,	TANY,
1569705Slinton 	SFLD,	ANYSIGNED,
1579705Slinton 		0,	RNULL,
1589705Slinton 		"	extv	$H,$S,AR,-(sp)\n",
1599705Slinton 
1609705Slinton FLD,	FORARG,
1619705Slinton 	SANY,	TANY,
1629705Slinton 	SFLD,	ANYUSIGNED,
1639705Slinton 		0,	RNULL,
1649705Slinton 		"	extzv	$H,$S,AR,-(sp)\n",
1659705Slinton 
1669705Slinton OPLOG,	FORCC,
1679705Slinton 	SAREG|AWD,	TWORD,
1689705Slinton 	SAREG|AWD,	TWORD,
1699705Slinton 		0,	RESCC,
1709705Slinton 		"	cmpl	AL,AR\nZP",
1719705Slinton 
1729705Slinton OPLOG,	FORCC,
17319934Smckusick 	SAREG|AWD,	TSHORT,
17419934Smckusick 	SAREG|AWD,	TSHORT,
1759705Slinton 		0,	RESCC,
1769705Slinton 		"	cmpw	AL,AR\nZP",
1779705Slinton 
1789705Slinton OPLOG,	FORCC,
17919934Smckusick 	SAREG|AWD,	TUSHORT,
18019934Smckusick 	SAREG|AWD,	TUSHORT,
1819705Slinton 		0,	RESCC,
18219934Smckusick 		"	cmpw	AL,AR\nZP",
18319934Smckusick 
18419934Smckusick OPLOG,	FORCC,
18519934Smckusick 	SAREG|AWD,	TCHAR,
18619934Smckusick 	SAREG|AWD,	TCHAR,
18719934Smckusick 		0,	RESCC,
1889705Slinton 		"	cmpb	AL,AR\nZP",
1899705Slinton 
1909705Slinton OPLOG,	FORCC,
19119934Smckusick 	SAREG|AWD,	TUCHAR,
19219934Smckusick 	SAREG|AWD,	TUCHAR,
19319934Smckusick 		0,	RESCC,
19419934Smckusick 		"	cmpb	AL,AR\nZP",
19519934Smckusick 
19619934Smckusick OPLOG,	FORCC,
1979705Slinton 	SAREG|AWD,	TSHORT|TUSHORT,
1989705Slinton 	SSCON,	TANY,
1999705Slinton 		0,	RESCC,
2009705Slinton 		"	cmpw	AL,AR\nZP",
2019705Slinton 
2029705Slinton OPLOG,	FORCC,
2039705Slinton 	SAREG|AWD,	TCHAR|TUCHAR,
2049705Slinton 	SCCON,	TANY,
2059705Slinton 		0,	RESCC,
2069705Slinton 		"	cmpb	AL,AR\nZP",
2079705Slinton 
2089705Slinton OPLOG,	FORCC,
2099705Slinton 	SAREG|AWD,	TDOUBLE,
2109705Slinton 	SAREG|AWD,	TDOUBLE,
2119705Slinton 		0,	RESCC,
2129705Slinton 		"	cmpd	AL,AR\nZP",
2139705Slinton 
2149705Slinton OPLOG,	FORCC,
2159705Slinton 	SAREG|AWD,	TDOUBLE,
2169705Slinton 	SAREG|AWD,	TFLOAT,
21717205Sralph 		NAREG|NASR,	RESCC,
2189705Slinton 		"	cvtfd	AR,A1\n	cmpd	AL,A1\nZP",
2199705Slinton 
2209705Slinton OPLOG,	FORCC,
2219705Slinton 	SAREG|AWD,	TFLOAT,
2229705Slinton 	SAREG|AWD,	TDOUBLE,
22317205Sralph 		NAREG|NASL,	RESCC,
2249705Slinton 		"	cvtfd	AL,A1\n	cmpd	A1,AR\nZP",
2259705Slinton 
2269705Slinton OPLOG,	FORCC,
2279705Slinton 	SAREG|AWD,	TFLOAT,
2289705Slinton 	SAREG|AWD,	TFLOAT,
2299705Slinton 		0,	RESCC,
2309705Slinton 		"	cmpf	AL,AR\nZP",
2319705Slinton 
2329705Slinton CCODES,	INAREG|INTAREG,
2339705Slinton 	SANY,	TANY,
2349705Slinton 	SANY,	TANY,
2359705Slinton 		NAREG,	RESC1,
2369705Slinton 		"	movl	$1,A1\nZN",
2379705Slinton 
2389705Slinton UNARY CALL,	INTAREG,
2399705Slinton 	SCON,	TANY,
24016182Sralph 	SANY,	TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
24116182Sralph 		NAREG|NASL,	RESC1,
24216182Sralph 		"	calls	ZC,CL\n",
24316182Sralph 
24416182Sralph UNARY CALL,	INTAREG,
2459705Slinton 	SAREG,	TANY,
2469705Slinton 	SANY,	TWORD|TCHAR|TUCHAR|TSHORT|TUSHORT|TFLOAT|TDOUBLE,
2479705Slinton 		NAREG|NASL,	RESC1,	/* should be 0 */
2489705Slinton 		"	calls	ZC,(AL)\n",
2499705Slinton 
2509705Slinton UNARY CALL,	INAREG|INTAREG,
2519705Slinton 	SNAME,	TANY,
2529705Slinton 	SANY,	TANY,
2539705Slinton 		NAREG|NASL,	RESC1,	/* really reg 0 */
2549705Slinton 		"	calls	ZC,*AL\n",
2559705Slinton 
2569705Slinton UNARY CALL,	INAREG|INTAREG,
2579705Slinton 	SSOREG,	TANY,
2589705Slinton 	SANY,	TANY,
2599705Slinton 		NAREG|NASL,	RESC1,	/* really reg 0 */
2609705Slinton 		"	calls	ZC,*AL\n",
2619705Slinton 
2629705Slinton ASG RS,	INAREG|FOREFF|FORCC,
2639705Slinton 	SAREG,	TWORD,
2649705Slinton 	SCON,	TINT,
2659705Slinton 		0,	RLEFT|RESCC,
2669705Slinton 		"	extzv	AR,ZU,AL,AL\n",
2679705Slinton 
2689705Slinton ASG RS,	INAREG|FOREFF|FORCC,
2699705Slinton 	SAREG,	TWORD,
2709705Slinton 	SAREG,	ANYFIXED,
2719705Slinton 		NAREG,	RLEFT|RESCC,
2729705Slinton 		"	subl3	AR,$32,A1\n	extzv	AR,A1,AL,AL\n",
2739705Slinton 
2749705Slinton ASG RS,	INAREG|FOREFF|FORCC,
2759705Slinton 	SAREG,	TWORD,
2769705Slinton 	SAREG|AWD,	TWORD,
2779705Slinton 		NAREG,	RLEFT|RESCC,
2789705Slinton 		"	subl3	AR,$32,A1\n	extzv	AR,A1,AL,AL\n",
2799705Slinton 
2809705Slinton RS,	INAREG|INTAREG|FORCC,
2819705Slinton 	SAREG,	TWORD,
2829705Slinton 	SCON,	TINT,
2839705Slinton 		NAREG|NASL,	RESC1|RESCC,
2849705Slinton 		"	extzv	AR,ZU,AL,A1\n",
2859705Slinton 
2869705Slinton ASG LS,	INAREG|FOREFF|FORCC,
2879705Slinton 	SAREG|AWD,	TWORD,
2889705Slinton 	SAREG|NIAWD,	ANYSIGNED|ANYUSIGNED,
2899705Slinton 		0,	RLEFT|RESCC,
2909705Slinton 		"	ashl	AR,AL,AL\n",
2919705Slinton 
2929705Slinton ASG LS,	INAREG|FOREFF|FORCC,
2939705Slinton 	SAREG|AWD,	TWORD,
2949705Slinton 	SSOREG,	ANYSIGNED|ANYUSIGNED,
2959705Slinton 		0,	RLEFT|RESCC,
2969705Slinton 		"	ashl	AR,AL,AL\n",
2979705Slinton 
2989705Slinton ASG LS,	INAREG|FOREFF|FORCC,
2999705Slinton 	SAREG|AWD,	TWORD,
3009705Slinton 	SOREG,	ANYSIGNED|ANYUSIGNED,
3019705Slinton 		NAREG,	RLEFT|RESCC,
3029705Slinton 		"	ZB	AR,A1\n	ashl	A1,AL,AL\n",
3039705Slinton 
3049705Slinton LS,	INAREG|INTAREG|FORCC,
3059705Slinton 	SAREG|AWD,	TWORD,
3069705Slinton 	SAREG|NIAWD,	ANYSIGNED|ANYUSIGNED,
3079705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
3089705Slinton 		"	ashl	AR,AL,A1\n",
3099705Slinton 
3109705Slinton LS,	INAREG|INTAREG|FORCC,
3119705Slinton 	SAREG|AWD,	TWORD,
3129705Slinton 	SSOREG,	ANYSIGNED|ANYUSIGNED,
3139705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
3149705Slinton 		"	ashl	AR,AL,A1\n",
3159705Slinton 
3169705Slinton LS,	INAREG|INTAREG|FORCC,
3179705Slinton 	SAREG|AWD,	TWORD,
3189705Slinton 	SOREG,	ANYSIGNED|ANYUSIGNED,
3199705Slinton 		NAREG|NASR,	RESC1|RESCC,
3209705Slinton 		"	ZB	AR,A1\n	ashl	A1,AL,A1\n",
3219705Slinton 
3229705Slinton INCR,	FOREFF,
3239705Slinton 	AWD,	TANY,
3249705Slinton 	SCON,	TANY,
3259705Slinton 		0,	RLEFT,
3269705Slinton 		"	ZE\n",
3279705Slinton 
3289705Slinton DECR,	FOREFF,
3299705Slinton 	AWD,	TANY,
3309705Slinton 	SCON,	TANY,
3319705Slinton 		0,	RLEFT,
3329705Slinton 		"	ZE\n",
3339705Slinton 
3349705Slinton INCR,	FOREFF,
3359705Slinton 	SAREG,	TWORD,
3369705Slinton 	SCON,	TANY,
3379705Slinton 		0,	RLEFT,
3389705Slinton 		"	ZE\n",
3399705Slinton 
3409705Slinton DECR,	FOREFF,
3419705Slinton 	SAREG,	TWORD,
3429705Slinton 	SCON,	TANY,
3439705Slinton 		0,	RLEFT,
3449705Slinton 		"	ZE\n",
3459705Slinton 
3469705Slinton /* jwf INCR and DECR for SAREG TCHAR|TSHORT matched by ASG PLUS etc */
3479705Slinton 
3489705Slinton INCR,	INAREG|INTAREG,
3499705Slinton 	AWD,	TANY,
3509705Slinton 	SCON,	TANY,
3519705Slinton 		NAREG,	RESC1,
3529705Slinton 		"	ZD\n",
3539705Slinton 
3549705Slinton DECR,	INAREG|INTAREG,
3559705Slinton 	AWD,	TANY,
3569705Slinton 	SCON,	TANY,
3579705Slinton 		NAREG,	RESC1,
3589705Slinton 		"	ZD\n",
3599705Slinton 
3609705Slinton INCR,	INAREG|INTAREG,
3619705Slinton 	SAREG,	TWORD,
3629705Slinton 	SCON,	TANY,
3639705Slinton 		NAREG,	RESC1,
3649705Slinton 		"	ZD\n",
3659705Slinton 
3669705Slinton DECR,	INAREG|INTAREG,
3679705Slinton 	SAREG,	TWORD,
3689705Slinton 	SCON,	TANY,
3699705Slinton 		NAREG,	RESC1,
3709705Slinton 		"	ZD\n",
3719705Slinton 
3729705Slinton ASSIGN,	INAREG|FOREFF|FORCC,
37316182Sralph 	SAREG|AWD,	TDOUBLE,
37416182Sralph 	SAREG|AWD,	TUCHAR|TUSHORT,
37516182Sralph 		NAREG|NASR,	RLEFT|RESCC,
37616182Sralph 		"	movzZRl	AR,A1\n	cvtld	A1,AL\n",
37716182Sralph 
37816182Sralph ASSIGN,	INAREG|FOREFF|FORCC,
37916182Sralph 	SAREG|AWD,	TFLOAT,
38016182Sralph 	SAREG|AWD,	TUCHAR|TUSHORT,
38116182Sralph 		NAREG|NASR,	RLEFT|RESCC,
38216182Sralph 		"	movzZRl	AR,A1\n	cvtlf	A1,AL\n",
38316182Sralph 
38416182Sralph ASSIGN,	INAREG|FOREFF|FORCC,
3859705Slinton 	SAREG|AWD,	TANY,
3869705Slinton 	SAREG|AWD,	TANY,
38725582Sbloom 		0,	RLEFT|RESCC,
3889705Slinton 		"	ZA\n",
3899705Slinton 
39032958Sdonn ASSIGN,	FOREFF,
3919705Slinton 	SFLD,	TANY,
3929705Slinton 	SAREG|AWD,	TWORD,
39332958Sdonn 		0,	RNOP,
3949705Slinton 		"	insv	AR,$H,$S,AL\n",
3959705Slinton 
39632958Sdonn ASSIGN,	INAREG,
39732958Sdonn 	SFLD,	TANY,
39832958Sdonn 	SAREG|AWD,	TWORD,
39932958Sdonn 		NAREG,	RESC1,
40032958Sdonn 		"	insv	AR,$H,$S,AL\n	extv	$H,$S,AL,A1\n",
40132958Sdonn 
4029705Slinton ASSIGN,	INAREG|FOREFF|FORCC,
4039705Slinton 	SAREG|AWD,	TWORD,
4049705Slinton 	SFLD,	ANYSIGNED,
4059705Slinton 		0,	RLEFT|RESCC,
4069705Slinton 		"	extv	$H,$S,AR,AL\n",
4079705Slinton 
4089705Slinton ASSIGN,	INAREG|FOREFF|FORCC,
4099705Slinton 	SAREG|AWD,	TWORD,
4109705Slinton 	SFLD,	ANYUSIGNED,
4119705Slinton 		0,	RLEFT|RESCC,
4129705Slinton 		"	extzv	$H,$S,AR,AL\n",
4139705Slinton 
4149705Slinton /* dummy UNARY MUL entry to get U* to possibly match OPLTYPE */
4159705Slinton UNARY MUL,	FOREFF,
4169705Slinton 	SCC,	TANY,
4179705Slinton 	SCC,	TANY,
4189705Slinton 		0,	RNULL,
4199705Slinton 		"	HELP HELP HELP\n",
4209705Slinton 
421*32959Sdonn OREG,	INTEMP,
422*32959Sdonn 	SANY,	TANY,
423*32959Sdonn 	SOREG,	TDOUBLE,
424*32959Sdonn 		2*NTEMP,	RESC1,
425*32959Sdonn 		"	movd	AR,A1\n",
426*32959Sdonn 
427*32959Sdonn OREG,	INTEMP,
428*32959Sdonn 	SANY,	TANY,
429*32959Sdonn 	SOREG,	TANY,
430*32959Sdonn 		NTEMP,	RESC1,
431*32959Sdonn 		"	movZF	AR,A1\n",
432*32959Sdonn 
4339705Slinton REG,	INTEMP,
4349705Slinton 	SANY,	TANY,
4359705Slinton 	SAREG,	TDOUBLE,
4369705Slinton 		2*NTEMP,	RESC1,
4379705Slinton 		"	movd	AR,A1\n",
4389705Slinton 
4399705Slinton REG,	INTEMP,
4409705Slinton 	SANY,	TANY,
4419705Slinton 	SAREG,	TANY,
4429705Slinton 		NTEMP,	RESC1,
4439705Slinton 		"	movZF	AR,A1\n",
4449705Slinton 
44517740Sralph #if defined(FORT) || defined(SPRECC)
44617740Sralph REG,	FORARG,
4479705Slinton 	SANY,	TANY,
4489705Slinton 	SAREG,	TFLOAT,
4499705Slinton 		0,	RNULL,
4509705Slinton 		"	cvtfd	AR,-(sp)\n",
4519705Slinton 
4529705Slinton REG,	FORARG,
4539705Slinton 	SANY,	TANY,
4549705Slinton 	SAREG,	TDOUBLE,
4559705Slinton 		0,	RNULL,
4569705Slinton 		"	movZR	AR,-(sp)\n",
4579705Slinton #endif
4589705Slinton 
4599705Slinton OPLEAF,	FOREFF,
4609705Slinton 	SANY,	TANY,
4619705Slinton 	SAREG|AWD,	TANY,
4629705Slinton 		0,	RLEFT,
4639705Slinton 		"",
4649705Slinton 
4659705Slinton OPLTYPE,	INAREG|INTAREG,
4669705Slinton 	SANY,	TANY,
4679705Slinton 	SANY,	TANY,
4689705Slinton 		NAREG|NASR,	RESC1,
4699705Slinton 		"	ZA\n",
4709705Slinton 
4719705Slinton OPLTYPE,	FORCC,
4729705Slinton 	SANY,	TANY,
4739705Slinton 	SANY,	TANY,
4749705Slinton 		0,	RESCC,
4759705Slinton 		"	tstZR	AR\n",
4769705Slinton 
4779705Slinton OPLTYPE,	FORARG,
4789705Slinton 	SANY,	TANY,
4799705Slinton 	SANY,	TWORD,
4809705Slinton 		0,	RNULL,
4819705Slinton 		"	pushl	AR\n",
4829705Slinton 
4839705Slinton OPLTYPE,	FORARG,
4849705Slinton 	SANY,	TANY,
4859705Slinton 	SANY,	TCHAR|TSHORT,
4869705Slinton 		0,	RNULL,
4879705Slinton 		"	cvtZRl	AR,-(sp)\n",
4889705Slinton 
4899705Slinton OPLTYPE,	FORARG,
4909705Slinton 	SANY,	TANY,
4919705Slinton 	SANY,	TUCHAR|TUSHORT,
4929705Slinton 		0,	RNULL,
4939705Slinton 		"	movzZRl	AR,-(sp)\n",
4949705Slinton 
4959705Slinton OPLTYPE,	FORARG,
4969705Slinton 	SANY,	TANY,
4979705Slinton 	SANY,	TDOUBLE,
4989705Slinton 		0,	RNULL,
4999705Slinton 		"	movd	AR,-(sp)\n",
5009705Slinton 
5019705Slinton OPLTYPE,	FORARG,
5029705Slinton 	SANY,	TANY,
5039705Slinton 	SANY,	TFLOAT,
5049705Slinton 		0,	RNULL,
5059705Slinton 		"	cvtfd	AR,-(sp)\n",
5069705Slinton 
50717740Sralph #if defined(FORT) || defined(SPRECC)
5089705Slinton UNARY MINUS,	INTAREG|FORCC,
50924417Smckusick 	SAREG|AWD,	TFLOAT,
51016182Sralph 	SANY,	TANY,
51116182Sralph 		NAREG|NASL,	RESC1|RESCC,
51216182Sralph 		"	mnegZL	TAL,A1\n",
51316182Sralph 
51424417Smckusick #endif
51516182Sralph 
51616182Sralph UNARY MINUS,	INTAREG|FORCC,
5179705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE,
5189705Slinton 	SANY,	TANY,
5199705Slinton 		NAREG|NASL,	RESC1|RESCC,
5209705Slinton 		"	mnegZL	AL,A1\n",
5219705Slinton 
5229705Slinton COMPL,	INTAREG|FORCC,
52323479Smckusick 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5249705Slinton 	SANY,	TANY,
5259705Slinton 		NAREG|NASL,	RESC1|RESCC,
5269705Slinton 		"	mcomZL	AL,A1\n",
5279705Slinton 
5289705Slinton COMPL,	INTAREG|FORCC,
5299705Slinton 	SAREG|AWD,	ANYSIGNED|ANYUSIGNED,
5309705Slinton 	SANY,	TANY,
5319705Slinton 		NAREG|NASL,	RESC1|RESCC,
5329705Slinton 		"	cvtZLl	AL,A1\n	mcoml	A1,A1\n",
5339705Slinton 
5349705Slinton AND,	FORCC,
5359705Slinton 	SAREG|AWD,	TWORD,
5369705Slinton 	SCON,	TWORD,
5379705Slinton 		0,	RESCC,
5389705Slinton 		"	bitl	ZZ,AL\n",
5399705Slinton 
5409705Slinton AND,	FORCC,
5419705Slinton 	SAREG|AWD,	TSHORT|TUSHORT,
5429705Slinton 	SSCON,	TWORD,
5439705Slinton 		0,	RESCC,
5449705Slinton 		"	bitw	ZZ,AL\n",
5459705Slinton 
5469705Slinton AND,	FORCC,
5479705Slinton 	SAREG|AWD,	TCHAR|TUCHAR,
5489705Slinton 	SCCON,	TWORD,
5499705Slinton 		0,	RESCC,
5509705Slinton 		"	bitb	ZZ,AL\n",
5519705Slinton 
5529705Slinton ASG AND,	INAREG|FOREFF|FORCC,
5539705Slinton 	SAREG,	TWORD,
5549705Slinton 	SCON,	TWORD,
5559705Slinton 		0,	RLEFT|RESCC,
5569705Slinton 		"	bicl2	AR,AL\n",
5579705Slinton 
5589705Slinton ASG OPMUL,	INAREG|FOREFF|FORCC,
5599705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5609705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5619705Slinton 		0,	RLEFT|RESCC,
5629705Slinton 		"	OL2	AR,AL\n",
5639705Slinton 
5649705Slinton OPMUL,	INAREG|INTAREG|FORCC,
5659705Slinton 	STAREG,	TINT|TUNSIGNED|TLONG|TULONG,
5669705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5679705Slinton 		0,	RLEFT|RESCC,
5689705Slinton 		"	OL2	AR,AL\n",
5699705Slinton 
5709705Slinton OPMUL,	INAREG|INTAREG|FORCC,
5719705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5729705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5739705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
5749705Slinton 		"	OL3	AR,AL,A1\n",
5759705Slinton 
5769705Slinton ASG MOD,	INAREG|INTAREG|FOREFF|FORCC,
5779705Slinton 	SAREG,	TINT|TUNSIGNED|TLONG|TULONG,
5789705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5799705Slinton 		NAREG,	RLEFT|RESCC,
5809705Slinton 		"	divl3	AR,AL,A1\n	mull2	AR,A1\n	subl2	A1,AL\n",
5819705Slinton 
5829705Slinton MOD,	INAREG|INTAREG,
5839705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5849705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5859705Slinton 		NAREG,	RESC1,
5869705Slinton 		"	divl3	AR,AL,A1\n	mull2	AR,A1\n	subl3	A1,AL,A1\n",
5879705Slinton 
5889705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
5899705Slinton 	SAREG,	TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
5909705Slinton 	SONE,	TINT|TLONG,
5919705Slinton 		0,	RLEFT|RESCC,
5929705Slinton 		"	incZL	AL\n",
5939705Slinton 
5949705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
5959705Slinton 	AWD,	ANYSIGNED|ANYUSIGNED,
5969705Slinton 	SONE,	TINT|TLONG,
5979705Slinton 		0,	RLEFT|RESCC,
5989705Slinton 		"	incZL	AL\n",
5999705Slinton 
6009705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
6019705Slinton 	SAREG,	TSHORT|TCHAR,
6029705Slinton 	SONE,	TINT|TLONG,
6039705Slinton 		0,	RLEFT|RESCC,
6049705Slinton 		"	incZL	AL\n	cvtZLl	AL,AL\n",
6059705Slinton 
6069705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
6079705Slinton 	SAREG,	TUSHORT|TUCHAR,
6089705Slinton 	SONE,	TINT|TLONG,
6099705Slinton 		0,	RLEFT|RESCC,
6109705Slinton 		"	incZL	AL\n	movzZLl	AL,AL\n",
6119705Slinton 
6129705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6139705Slinton 	SAREG,	TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
6149705Slinton 	SONE,	TINT|TLONG,
6159705Slinton 		0,	RLEFT|RESCC,
6169705Slinton 		"	decZL	AL\n",
6179705Slinton 
6189705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6199705Slinton 	AWD,	ANYSIGNED|ANYUSIGNED,
6209705Slinton 	SONE,	TINT|TLONG,
6219705Slinton 		0,	RLEFT|RESCC,
6229705Slinton 		"	decZL	AL\n",
6239705Slinton 
6249705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6259705Slinton 	SAREG,	TSHORT|TCHAR,
6269705Slinton 	SONE,	TINT|TLONG,
6279705Slinton 		0,	RLEFT|RESCC,
6289705Slinton 		"	decZL	AL\n	cvtZLl	AL,AL\n",
6299705Slinton 
6309705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6319705Slinton 	SAREG,	TUSHORT|TUCHAR,
6329705Slinton 	SONE,	TINT|TLONG,
6339705Slinton 		0,	RLEFT|RESCC,
6349705Slinton 		"	decZL	AL\n	movzZLl	AL,AL\n",
6359705Slinton 
6369705Slinton PLUS,	INAREG|INTAREG|FORCC,
6379705Slinton 	STAREG,	TWORD,
6389705Slinton 	SONE,	TWORD,
6399705Slinton 		0,	RLEFT|RESCC,
6409705Slinton 		"	incZL	AL\n",
6419705Slinton 
6429705Slinton PLUS,	INAREG|INTAREG|FORCC,
6439705Slinton 	STAREG,	TSHORT|TCHAR,
6449705Slinton 	SONE,	TWORD,
6459705Slinton 		0,	RLEFT|RESCC,
6469705Slinton 		"	incZL	AL\n	cvtZLl	AL,AL\n",
6479705Slinton 
6489705Slinton PLUS,	INAREG|INTAREG|FORCC,
6499705Slinton 	STAREG,	TUSHORT|TUCHAR,
6509705Slinton 	SONE,	TWORD,
6519705Slinton 		0,	RLEFT|RESCC,
6529705Slinton 		"	incZL	AL\n	movzZLl	AL,AL\n",
6539705Slinton 
6549705Slinton MINUS,	INAREG|INTAREG|FORCC,
6559705Slinton 	STAREG,	TWORD,
6569705Slinton 	SONE,	TWORD,
6579705Slinton 		0,	RLEFT|RESCC,
6589705Slinton 		"	decZL	AL\n",
6599705Slinton 
6609705Slinton MINUS,	INAREG|INTAREG|FORCC,
6619705Slinton 	STAREG,	TSHORT|TCHAR,
6629705Slinton 	SONE,	TWORD,
6639705Slinton 		0,	RLEFT|RESCC,
6649705Slinton 		"	decZL	AL\n	cvtZLl	AL,AL\n",
6659705Slinton 
6669705Slinton MINUS,	INAREG|INTAREG|FORCC,
6679705Slinton 	STAREG,	TUSHORT|TUCHAR,
6689705Slinton 	SONE,	TWORD,
6699705Slinton 		0,	RLEFT|RESCC,
6709705Slinton 		"	decZL	AL\n	movzZLl	AL,AL\n",
6719705Slinton 
6729705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6739705Slinton 	SAREG|AWD,	TWORD,
6749705Slinton 	SAREG|AWD,	TWORD,
6759705Slinton 		0,	RLEFT|RESCC,
6769705Slinton 		"	OL2	AR,AL\n",
6779705Slinton 
6789705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6799705Slinton 	SAREG,	TWORD,
6809705Slinton 	SAREG,	TSHORT|TUSHORT|TCHAR|TUCHAR,
6819705Slinton 		0,	RLEFT|RESCC,
6829705Slinton 		"	OL2	AR,AL\n",
6839705Slinton 
6849705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6859705Slinton 	AWD,	TSHORT|TUSHORT,
6869705Slinton 	SAREG|AWD,	TSHORT|TUSHORT,
6879705Slinton 		0,	RLEFT|RESCC,
6889705Slinton 		"	OW2	AR,AL\n",
6899705Slinton 
6909705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6919705Slinton 	AWD,	TSHORT|TUSHORT,
6929705Slinton 	SSCON,	TWORD,
6939705Slinton 		0,	RLEFT|RESCC,
6949705Slinton 		"	OW2	AR,AL\n",
6959705Slinton 
6969705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6979705Slinton 	AWD,	TCHAR|TUCHAR,
6989705Slinton 	SAREG|AWD,	TCHAR|TUCHAR,
6999705Slinton 		0,	RLEFT|RESCC,
7009705Slinton 		"	OB2	AR,AL\n",
7019705Slinton 
7029705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7039705Slinton 	AWD,	TCHAR|TUCHAR,
7049705Slinton 	SCCON,	TWORD,
7059705Slinton 		0,	RLEFT|RESCC,
7069705Slinton 		"	OB2	AR,AL\n",
7079705Slinton 
7089705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7099705Slinton 	SAREG,	TSHORT,
7109705Slinton 	SAREG|AWD,	ANYFIXED,
7119705Slinton 		0,	RLEFT|RESCC,
7129705Slinton 		"	OW2	AR,AL\n	cvtZLl	AL,AL\n",
7139705Slinton 
7149705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7159705Slinton 	SAREG,	TUSHORT,
7169705Slinton 	SAREG|AWD,	ANYFIXED,
7179705Slinton 		0,	RLEFT|RESCC,
7189705Slinton 		"	OW2	AR,AL\n	movzZLl	AL,AL\n",
7199705Slinton 
7209705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7219705Slinton 	SAREG,	TCHAR,
7229705Slinton 	SAREG|AWD,	ANYFIXED,
7239705Slinton 		0,	RLEFT|RESCC,
7249705Slinton 		"	OB2	AR,AL\n	cvtZLl	AL,AL\n",
7259705Slinton 
7269705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7279705Slinton 	SAREG,	TUCHAR,
7289705Slinton 	SAREG|AWD,	ANYFIXED,
7299705Slinton 		0,	RLEFT|RESCC,
7309705Slinton 		"	OB2	AR,AL\n	movzZLl	AL,AL\n",
7319705Slinton 
7329705Slinton OPSIMP,	INAREG|INTAREG|FORCC,
7339705Slinton 	STAREG,	ANYFIXED,
7349705Slinton 	SAREG|AWD,	TWORD,
7359705Slinton 		0,	RLEFT|RESCC,
7369705Slinton 		"	OL2	AR,AL\n",
7379705Slinton 
7389705Slinton OPSIMP,	INAREG|INTAREG|FORCC,
7399705Slinton 	SAREG|AWD,	TWORD,
7409705Slinton 	SAREG|AWD,	TWORD,
7419705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
7429705Slinton 		"	OL3	AR,AL,A1\n",
7439705Slinton 
7449705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7459705Slinton 	SAREG|AWD,	TDOUBLE,
7469705Slinton 	SAREG|AWD,	TDOUBLE,
7479705Slinton 		0,	RLEFT|RESCC,
7489705Slinton 		"	OD2	AR,AL\n",
7499705Slinton 
7509705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7519705Slinton 	SAREG|AWD,	TFLOAT,
7529705Slinton 	SAREG|AWD,	TFLOAT,
7539705Slinton 		0,	RLEFT|RESCC,
75417740Sralph #if defined(FORT) || defined(SPRECC)
75516937Sralph 		"	OF2	AR,TAL\n",
75616937Sralph #else
7579705Slinton 		"	OF2	AR,AL\n",
75816937Sralph #endif
7599705Slinton 
7609705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7619705Slinton 	SAREG|AWD,	TDOUBLE,
7629705Slinton 	SAREG|AWD,	TFLOAT,
7639705Slinton 		NAREG|NASR,	RLEFT|RESCC,
7649705Slinton 		"	cvtfd	AR,A1\n	OD2	A1,AL\n",
7659705Slinton 
7669705Slinton ASG OPFLOAT,	INAREG|INTAREG|FOREFF|FORCC,
7679705Slinton 	SAREG|AWD,	TFLOAT,
7689705Slinton 	SAREG|AWD,	TDOUBLE,
7699705Slinton 		NAREG,	RLEFT|RESC1|RESCC,
7709705Slinton 		"	cvtfd	AL,A1\n	OD2	AR,A1\n	cvtdf	A1,AL\n",
7719705Slinton 
77225753Sdonn ASG OPFLOAT,	INAREG|FOREFF|FORCC,
77325753Sdonn 	SAREG|AWD,	ANYFIXED,
77425753Sdonn #ifndef SPRECC
77525753Sdonn 	SAREG|AWD,	TDOUBLE,		/* force FLOAT to register */
77625753Sdonn #else
77725753Sdonn 	SAREG|AWD,	TFLOAT|TDOUBLE,
77825753Sdonn #endif
77925753Sdonn 		NAREG,	RLEFT|RESCC,	/* usable() knows we need a reg pair */
78025753Sdonn 		"	ZG\n",
78125753Sdonn 
7829705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7839705Slinton 	STAREG,	TDOUBLE,
7849705Slinton 	SAREG|AWD,	TDOUBLE,
7859705Slinton 		0,	RLEFT|RESCC,
7869705Slinton 		"	OD2	AR,AL\n",
7879705Slinton 
7889705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7899705Slinton 	SAREG|AWD,	TDOUBLE,
7909705Slinton 	SAREG|AWD,	TDOUBLE,
7919705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
7929705Slinton 		"	OD3	AR,AL,A1\n",
7939705Slinton 
7949705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7959705Slinton 	SAREG|AWD,	TFLOAT,
7969705Slinton 	SAREG|AWD,	TDOUBLE,
7979705Slinton 		NAREG|NASL,	RESC1|RESCC,
7989705Slinton 		"	cvtfd	AL,A1\n	OD2	AR,A1\n",
7999705Slinton 
8009705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
8019705Slinton 	SAREG|AWD,	TDOUBLE,
8029705Slinton 	SAREG|AWD,	TFLOAT,
8039705Slinton 		NAREG|NASR,	RESC1|RESCC,
8049705Slinton 		"	cvtfd	AR,A1\n	OD3	A1,AL,A1\n",
8059705Slinton 
80617740Sralph #if defined(FORT) || defined(SPRECC)
8079705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
80816937Sralph 	STAREG,		TFLOAT,
80916937Sralph 	SAREG|AWD,	TFLOAT,
8109705Slinton 		0,	RLEFT|RESCC,
81116937Sralph 		"	OF2	AR,TAL\n",
8129705Slinton 
8139705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
8149705Slinton 	SAREG|AWD,	TFLOAT,
8159705Slinton 	SAREG|AWD,	TFLOAT,
8169705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
8179705Slinton 		"	OF3	AR,AL,TA1\n",
8189705Slinton #endif
8199705Slinton 
8209705Slinton 	/* Default actions for hard trees ... */
8219705Slinton 
8229705Slinton # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
8239705Slinton 
8249705Slinton UNARY MUL, DF( UNARY MUL ),
8259705Slinton 
8269705Slinton INCR, DF(INCR),
8279705Slinton 
8289705Slinton DECR, DF(INCR),
8299705Slinton 
8309705Slinton ASSIGN, DF(ASSIGN),
8319705Slinton 
8329705Slinton STASG, DF(STASG),
8339705Slinton 
8349705Slinton FLD, DF(FLD),
8359705Slinton 
8369705Slinton OPLEAF, DF(NAME),
8379705Slinton 
8389705Slinton OPLOG,	FORCC,
8399705Slinton 	SANY,	TANY,
8409705Slinton 	SANY,	TANY,
8419705Slinton 		REWRITE,	BITYPE,
8429705Slinton 		"",
8439705Slinton 
8449705Slinton OPLOG,	DF(NOT),
8459705Slinton 
8469705Slinton COMOP, DF(COMOP),
8479705Slinton 
8489705Slinton INIT, DF(INIT),
8499705Slinton 
8509705Slinton OPUNARY, DF(UNARY MINUS),
8519705Slinton 
8529705Slinton 
8539705Slinton ASG OPANY, DF(ASG PLUS),
8549705Slinton 
8559705Slinton OPANY, DF(BITYPE),
8569705Slinton 
8579705Slinton FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	"help; I'm in trouble\n" };
858