xref: /csrg-svn/old/pcc/ccom.vax/table.c (revision 32958)
117740Sralph #ifndef lint
2*32958Sdonn static char *sccsid ="@(#)table.c	1.14 (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 
390*32958Sdonn ASSIGN,	FOREFF,
3919705Slinton 	SFLD,	TANY,
3929705Slinton 	SAREG|AWD,	TWORD,
393*32958Sdonn 		0,	RNOP,
3949705Slinton 		"	insv	AR,$H,$S,AL\n",
3959705Slinton 
396*32958Sdonn ASSIGN,	INAREG,
397*32958Sdonn 	SFLD,	TANY,
398*32958Sdonn 	SAREG|AWD,	TWORD,
399*32958Sdonn 		NAREG,	RESC1,
400*32958Sdonn 		"	insv	AR,$H,$S,AL\n	extv	$H,$S,AL,A1\n",
401*32958Sdonn 
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 
4219705Slinton REG,	INTEMP,
4229705Slinton 	SANY,	TANY,
4239705Slinton 	SAREG,	TDOUBLE,
4249705Slinton 		2*NTEMP,	RESC1,
4259705Slinton 		"	movd	AR,A1\n",
4269705Slinton 
4279705Slinton REG,	INTEMP,
4289705Slinton 	SANY,	TANY,
4299705Slinton 	SAREG,	TANY,
4309705Slinton 		NTEMP,	RESC1,
4319705Slinton 		"	movZF	AR,A1\n",
4329705Slinton 
43317740Sralph #if defined(FORT) || defined(SPRECC)
43417740Sralph REG,	FORARG,
4359705Slinton 	SANY,	TANY,
4369705Slinton 	SAREG,	TFLOAT,
4379705Slinton 		0,	RNULL,
4389705Slinton 		"	cvtfd	AR,-(sp)\n",
4399705Slinton 
4409705Slinton REG,	FORARG,
4419705Slinton 	SANY,	TANY,
4429705Slinton 	SAREG,	TDOUBLE,
4439705Slinton 		0,	RNULL,
4449705Slinton 		"	movZR	AR,-(sp)\n",
4459705Slinton #endif
4469705Slinton 
4479705Slinton OPLEAF,	FOREFF,
4489705Slinton 	SANY,	TANY,
4499705Slinton 	SAREG|AWD,	TANY,
4509705Slinton 		0,	RLEFT,
4519705Slinton 		"",
4529705Slinton 
4539705Slinton OPLTYPE,	INAREG|INTAREG,
4549705Slinton 	SANY,	TANY,
4559705Slinton 	SANY,	TANY,
4569705Slinton 		NAREG|NASR,	RESC1,
4579705Slinton 		"	ZA\n",
4589705Slinton 
4599705Slinton OPLTYPE,	FORCC,
4609705Slinton 	SANY,	TANY,
4619705Slinton 	SANY,	TANY,
4629705Slinton 		0,	RESCC,
4639705Slinton 		"	tstZR	AR\n",
4649705Slinton 
4659705Slinton OPLTYPE,	FORARG,
4669705Slinton 	SANY,	TANY,
4679705Slinton 	SANY,	TWORD,
4689705Slinton 		0,	RNULL,
4699705Slinton 		"	pushl	AR\n",
4709705Slinton 
4719705Slinton OPLTYPE,	FORARG,
4729705Slinton 	SANY,	TANY,
4739705Slinton 	SANY,	TCHAR|TSHORT,
4749705Slinton 		0,	RNULL,
4759705Slinton 		"	cvtZRl	AR,-(sp)\n",
4769705Slinton 
4779705Slinton OPLTYPE,	FORARG,
4789705Slinton 	SANY,	TANY,
4799705Slinton 	SANY,	TUCHAR|TUSHORT,
4809705Slinton 		0,	RNULL,
4819705Slinton 		"	movzZRl	AR,-(sp)\n",
4829705Slinton 
4839705Slinton OPLTYPE,	FORARG,
4849705Slinton 	SANY,	TANY,
4859705Slinton 	SANY,	TDOUBLE,
4869705Slinton 		0,	RNULL,
4879705Slinton 		"	movd	AR,-(sp)\n",
4889705Slinton 
4899705Slinton OPLTYPE,	FORARG,
4909705Slinton 	SANY,	TANY,
4919705Slinton 	SANY,	TFLOAT,
4929705Slinton 		0,	RNULL,
4939705Slinton 		"	cvtfd	AR,-(sp)\n",
4949705Slinton 
49517740Sralph #if defined(FORT) || defined(SPRECC)
4969705Slinton UNARY MINUS,	INTAREG|FORCC,
49724417Smckusick 	SAREG|AWD,	TFLOAT,
49816182Sralph 	SANY,	TANY,
49916182Sralph 		NAREG|NASL,	RESC1|RESCC,
50016182Sralph 		"	mnegZL	TAL,A1\n",
50116182Sralph 
50224417Smckusick #endif
50316182Sralph 
50416182Sralph UNARY MINUS,	INTAREG|FORCC,
5059705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG|TDOUBLE,
5069705Slinton 	SANY,	TANY,
5079705Slinton 		NAREG|NASL,	RESC1|RESCC,
5089705Slinton 		"	mnegZL	AL,A1\n",
5099705Slinton 
5109705Slinton COMPL,	INTAREG|FORCC,
51123479Smckusick 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5129705Slinton 	SANY,	TANY,
5139705Slinton 		NAREG|NASL,	RESC1|RESCC,
5149705Slinton 		"	mcomZL	AL,A1\n",
5159705Slinton 
5169705Slinton COMPL,	INTAREG|FORCC,
5179705Slinton 	SAREG|AWD,	ANYSIGNED|ANYUSIGNED,
5189705Slinton 	SANY,	TANY,
5199705Slinton 		NAREG|NASL,	RESC1|RESCC,
5209705Slinton 		"	cvtZLl	AL,A1\n	mcoml	A1,A1\n",
5219705Slinton 
5229705Slinton AND,	FORCC,
5239705Slinton 	SAREG|AWD,	TWORD,
5249705Slinton 	SCON,	TWORD,
5259705Slinton 		0,	RESCC,
5269705Slinton 		"	bitl	ZZ,AL\n",
5279705Slinton 
5289705Slinton AND,	FORCC,
5299705Slinton 	SAREG|AWD,	TSHORT|TUSHORT,
5309705Slinton 	SSCON,	TWORD,
5319705Slinton 		0,	RESCC,
5329705Slinton 		"	bitw	ZZ,AL\n",
5339705Slinton 
5349705Slinton AND,	FORCC,
5359705Slinton 	SAREG|AWD,	TCHAR|TUCHAR,
5369705Slinton 	SCCON,	TWORD,
5379705Slinton 		0,	RESCC,
5389705Slinton 		"	bitb	ZZ,AL\n",
5399705Slinton 
5409705Slinton ASG AND,	INAREG|FOREFF|FORCC,
5419705Slinton 	SAREG,	TWORD,
5429705Slinton 	SCON,	TWORD,
5439705Slinton 		0,	RLEFT|RESCC,
5449705Slinton 		"	bicl2	AR,AL\n",
5459705Slinton 
5469705Slinton ASG OPMUL,	INAREG|FOREFF|FORCC,
5479705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5489705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5499705Slinton 		0,	RLEFT|RESCC,
5509705Slinton 		"	OL2	AR,AL\n",
5519705Slinton 
5529705Slinton OPMUL,	INAREG|INTAREG|FORCC,
5539705Slinton 	STAREG,	TINT|TUNSIGNED|TLONG|TULONG,
5549705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5559705Slinton 		0,	RLEFT|RESCC,
5569705Slinton 		"	OL2	AR,AL\n",
5579705Slinton 
5589705Slinton OPMUL,	INAREG|INTAREG|FORCC,
5599705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5609705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5619705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
5629705Slinton 		"	OL3	AR,AL,A1\n",
5639705Slinton 
5649705Slinton ASG MOD,	INAREG|INTAREG|FOREFF|FORCC,
5659705Slinton 	SAREG,	TINT|TUNSIGNED|TLONG|TULONG,
5669705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5679705Slinton 		NAREG,	RLEFT|RESCC,
5689705Slinton 		"	divl3	AR,AL,A1\n	mull2	AR,A1\n	subl2	A1,AL\n",
5699705Slinton 
5709705Slinton MOD,	INAREG|INTAREG,
5719705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5729705Slinton 	SAREG|AWD,	TINT|TUNSIGNED|TLONG|TULONG,
5739705Slinton 		NAREG,	RESC1,
5749705Slinton 		"	divl3	AR,AL,A1\n	mull2	AR,A1\n	subl3	A1,AL,A1\n",
5759705Slinton 
5769705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
5779705Slinton 	SAREG,	TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
5789705Slinton 	SONE,	TINT|TLONG,
5799705Slinton 		0,	RLEFT|RESCC,
5809705Slinton 		"	incZL	AL\n",
5819705Slinton 
5829705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
5839705Slinton 	AWD,	ANYSIGNED|ANYUSIGNED,
5849705Slinton 	SONE,	TINT|TLONG,
5859705Slinton 		0,	RLEFT|RESCC,
5869705Slinton 		"	incZL	AL\n",
5879705Slinton 
5889705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
5899705Slinton 	SAREG,	TSHORT|TCHAR,
5909705Slinton 	SONE,	TINT|TLONG,
5919705Slinton 		0,	RLEFT|RESCC,
5929705Slinton 		"	incZL	AL\n	cvtZLl	AL,AL\n",
5939705Slinton 
5949705Slinton ASG PLUS,	INAREG|FOREFF|FORCC,
5959705Slinton 	SAREG,	TUSHORT|TUCHAR,
5969705Slinton 	SONE,	TINT|TLONG,
5979705Slinton 		0,	RLEFT|RESCC,
5989705Slinton 		"	incZL	AL\n	movzZLl	AL,AL\n",
5999705Slinton 
6009705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6019705Slinton 	SAREG,	TPOINT|TINT|TLONG|TUNSIGNED|TULONG,
6029705Slinton 	SONE,	TINT|TLONG,
6039705Slinton 		0,	RLEFT|RESCC,
6049705Slinton 		"	decZL	AL\n",
6059705Slinton 
6069705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6079705Slinton 	AWD,	ANYSIGNED|ANYUSIGNED,
6089705Slinton 	SONE,	TINT|TLONG,
6099705Slinton 		0,	RLEFT|RESCC,
6109705Slinton 		"	decZL	AL\n",
6119705Slinton 
6129705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6139705Slinton 	SAREG,	TSHORT|TCHAR,
6149705Slinton 	SONE,	TINT|TLONG,
6159705Slinton 		0,	RLEFT|RESCC,
6169705Slinton 		"	decZL	AL\n	cvtZLl	AL,AL\n",
6179705Slinton 
6189705Slinton ASG MINUS,	INAREG|FOREFF|FORCC,
6199705Slinton 	SAREG,	TUSHORT|TUCHAR,
6209705Slinton 	SONE,	TINT|TLONG,
6219705Slinton 		0,	RLEFT|RESCC,
6229705Slinton 		"	decZL	AL\n	movzZLl	AL,AL\n",
6239705Slinton 
6249705Slinton PLUS,	INAREG|INTAREG|FORCC,
6259705Slinton 	STAREG,	TWORD,
6269705Slinton 	SONE,	TWORD,
6279705Slinton 		0,	RLEFT|RESCC,
6289705Slinton 		"	incZL	AL\n",
6299705Slinton 
6309705Slinton PLUS,	INAREG|INTAREG|FORCC,
6319705Slinton 	STAREG,	TSHORT|TCHAR,
6329705Slinton 	SONE,	TWORD,
6339705Slinton 		0,	RLEFT|RESCC,
6349705Slinton 		"	incZL	AL\n	cvtZLl	AL,AL\n",
6359705Slinton 
6369705Slinton PLUS,	INAREG|INTAREG|FORCC,
6379705Slinton 	STAREG,	TUSHORT|TUCHAR,
6389705Slinton 	SONE,	TWORD,
6399705Slinton 		0,	RLEFT|RESCC,
6409705Slinton 		"	incZL	AL\n	movzZLl	AL,AL\n",
6419705Slinton 
6429705Slinton MINUS,	INAREG|INTAREG|FORCC,
6439705Slinton 	STAREG,	TWORD,
6449705Slinton 	SONE,	TWORD,
6459705Slinton 		0,	RLEFT|RESCC,
6469705Slinton 		"	decZL	AL\n",
6479705Slinton 
6489705Slinton MINUS,	INAREG|INTAREG|FORCC,
6499705Slinton 	STAREG,	TSHORT|TCHAR,
6509705Slinton 	SONE,	TWORD,
6519705Slinton 		0,	RLEFT|RESCC,
6529705Slinton 		"	decZL	AL\n	cvtZLl	AL,AL\n",
6539705Slinton 
6549705Slinton MINUS,	INAREG|INTAREG|FORCC,
6559705Slinton 	STAREG,	TUSHORT|TUCHAR,
6569705Slinton 	SONE,	TWORD,
6579705Slinton 		0,	RLEFT|RESCC,
6589705Slinton 		"	decZL	AL\n	movzZLl	AL,AL\n",
6599705Slinton 
6609705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6619705Slinton 	SAREG|AWD,	TWORD,
6629705Slinton 	SAREG|AWD,	TWORD,
6639705Slinton 		0,	RLEFT|RESCC,
6649705Slinton 		"	OL2	AR,AL\n",
6659705Slinton 
6669705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6679705Slinton 	SAREG,	TWORD,
6689705Slinton 	SAREG,	TSHORT|TUSHORT|TCHAR|TUCHAR,
6699705Slinton 		0,	RLEFT|RESCC,
6709705Slinton 		"	OL2	AR,AL\n",
6719705Slinton 
6729705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6739705Slinton 	AWD,	TSHORT|TUSHORT,
6749705Slinton 	SAREG|AWD,	TSHORT|TUSHORT,
6759705Slinton 		0,	RLEFT|RESCC,
6769705Slinton 		"	OW2	AR,AL\n",
6779705Slinton 
6789705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6799705Slinton 	AWD,	TSHORT|TUSHORT,
6809705Slinton 	SSCON,	TWORD,
6819705Slinton 		0,	RLEFT|RESCC,
6829705Slinton 		"	OW2	AR,AL\n",
6839705Slinton 
6849705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6859705Slinton 	AWD,	TCHAR|TUCHAR,
6869705Slinton 	SAREG|AWD,	TCHAR|TUCHAR,
6879705Slinton 		0,	RLEFT|RESCC,
6889705Slinton 		"	OB2	AR,AL\n",
6899705Slinton 
6909705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6919705Slinton 	AWD,	TCHAR|TUCHAR,
6929705Slinton 	SCCON,	TWORD,
6939705Slinton 		0,	RLEFT|RESCC,
6949705Slinton 		"	OB2	AR,AL\n",
6959705Slinton 
6969705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
6979705Slinton 	SAREG,	TSHORT,
6989705Slinton 	SAREG|AWD,	ANYFIXED,
6999705Slinton 		0,	RLEFT|RESCC,
7009705Slinton 		"	OW2	AR,AL\n	cvtZLl	AL,AL\n",
7019705Slinton 
7029705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7039705Slinton 	SAREG,	TUSHORT,
7049705Slinton 	SAREG|AWD,	ANYFIXED,
7059705Slinton 		0,	RLEFT|RESCC,
7069705Slinton 		"	OW2	AR,AL\n	movzZLl	AL,AL\n",
7079705Slinton 
7089705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7099705Slinton 	SAREG,	TCHAR,
7109705Slinton 	SAREG|AWD,	ANYFIXED,
7119705Slinton 		0,	RLEFT|RESCC,
7129705Slinton 		"	OB2	AR,AL\n	cvtZLl	AL,AL\n",
7139705Slinton 
7149705Slinton ASG OPSIMP,	INAREG|FOREFF|FORCC,
7159705Slinton 	SAREG,	TUCHAR,
7169705Slinton 	SAREG|AWD,	ANYFIXED,
7179705Slinton 		0,	RLEFT|RESCC,
7189705Slinton 		"	OB2	AR,AL\n	movzZLl	AL,AL\n",
7199705Slinton 
7209705Slinton OPSIMP,	INAREG|INTAREG|FORCC,
7219705Slinton 	STAREG,	ANYFIXED,
7229705Slinton 	SAREG|AWD,	TWORD,
7239705Slinton 		0,	RLEFT|RESCC,
7249705Slinton 		"	OL2	AR,AL\n",
7259705Slinton 
7269705Slinton OPSIMP,	INAREG|INTAREG|FORCC,
7279705Slinton 	SAREG|AWD,	TWORD,
7289705Slinton 	SAREG|AWD,	TWORD,
7299705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
7309705Slinton 		"	OL3	AR,AL,A1\n",
7319705Slinton 
7329705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7339705Slinton 	SAREG|AWD,	TDOUBLE,
7349705Slinton 	SAREG|AWD,	TDOUBLE,
7359705Slinton 		0,	RLEFT|RESCC,
7369705Slinton 		"	OD2	AR,AL\n",
7379705Slinton 
7389705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7399705Slinton 	SAREG|AWD,	TFLOAT,
7409705Slinton 	SAREG|AWD,	TFLOAT,
7419705Slinton 		0,	RLEFT|RESCC,
74217740Sralph #if defined(FORT) || defined(SPRECC)
74316937Sralph 		"	OF2	AR,TAL\n",
74416937Sralph #else
7459705Slinton 		"	OF2	AR,AL\n",
74616937Sralph #endif
7479705Slinton 
7489705Slinton ASG OPFLOAT,	INAREG|FOREFF|FORCC,
7499705Slinton 	SAREG|AWD,	TDOUBLE,
7509705Slinton 	SAREG|AWD,	TFLOAT,
7519705Slinton 		NAREG|NASR,	RLEFT|RESCC,
7529705Slinton 		"	cvtfd	AR,A1\n	OD2	A1,AL\n",
7539705Slinton 
7549705Slinton ASG OPFLOAT,	INAREG|INTAREG|FOREFF|FORCC,
7559705Slinton 	SAREG|AWD,	TFLOAT,
7569705Slinton 	SAREG|AWD,	TDOUBLE,
7579705Slinton 		NAREG,	RLEFT|RESC1|RESCC,
7589705Slinton 		"	cvtfd	AL,A1\n	OD2	AR,A1\n	cvtdf	A1,AL\n",
7599705Slinton 
76025753Sdonn ASG OPFLOAT,	INAREG|FOREFF|FORCC,
76125753Sdonn 	SAREG|AWD,	ANYFIXED,
76225753Sdonn #ifndef SPRECC
76325753Sdonn 	SAREG|AWD,	TDOUBLE,		/* force FLOAT to register */
76425753Sdonn #else
76525753Sdonn 	SAREG|AWD,	TFLOAT|TDOUBLE,
76625753Sdonn #endif
76725753Sdonn 		NAREG,	RLEFT|RESCC,	/* usable() knows we need a reg pair */
76825753Sdonn 		"	ZG\n",
76925753Sdonn 
7709705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7719705Slinton 	STAREG,	TDOUBLE,
7729705Slinton 	SAREG|AWD,	TDOUBLE,
7739705Slinton 		0,	RLEFT|RESCC,
7749705Slinton 		"	OD2	AR,AL\n",
7759705Slinton 
7769705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7779705Slinton 	SAREG|AWD,	TDOUBLE,
7789705Slinton 	SAREG|AWD,	TDOUBLE,
7799705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
7809705Slinton 		"	OD3	AR,AL,A1\n",
7819705Slinton 
7829705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7839705Slinton 	SAREG|AWD,	TFLOAT,
7849705Slinton 	SAREG|AWD,	TDOUBLE,
7859705Slinton 		NAREG|NASL,	RESC1|RESCC,
7869705Slinton 		"	cvtfd	AL,A1\n	OD2	AR,A1\n",
7879705Slinton 
7889705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
7899705Slinton 	SAREG|AWD,	TDOUBLE,
7909705Slinton 	SAREG|AWD,	TFLOAT,
7919705Slinton 		NAREG|NASR,	RESC1|RESCC,
7929705Slinton 		"	cvtfd	AR,A1\n	OD3	A1,AL,A1\n",
7939705Slinton 
79417740Sralph #if defined(FORT) || defined(SPRECC)
7959705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
79616937Sralph 	STAREG,		TFLOAT,
79716937Sralph 	SAREG|AWD,	TFLOAT,
7989705Slinton 		0,	RLEFT|RESCC,
79916937Sralph 		"	OF2	AR,TAL\n",
8009705Slinton 
8019705Slinton OPFLOAT,	INAREG|INTAREG|FORCC,
8029705Slinton 	SAREG|AWD,	TFLOAT,
8039705Slinton 	SAREG|AWD,	TFLOAT,
8049705Slinton 		NAREG|NASL|NASR,	RESC1|RESCC,
8059705Slinton 		"	OF3	AR,AL,TA1\n",
8069705Slinton #endif
8079705Slinton 
8089705Slinton 	/* Default actions for hard trees ... */
8099705Slinton 
8109705Slinton # define DF(x) FORREW,SANY,TANY,SANY,TANY,REWRITE,x,""
8119705Slinton 
8129705Slinton UNARY MUL, DF( UNARY MUL ),
8139705Slinton 
8149705Slinton INCR, DF(INCR),
8159705Slinton 
8169705Slinton DECR, DF(INCR),
8179705Slinton 
8189705Slinton ASSIGN, DF(ASSIGN),
8199705Slinton 
8209705Slinton STASG, DF(STASG),
8219705Slinton 
8229705Slinton FLD, DF(FLD),
8239705Slinton 
8249705Slinton OPLEAF, DF(NAME),
8259705Slinton 
8269705Slinton OPLOG,	FORCC,
8279705Slinton 	SANY,	TANY,
8289705Slinton 	SANY,	TANY,
8299705Slinton 		REWRITE,	BITYPE,
8309705Slinton 		"",
8319705Slinton 
8329705Slinton OPLOG,	DF(NOT),
8339705Slinton 
8349705Slinton COMOP, DF(COMOP),
8359705Slinton 
8369705Slinton INIT, DF(INIT),
8379705Slinton 
8389705Slinton OPUNARY, DF(UNARY MINUS),
8399705Slinton 
8409705Slinton 
8419705Slinton ASG OPANY, DF(ASG PLUS),
8429705Slinton 
8439705Slinton OPANY, DF(BITYPE),
8449705Slinton 
8459705Slinton FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	FREE,	"help; I'm in trouble\n" };
846