xref: /csrg-svn/sys/tahoe/align/table.c (revision 29648)
1*29648Ssam /*	table.c	1.1	86/07/20	*/
2*29648Ssam 
3*29648Ssam #include "../tahoealign/align.h"
4*29648Ssam /*   WARNING !!!  Do not use register 6 and register 7 in any of the emulation
5*29648Ssam  *       code.  The macro Set_psl has use these two registers to set the
6*29648Ssam  *       user psl to the current kernel psl.
7*29648Ssam  *
8*29648Ssam  */
9*29648Ssam 
10*29648Ssam #define	insque	cannot_do	/* Can't emulate un-interruptable opcode ! */
11*29648Ssam #define	remque	cannot_do	/* Can't emulate un-interruptable opcode ! */
12*29648Ssam #define	addb2	add2
13*29648Ssam #define	addb3	add3
14*29648Ssam #define	addl2	add2
15*29648Ssam #define	addl3	add3
16*29648Ssam #define	addw2	add2
17*29648Ssam #define	addw3	add3
18*29648Ssam #define	andb2	and2
19*29648Ssam #define	andb3	and3
20*29648Ssam #define	andl2	and2
21*29648Ssam #define	andl3	and3
22*29648Ssam #define	andw2	and2
23*29648Ssam #define	andw3	and3
24*29648Ssam #define	atanf	not_needed
25*29648Ssam #define	kcall	cannot_do	/* Too complicated to emulate completely */
26*29648Ssam #define	bbssi	cannot_do	/* Interlock memory during emulation ??? */
27*29648Ssam #define	bcc	not_needed
28*29648Ssam #define	bcs	not_needed
29*29648Ssam #define	beql	not_needed
30*29648Ssam #define	bgeq	not_needed
31*29648Ssam #define	bgtr	not_needed
32*29648Ssam #define	bgtru	not_needed
33*29648Ssam #define	bitb	bit
34*29648Ssam #define	bitl	bit
35*29648Ssam #define	bitw	bit
36*29648Ssam #define	bleq	not_needed
37*29648Ssam #define	blequ	not_needed
38*29648Ssam #define	blss	not_needed
39*29648Ssam #define	bnequ	not_needed
40*29648Ssam #define	bpt	not_needed
41*29648Ssam #define	brb	not_needed
42*29648Ssam #define	brw	not_needed
43*29648Ssam #define	bvc	not_needed
44*29648Ssam #define	bvs	not_needed
45*29648Ssam #define	callf	not_needed
46*29648Ssam #define	calls	not_needed
47*29648Ssam #define	clrb	clr
48*29648Ssam #define	clrl	clr
49*29648Ssam #define	clrw	clr
50*29648Ssam #define	cmpb	cmp
51*29648Ssam #define	cmpl	cmp
52*29648Ssam #define	cmps2	not_needed
53*29648Ssam #define	cmps3	not_needed
54*29648Ssam #define	cmpw	cmp
55*29648Ssam #define	cosf	not_needed
56*29648Ssam #define	cvdf	not_needed
57*29648Ssam #define	cvtbl	cvt
58*29648Ssam #define	cvtbw	cvt
59*29648Ssam #define	cvtwl	cvt
60*29648Ssam #define	cvtwb	cvtlb
61*29648Ssam #define	decb	dec
62*29648Ssam #define	decl	dec
63*29648Ssam #define	decw	dec
64*29648Ssam #define	expf	not_needed
65*29648Ssam #define	ffs	ffs_op
66*29648Ssam #define	incb	inc
67*29648Ssam #define	incl	inc
68*29648Ssam #define	incw	inc
69*29648Ssam #define	ldpctx	not_needed
70*29648Ssam #define	logf	not_needed
71*29648Ssam #define	mcomb	mcom
72*29648Ssam #define	mcoml	mcom
73*29648Ssam #define	mcomw	mcom
74*29648Ssam #define	mnegb	mneg
75*29648Ssam #define	mnegl	mneg
76*29648Ssam #define	mnegw	mneg
77*29648Ssam #define	movab	mova
78*29648Ssam #define	moval	mova
79*29648Ssam #define	movaw	mova
80*29648Ssam #define	movow	cannot_do	/* 2 X movob != movow !! See any HW spec ! */
81*29648Ssam #define movob	movob_op
82*29648Ssam #define	movb	mov
83*29648Ssam #define	movblk	not_needed
84*29648Ssam #define	movl	mov
85*29648Ssam #define	movs2	not_needed
86*29648Ssam #define	movs3	not_needed
87*29648Ssam #define	movw	mov
88*29648Ssam #define	negd	not_needed
89*29648Ssam #define	negf	not_needed
90*29648Ssam #define	nop	not_needed
91*29648Ssam #define	orb2	or2
92*29648Ssam #define	orb3	or3
93*29648Ssam #define	orl2	or2
94*29648Ssam #define	orl3	or3
95*29648Ssam #define	orw2	or2
96*29648Ssam #define	orw3	or3
97*29648Ssam #define	pushab	pusha
98*29648Ssam #define	pushal	pusha
99*29648Ssam #define	pushaw	pusha
100*29648Ssam #define	pushb	pushx
101*29648Ssam #define	pushd	not_needed
102*29648Ssam #define	pushl	pushx
103*29648Ssam #define	pushw	pushx
104*29648Ssam #define	rei	not_needed
105*29648Ssam #define	ret	not_needed
106*29648Ssam #define	sinf	not_needed
107*29648Ssam #define	sqrtf	not_needed
108*29648Ssam #define	subb2	sub2
109*29648Ssam #define	subb3	sub3
110*29648Ssam #define	subl2	sub2
111*29648Ssam #define	subl3	sub3
112*29648Ssam #define	subw2	sub2
113*29648Ssam #define	subw3	sub3
114*29648Ssam #define	svpctx	not_needed
115*29648Ssam #define	tstb	tst
116*29648Ssam #define	tstd	not_needed
117*29648Ssam #define	tstf	not_needed
118*29648Ssam #define	tstl	tst
119*29648Ssam #define	tstw	tst
120*29648Ssam #define	xorb2	xor2
121*29648Ssam #define	xorb3	xor3
122*29648Ssam #define	xorl2	xor2
123*29648Ssam #define	xorl3	xor3
124*29648Ssam #define	xorw2	xor2
125*29648Ssam #define	xorw3	xor3
126*29648Ssam #define movzbl	movzb
127*29648Ssam #define movzbw	movzb
128*29648Ssam #define	halt	not_needed		/* Privileged to user */
129*29648Ssam #define	illegal	not_needed		/* Should be trapped by HW */
130*29648Ssam #define	mtpr	not_needed		/* Privileged to user */
131*29648Ssam #define	mfpr	not_needed		/* Privileged to user */
132*29648Ssam #define	btcs	not_needed		/* Privileged to user */
133*29648Ssam 
134*29648Ssam int	add2();
135*29648Ssam int	add3();
136*29648Ssam int	adda();
137*29648Ssam int	addd();
138*29648Ssam int	addf();
139*29648Ssam int	adwc();
140*29648Ssam int	and2();
141*29648Ssam int	and3();
142*29648Ssam int	aobleq();
143*29648Ssam int	aoblss();
144*29648Ssam int	bbc();
145*29648Ssam int	bbs();
146*29648Ssam int	bbssi();
147*29648Ssam int	bcc();
148*29648Ssam int	bcs();
149*29648Ssam int	beql();
150*29648Ssam int	bgeq();
151*29648Ssam int	bgtr();
152*29648Ssam int	bgtru();
153*29648Ssam int	bicpsw();
154*29648Ssam int	bispsw();
155*29648Ssam int	bit();
156*29648Ssam int	bleq();
157*29648Ssam int	blequ();
158*29648Ssam int	blss();
159*29648Ssam int	bnequ();
160*29648Ssam int	btcs();
161*29648Ssam int	bvc();
162*29648Ssam int	bvs();
163*29648Ssam int	call();
164*29648Ssam int	casel();
165*29648Ssam int	clr();
166*29648Ssam int	cmp();
167*29648Ssam int	cmpd();
168*29648Ssam int	cmpd2();
169*29648Ssam int	cmpf();
170*29648Ssam int	cmpf2();
171*29648Ssam int	cvdl();
172*29648Ssam int	cvfl();
173*29648Ssam int	cvld();
174*29648Ssam int	cvlf();
175*29648Ssam int	cvt();
176*29648Ssam int	cvt();
177*29648Ssam int	cvtlb();
178*29648Ssam int	cvtlw();
179*29648Ssam int	dec();
180*29648Ssam int	divd();
181*29648Ssam int	divf();
182*29648Ssam int	divl2();
183*29648Ssam int	divl3();
184*29648Ssam int	ediv();
185*29648Ssam int	emul();
186*29648Ssam int	ffc();
187*29648Ssam int	ffs_op();
188*29648Ssam int	halt();
189*29648Ssam int	illegal();
190*29648Ssam int	inc();
191*29648Ssam int	insque();
192*29648Ssam int	jmp();
193*29648Ssam int	kcall();
194*29648Ssam int	ldd();
195*29648Ssam int	ldf();
196*29648Ssam int	ldfd();
197*29648Ssam int	lnd();
198*29648Ssam int	lnf();
199*29648Ssam int	loadr();
200*29648Ssam int	mcom();
201*29648Ssam int	mfpr();
202*29648Ssam int	mneg();
203*29648Ssam int	mov();
204*29648Ssam int	mova();
205*29648Ssam int	movob_op();
206*29648Ssam int	movow();
207*29648Ssam int	movpsl();
208*29648Ssam int	movzb();
209*29648Ssam int	movzwl();
210*29648Ssam int	mtpr();
211*29648Ssam int	muld();
212*29648Ssam int	mulf();
213*29648Ssam int	mull2();
214*29648Ssam int	mull3();
215*29648Ssam int	or2();
216*29648Ssam int	or3();
217*29648Ssam int	prober();
218*29648Ssam int	probew();
219*29648Ssam int	pusha();
220*29648Ssam int	pushx();
221*29648Ssam int	remque();
222*29648Ssam int	sbwc();
223*29648Ssam int	shal();
224*29648Ssam int	shar();
225*29648Ssam int	shll();
226*29648Ssam int	shlq();
227*29648Ssam int	shrl();
228*29648Ssam int	shrq();
229*29648Ssam int	std();
230*29648Ssam int	stf();
231*29648Ssam int	storer();
232*29648Ssam int	sub2();
233*29648Ssam int	sub3();
234*29648Ssam int	suba();
235*29648Ssam int	subd();
236*29648Ssam int	subf();
237*29648Ssam int	tst();
238*29648Ssam int	xor2();
239*29648Ssam int	xor3();
240*29648Ssam int	not_needed();
241*29648Ssam 
242*29648Ssam 
243*29648Ssam /**************************************************/
244*29648Ssam /*  The great opcodes table, it drives everything */
245*29648Ssam /**************************************************/
246*29648Ssam 
247*29648Ssam struct	opcode_des	Table[]= {
248*29648Ssam 
249*29648Ssam /* 00 */ halt      ,   0,   0,   0,   0,   0,   0,   0,   0,
250*29648Ssam /* 01 */ halt      ,   0,   0,   0,   0,   0,   0,   0,   0,
251*29648Ssam /* 02 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
252*29648Ssam /* 03 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
253*29648Ssam /* 04 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
254*29648Ssam /* 05 */ sinf      ,   0,   0,   0,   0,   0,   0,   0,   0,
255*29648Ssam /* 06 */ ldf       ,RADF,   4,   0,   0,   0,   0,   0,   0,
256*29648Ssam /* 07 */ ldd       ,RADF,   8,   0,   0,   0,   0,   0,   0,
257*29648Ssam /* 08 */ addb2     ,RADI,   1, MAD,   1,   0,   0,   0,   0,
258*29648Ssam /* 09 */ movb      ,RADI,   1,NWAD,   1,   0,   0,   0,   0,
259*29648Ssam /* 0A */ addw2     ,RADI,   2, MAD,   2,   0,   0,   0,   0,
260*29648Ssam /* 0B */ movw      ,RADI,   2,NWAD,   2,   0,   0,   0,   0,
261*29648Ssam /* 0C */ addl2     ,RADI,   4, MAD,   4,   0,   0,   0,   0,
262*29648Ssam /* 0D */ movl      ,RADI,   4,NWAD,   4,   0,   0,   0,   0,
263*29648Ssam /* 0E */ bbs       ,RADI,   4, RAD,   4, Brd,   2,   0,   0,
264*29648Ssam /* 0F */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
265*29648Ssam /* 10 */ nop       ,   0,   0,   0,   0,   0,   0,   0,   0,
266*29648Ssam /* 11 */ brb       , Brd,   1,   0,   0,   0,   0,   0,   0,
267*29648Ssam /* 12 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
268*29648Ssam /* 13 */ brw       , Brd,   2,   0,   0,   0,   0,   0,   0,
269*29648Ssam /* 14 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
270*29648Ssam /* 15 */ cosf      ,   0,   0,   0,   0,   0,   0,   0,   0,
271*29648Ssam /* 16 */ lnf       ,RADF,   4,   0,   0,   0,   0,   0,   0,
272*29648Ssam /* 17 */ lnd       ,RADF,   8,   0,   0,   0,   0,   0,   0,
273*29648Ssam /* 18 */ addb3     ,RADI,   1,RADI,   1, WAD,   1,   0,   0,
274*29648Ssam /* 19 */ cmpb      ,RADI,   1,RADI,   1,   0,   0,   0,   0,
275*29648Ssam /* 1A */ addw3     ,RADI,   2,RADI,   2, WAD,   2,   0,   0,
276*29648Ssam /* 1B */ cmpw      ,RADI,   2,RADI,   2,   0,   0,   0,   0,
277*29648Ssam /* 1C */ addl3     ,RADI,   4,RADI,   4, WAD,   4,   0,   0,
278*29648Ssam /* 1D */ cmpl      ,RADI,   4,RADI,   4,   0,   0,   0,   0,
279*29648Ssam /* 1E */ bbc       ,RADI,   4, RAD,   4, Brd,   2,   0,   0,
280*29648Ssam /* 1F */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
281*29648Ssam /* 20 */ rei       ,   0,   0,   0,   0,   0,   0,   0,   0,
282*29648Ssam /* 21 */ bnequ     , Brd,   1,   0,   0,   0,   0,   0,   0,
283*29648Ssam /* 22 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
284*29648Ssam /* 23 */ cvtwl     ,RADI,   2, WAD,   4,   0,   0,   0,   0,
285*29648Ssam /* 24 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
286*29648Ssam /* 25 */ atanf     ,   0,   0,   0,   0,   0,   0,   0,   0,
287*29648Ssam /* 26 */ stf       , WAD,   4,   0,   0,   0,   0,   0,   0,
288*29648Ssam /* 27 */ std       , WAD,   8,   0,   0,   0,   0,   0,   0,
289*29648Ssam /* 28 */ subb2     ,RADI,   1, MAD,   1,   0,   0,   0,   0,
290*29648Ssam /* 29 */ mcomb     ,RADI,   1,NWAD,   1,   0,   0,   0,   0,
291*29648Ssam /* 2A */ subw2     ,RADI,   2, MAD,   2,   0,   0,   0,   0,
292*29648Ssam /* 2B */ mcomw     ,RADI,   2,NWAD,   2,   0,   0,   0,   0,
293*29648Ssam /* 2C */ subl2     ,RADI,   4, MAD,   4,   0,   0,   0,   0,
294*29648Ssam /* 2D */ mcoml     ,RADI,   4, WAD,   4,   0,   0,   0,   0,
295*29648Ssam /* 2E */ emul      ,RADI,   4,RADI,   4,RADI,   4, WAD,   8,
296*29648Ssam /* 2F */ aoblss    ,RADI,   4, MAD,   4, Brd,   2,   0,   0,
297*29648Ssam /* 30 */ bpt       ,   0,   0,   0,   0,   0,   0,   0,   0,
298*29648Ssam /* 31 */ beql      , Brd,   1,   0,   0,   0,   0,   0,   0,
299*29648Ssam /* 32 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
300*29648Ssam /* 33 */ cvtwb     ,RADI,   2, WAD,   1,   0,   0,   0,   0,
301*29648Ssam /* 34 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
302*29648Ssam /* 35 */ logf      ,   0,   0,   0,   0,   0,   0,   0,   0,
303*29648Ssam /* 36 */ cmpf      ,RADF,   4,   0,   0,   0,   0,   0,   0,
304*29648Ssam /* 37 */ cmpd      ,RADF,   8,   0,   0,   0,   0,   0,   0,
305*29648Ssam /* 38 */ subb3     ,RADI,   1,RADI,   1, WAD,   1,   0,   0,
306*29648Ssam /* 39 */ bitb      ,RADI,   1,RADI,   1,   0,   0,   0,   0,
307*29648Ssam /* 3A */ subw3     ,RADI,   2,RADI,   2, WAD,   2,   0,   0,
308*29648Ssam /* 3B */ bitw      ,RADI,   2,RADI,   2,   0,   0,   0,   0,
309*29648Ssam /* 3C */ subl3     ,RADI,   4,RADI,   4, WAD,   4,   0,   0,
310*29648Ssam /* 3D */ bitl      ,RADI,   4,RADI,   4,   0,   0,   0,   0,
311*29648Ssam /* 3E */ ediv      ,RADI,   4,RADI,   8, WAD,   4,  WD,   4,
312*29648Ssam /* 3F */ aobleq    ,RADI,   4, MAD,   4, Brd,   2,   0,   0,
313*29648Ssam /* 40 */ ret       ,   0,   0,   0,   0,   0,   0,   0,   0,
314*29648Ssam /* 41 */ bgtr      , Brd,   1,   0,   0,   0,   0,   0,   0,
315*29648Ssam /* 42 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
316*29648Ssam /* 43 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
317*29648Ssam /* 44 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
318*29648Ssam /* 45 */ sqrtf     ,   0,   0,   0,   0,   0,   0,   0,   0,
319*29648Ssam /* 46 */ cmpf2     ,RADF,   4,RADF,   4,   0,   0,   0,   0,
320*29648Ssam /* 47 */ cmpd2     ,RADF,   8,RADF,   8,   0,   0,   0,   0,
321*29648Ssam /* 48 */ shll      ,RADI,   1,RADI,   4, WAD,   4,   0,   0,
322*29648Ssam /* 49 */ clrb      , WAD,   1,   0,   0,   0,   0,   0,   0,
323*29648Ssam /* 4A */ shlq      ,RADI,   1,RADI,   8, WAD,   8,   0,   0,
324*29648Ssam /* 4B */ clrw      , WAD,   2,   0,   0,   0,   0,   0,   0,
325*29648Ssam /* 4C */ mull2     ,RADI,   4, MAD,   4,   0,   0,   0,   0,
326*29648Ssam /* 4D */ clrl      , WAD,   4,   0,   0,   0,   0,   0,   0,
327*29648Ssam /* 4E */ shal      ,RADI,   1,RADI,   4, WAD,   4,   0,   0,
328*29648Ssam /* 4F */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
329*29648Ssam /* 50 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
330*29648Ssam /* 51 */ bleq      , Brd,   1,   0,   0,   0,   0,   0,   0,
331*29648Ssam /* 52 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
332*29648Ssam /* 53 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
333*29648Ssam /* 54 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
334*29648Ssam /* 55 */ expf      ,   0,   0,   0,   0,   0,   0,   0,   0,
335*29648Ssam /* 56 */ tstf      ,   0,   0,   0,   0,   0,   0,   0,   0,
336*29648Ssam /* 57 */ tstd      ,   0,   0,   0,   0,   0,   0,   0,   0,
337*29648Ssam /* 58 */ shrl      ,RADI,   1,RADI,   4, WAD,   4,   0,   0,
338*29648Ssam /* 59 */ tstb      ,RADI,   1,   0,   0,   0,   0,   0,   0,
339*29648Ssam /* 5A */ shrq      ,RADI,   1,RADI,   8, WAD,   8,   0,   0,
340*29648Ssam /* 5B */ tstw      ,RADI,   2,   0,   0,   0,   0,   0,   0,
341*29648Ssam /* 5C */ mull3     ,RADI,   4,RADI,   4, WAD,   4,   0,   0,
342*29648Ssam /* 5D */ tstl      ,RADI,   4,   0,   0,   0,   0,   0,   0,
343*29648Ssam /* 5E */ shar      ,RADI,   1,RADI,   4, WAD,   4,   0,   0,
344*29648Ssam /* 5F */ bbssi     ,RADI,   4, MAD,   4, Brd,   2,   0,   0,
345*29648Ssam /* 60 */ ldpctx    ,   0,   0,   0,   0,   0,   0,   0,   0,
346*29648Ssam /* 61 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
347*29648Ssam /* 62 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
348*29648Ssam /* 63 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
349*29648Ssam /* 64 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
350*29648Ssam /* 65 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
351*29648Ssam /* 66 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
352*29648Ssam /* 67 */ pushd     ,   0,   0,   0,   0,   0,   0,   0,   0,
353*29648Ssam /* 68 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
354*29648Ssam /* 69 */ incb      , MAD,   1,   0,   0,   0,   0,   0,   0,
355*29648Ssam /* 6A */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
356*29648Ssam /* 6B */ incw      , MAD,   2,   0,   0,   0,   0,   0,   0,
357*29648Ssam /* 6C */ divl2     ,RADI,   4, MAD,   4,   0,   0,   0,   0,
358*29648Ssam /* 6D */ incl      , MAD,   4,   0,   0,   0,   0,   0,   0,
359*29648Ssam /* 6E */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
360*29648Ssam /* 6F */ cvtlb     ,RADI,   4, WAD,   1,   0,   0,   0,   0,
361*29648Ssam /* 70 */ svpctx    ,   0,   0,   0,   0,   0,   0,   0,   0,
362*29648Ssam /* 71 */ jmp       ,ADDR,   1,   0,   0,   0,   0,   0,   0,
363*29648Ssam /* 72 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
364*29648Ssam /* 73 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
365*29648Ssam /* 74 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
366*29648Ssam /* 75 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
367*29648Ssam /* 76 */ cvlf      , RAD,   4,   0,   0,   0,   0,   0,   0,
368*29648Ssam /* 77 */ cvld      , RAD,   4,   0,   0,   0,   0,   0,   0,
369*29648Ssam /* 78 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
370*29648Ssam /* 79 */ decb      , MAD,   1,   0,   0,   0,   0,   0,   0,
371*29648Ssam /* 7A */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
372*29648Ssam /* 7B */ decw      , MAD,   2,   0,   0,   0,   0,   0,   0,
373*29648Ssam /* 7C */ divl3     ,RADI,   4,RADI,   4, WAD,   4,   0,   0,
374*29648Ssam /* 7D */ decl      , MAD,   4,   0,   0,   0,   0,   0,   0,
375*29648Ssam /* 7E */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
376*29648Ssam /* 7F */ cvtlw     ,RADI,   4, WAD,   2,   0,   0,   0,   0,
377*29648Ssam /* 80 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
378*29648Ssam /* 81 */ bgeq      , Brd,   1,   0,   0,   0,   0,   0,   0,
379*29648Ssam /* 82 */ movs2     ,   0,   0,   0,   0,   0,   0,   0,   0,
380*29648Ssam /* 83 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
381*29648Ssam /* 84 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
382*29648Ssam /* 85 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
383*29648Ssam /* 86 */ cvfl      , WAD,   4,   0,   0,   0,   0,   0,   0,
384*29648Ssam /* 87 */ cvdl      , WAD,   4,   0,   0,   0,   0,   0,   0,
385*29648Ssam /* 88 */ orb2      ,RADI,   1,NMAD,   1,   0,   0,   0,   0,
386*29648Ssam /* 89 */ cvtbl     ,RADI,   1, WAD,   4,   0,   0,   0,   0,
387*29648Ssam /* 8A */ orw2      ,RADI,   2,NMAD,   2,   0,   0,   0,   0,
388*29648Ssam /* 8B */ bispsw    ,RADI,   2,   0,   0,   0,   0,   0,   0,
389*29648Ssam /* 8C */ orl2      ,RADI,   4, MAD,   4,   0,   0,   0,   0,
390*29648Ssam /* 8D */ adwc      ,RADI,   4, MAD,   4,   0,   0,   0,   0,
391*29648Ssam /* 8E */ adda      ,RADI,   4, MAD,   4,   0,   0,   0,   0,
392*29648Ssam /* 8F */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
393*29648Ssam /* 90 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
394*29648Ssam /* 91 */ blss      , Brd,   1,   0,   0,   0,   0,   0,   0,
395*29648Ssam /* 92 */ cmps2     ,   0,   0,   0,   0,   0,   0,   0,   0,
396*29648Ssam /* 93 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
397*29648Ssam /* 94 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
398*29648Ssam /* 95 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
399*29648Ssam /* 96 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
400*29648Ssam /* 97 */ ldfd      ,RADF,   4,   0,   0,   0,   0,   0,   0,
401*29648Ssam /* 98 */ orb3      ,RADI,   1,RADI,   1,NWAD,   1,   0,   0,
402*29648Ssam /* 99 */ cvtbw     ,RADI,   1, WAD,   2,   0,   0,   0,   0,
403*29648Ssam /* 9A */ orw3      ,RADI,   2,RADI,   2,NWAD,   2,   0,   0,
404*29648Ssam /* 9B */ bicpsw    ,RADI,   2,   0,   0,   0,   0,   0,   0,
405*29648Ssam /* 9C */ orl3      ,RADI,   4,RADI,   4, WAD,   4,   0,   0,
406*29648Ssam /* 9D */ sbwc      ,RADI,   4, MAD,   4,   0,   0,   0,   0,
407*29648Ssam /* 9E */ suba      ,RADI,   4, MAD,   4,   0,   0,   0,   0,
408*29648Ssam /* 9F */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
409*29648Ssam /* A0 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
410*29648Ssam /* A1 */ bgtru     , Brd,   1,   0,   0,   0,   0,   0,   0,
411*29648Ssam /* A2 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
412*29648Ssam /* A3 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
413*29648Ssam /* A4 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
414*29648Ssam /* A5 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
415*29648Ssam /* A6 */ cvdf      ,   0,   0,   0,   0,   0,   0,   0,   0,
416*29648Ssam /* A7 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
417*29648Ssam /* A8 */ andb2     ,RADI,   1,NMAD,   1,   0,   0,   0,   0,
418*29648Ssam /* A9 */ movzbl    ,RADI,   1, WAD,   4,   0,   0,   0,   0,
419*29648Ssam /* AA */ andw2     ,RADI,   2,NMAD,   2,   0,   0,   0,   0,
420*29648Ssam /* AB */ loadr     ,RADI,   2,ADDR,   4,   0,   0,   0,   0,
421*29648Ssam /* AC */ andl2     ,RADI,   4, MAD,   4,   0,   0,   0,   0,
422*29648Ssam /* AD */ mtpr      ,RADI,   4,RADI,   4,   0,   0,   0,   0,
423*29648Ssam /* AE */ ffs       ,RADI,   4, WAD,   4,   0,   0,   0,   0,
424*29648Ssam /* AF */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
425*29648Ssam /* B0 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
426*29648Ssam /* B1 */ blequ     , Brd,   1,   0,   0,   0,   0,   0,   0,
427*29648Ssam /* B2 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
428*29648Ssam /* B3 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
429*29648Ssam /* B4 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
430*29648Ssam /* B5 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
431*29648Ssam /* B6 */ negf      ,   0,   0,   0,   0,   0,   0,   0,   0,
432*29648Ssam /* B7 */ negd      ,   0,   0,   0,   0,   0,   0,   0,   0,
433*29648Ssam /* B8 */ andb3     ,RADI,   1,RADI,   1,NWAD,   1,   0,   0,
434*29648Ssam /* B9 */ movzbw    ,RADI,   1, WAD,   2,   0,   0,   0,   0,
435*29648Ssam /* BA */ andw3     ,RADI,   2,RADI,   2,NWAD,   2,   0,   0,
436*29648Ssam /* BB */ storer    ,RADI,   2,W|ADDR, 4,   0,   0,   0,   0,
437*29648Ssam /* BC */ andl3     ,RADI,   4,RADI,   4, WAD,   4,   0,   0,
438*29648Ssam /* BD */ mfpr      ,RADI,   4, WAD,   4,   0,   0,   0,   0,
439*29648Ssam /* BE */ ffc       ,RADI,   4, WAD,   4,   0,   0,   0,   0,
440*29648Ssam /* BF */ calls     ,RADI,   1,ADDR,   1,   0,   0,   0,   0,
441*29648Ssam /* C0 */ prober    ,RADI,   1,ADDR,   1,RADI,   4,   0,   0,
442*29648Ssam /* C1 */ bvc       , Brd,   1,   0,   0,   0,   0,   0,   0,
443*29648Ssam /* C2 */ movs3     ,   0,   0,   0,   0,   0,   0,   0,   0,
444*29648Ssam /* C3 */ movzwl    ,RADI,   2, WAD,   4,   0,   0,   0,   0,
445*29648Ssam /* C4 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
446*29648Ssam /* C5 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
447*29648Ssam /* C6 */ addf      ,RADF,   4,   0,   0,   0,   0,   0,   0,
448*29648Ssam /* C7 */ addd      ,RADF,   8,   0,   0,   0,   0,   0,   0,
449*29648Ssam /* C8 */ xorb2     ,RADI,   1,NMAD,   1,   0,   0,   0,   0,
450*29648Ssam /* C9 */ movob     ,RADI,   1,NWAD,   1,   0,   0,   0,   0,
451*29648Ssam /* CA */ xorw2     ,RADI,   2,NMAD,   2,   0,   0,   0,   0,
452*29648Ssam /* CB */ movow     ,RADI,   2,NWAD,   2,   0,   0,   0,   0,
453*29648Ssam /* CC */ xorl2     ,RADI,   4, MAD,   4,   0,   0,   0,   0,
454*29648Ssam /* CD */ movpsl    , WAD,   4,   0,   0,   0,   0,   0,   0,
455*29648Ssam /* CE */ btcs      ,RADI,   1,   0,   0,   0,   0,   0,   0,
456*29648Ssam /* CF */ kcall     ,RADI,   2,   0,   0,   0,   0,   0,   0,
457*29648Ssam /* D0 */ probew    ,RADI,   1,ADDR,   1,RADI,   4,   0,   0,
458*29648Ssam /* D1 */ bvs       , Brd,   1,   0,   0,   0,   0,   0,   0,
459*29648Ssam /* D2 */ cmps3     ,   0,   0,   0,   0,   0,   0,   0,   0,
460*29648Ssam /* D3 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
461*29648Ssam /* D4 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
462*29648Ssam /* D5 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
463*29648Ssam /* D6 */ subf      ,RADF,   4,   0,   0,   0,   0,   0,   0,
464*29648Ssam /* D7 */ subd      ,RADF,   8,   0,   0,   0,   0,   0,   0,
465*29648Ssam /* D8 */ xorb3     ,RADI,   1,RADI,   1,NWAD,   1,   0,   0,
466*29648Ssam /* D9 */ pushb     ,RADI,   1,   0,   0,   0,   0,   0,   0,
467*29648Ssam /* DA */ xorw3     ,RADI,   2,RADI,   2,NWAD,   2,   0,   0,
468*29648Ssam /* DB */ pushw     ,RADI,   2,   0,   0,   0,   0,   0,   0,
469*29648Ssam /* DC */ xorl3     ,RADI,   4,RADI,   4, WAD,   4,   0,   0,
470*29648Ssam /* DD */ pushl     ,RADI,   4,   0,   0,   0,   0,   0,   0,
471*29648Ssam /* DE */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
472*29648Ssam /* DF */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
473*29648Ssam /* E0 */ insque    ,ADDR,   4,ADDR,   4,   0,   0,   0,   0,
474*29648Ssam /* E1 */ bcs       , Brd,   1,   0,   0,   0,   0,   0,   0,
475*29648Ssam /* E2 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
476*29648Ssam /* E3 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
477*29648Ssam /* E4 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
478*29648Ssam /* E5 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
479*29648Ssam /* E6 */ mulf      ,RADF,   4,   0,   0,   0,   0,   0,   0,
480*29648Ssam /* E7 */ muld      ,RADF,   8,   0,   0,   0,   0,   0,   0,
481*29648Ssam /* E8 */ mnegb     ,RADI,   1, WAD,   1,   0,   0,   0,   0,
482*29648Ssam /* E9 */ movab     ,ADDR,   1, WAD,   4,   0,   0,   0,   0,
483*29648Ssam /* EA */ mnegw     ,RADI,   2, WAD,   2,   0,   0,   0,   0,
484*29648Ssam /* EB */ movaw     ,ADDR,   2, WAD,   4,   0,   0,   0,   0,
485*29648Ssam /* EC */ mnegl     ,RADI,   4, WAD,   4,   0,   0,   0,   0,
486*29648Ssam /* ED */ moval     ,ADDR,   4, WAD,   4,   0,   0,   0,   0,
487*29648Ssam /* EE */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
488*29648Ssam /* EF */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
489*29648Ssam /* F0 */ remque    ,ADDR,   4,   0,   0,   0,   0,   0,   0,
490*29648Ssam /* F1 */ bcc       , Brd,   1,   0,   0,   0,   0,   0,   0,
491*29648Ssam /* F2 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
492*29648Ssam /* F3 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
493*29648Ssam /* F4 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
494*29648Ssam /* F5 */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
495*29648Ssam /* F6 */ divf      ,RADF,   4,   0,   0,   0,   0,   0,   0,
496*29648Ssam /* F7 */ divd      ,RADF,   8,   0,   0,   0,   0,   0,   0,
497*29648Ssam /* F8 */ movblk    ,   0,   0,   0,   0,   0,   0,   0,   0,
498*29648Ssam /* F9 */ pushab    ,ADDR,   1,   0,   0,   0,   0,   0,   0,
499*29648Ssam /* FA */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0,
500*29648Ssam /* FB */ pushaw    ,ADDR,   2,   0,   0,   0,   0,   0,   0,
501*29648Ssam /* FC */ casel     ,RADI,   4,RADI,   4,RADI,   4,   0,   0,
502*29648Ssam /* FD */ pushal    ,ADDR,   4,   0,   0,   0,   0,   0,   0,
503*29648Ssam /* FE */ callf    ,Imm|Lit, 1,  PR,   1,   0,   0,   0,   0,
504*29648Ssam /* FF */ illegal   ,   0,   0,   0,   0,   0,   0,   0,   0
505*29648Ssam };
506