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