xref: /inferno-os/utils/8l/optab.c (revision 4eb166cf184c1f102fb79e31b1465ea3e2021c39)
1 #include	"l.h"
2 
3 uchar	ynone[] =
4 {
5 	Ynone,	Ynone,	Zlit,	1,
6 	0
7 };
8 uchar	ytext[] =
9 {
10 	Ymb,	Yi32,	Zpseudo,1,
11 	0
12 };
13 uchar	ynop[] =
14 {
15 	Ynone,	Ynone,	Zpseudo,1,
16 	Ynone,	Yml,	Zpseudo,1,
17 	Ynone,	Yrf,	Zpseudo,1,
18 	Yml,	Ynone,	Zpseudo,1,
19 	Yrf,	Ynone,	Zpseudo,1,
20 	0
21 };
22 uchar	yxorb[] =
23 {
24 	Yi32,	Yal,	Zib_,	1,
25 	Yi32,	Ymb,	Zibo_m,	2,
26 	Yrb,	Ymb,	Zr_m,	1,
27 	Ymb,	Yrb,	Zm_r,	1,
28 	0
29 };
30 uchar	yxorl[] =
31 {
32 	Yi8,	Yml,	Zibo_m,	2,
33 	Yi32,	Yax,	Zil_,	1,
34 	Yi32,	Yml,	Zilo_m,	2,
35 	Yrl,	Yml,	Zr_m,	1,
36 	Yml,	Yrl,	Zm_r,	1,
37 	0
38 };
39 uchar	yaddl[] =
40 {
41 	Yi8,	Yml,	Zibo_m,	2,
42 	Yi32,	Yax,	Zil_,	1,
43 	Yi32,	Yml,	Zilo_m,	2,
44 	Yrl,	Yml,	Zr_m,	1,
45 	Yml,	Yrl,	Zm_r,	1,
46 	0
47 };
48 uchar	yincb[] =
49 {
50 	Ynone,	Ymb,	Zo_m,	2,
51 	0
52 };
53 uchar	yincl[] =
54 {
55 	Ynone,	Yrl,	Z_rp,	1,
56 	Ynone,	Yml,	Zo_m,	2,
57 	0
58 };
59 uchar	ycmpb[] =
60 {
61 	Yal,	Yi32,	Z_ib,	1,
62 	Ymb,	Yi32,	Zm_ibo,	2,
63 	Ymb,	Yrb,	Zm_r,	1,
64 	Yrb,	Ymb,	Zr_m,	1,
65 	0
66 };
67 uchar	ycmpl[] =
68 {
69 	Yml,	Yi8,	Zm_ibo,	2,
70 	Yax,	Yi32,	Z_il,	1,
71 	Yml,	Yi32,	Zm_ilo,	2,
72 	Yml,	Yrl,	Zm_r,	1,
73 	Yrl,	Yml,	Zr_m,	1,
74 	0
75 };
76 uchar	yshb[] =
77 {
78 	Yi1,	Ymb,	Zo_m,	2,
79 	Yi32,	Ymb,	Zibo_m,	2,
80 	Ycx,	Ymb,	Zo_m,	2,
81 	0
82 };
83 uchar	yshl[] =
84 {
85 	Yi1,	Yml,	Zo_m,	2,
86 	Yi32,	Yml,	Zibo_m,	2,
87 	Ycl,	Yml,	Zo_m,	2,
88 	Ycx,	Yml,	Zo_m,	2,
89 	0
90 };
91 uchar	ytestb[] =
92 {
93 	Yi32,	Yal,	Zib_,	1,
94 	Yi32,	Ymb,	Zibo_m,	2,
95 	Yrb,	Ymb,	Zr_m,	1,
96 	Ymb,	Yrb,	Zm_r,	1,
97 	0
98 };
99 uchar	ytestl[] =
100 {
101 	Yi32,	Yax,	Zil_,	1,
102 	Yi32,	Yml,	Zilo_m,	2,
103 	Yrl,	Yml,	Zr_m,	1,
104 	Yml,	Yrl,	Zm_r,	1,
105 	0
106 };
107 uchar	ymovb[] =
108 {
109 	Yrb,	Ymb,	Zr_m,	1,
110 	Ymb,	Yrb,	Zm_r,	1,
111 	Yi32,	Yrb,	Zib_rp,	1,
112 	Yi32,	Ymb,	Zibo_m,	2,
113 	0
114 };
115 uchar	ymovl[] =
116 {
117 	Yrl,	Yml,	Zr_m,	1,
118 	Yml,	Yrl,	Zm_r,	1,
119 	Yi0,	Yrl,	Zclr,	1+2,
120 //	Yi0,	Yml,	Zibo_m,	2,	// shorter but slower AND $0,dst
121 	Yi32,	Yrl,	Zil_rp,	1,
122 	Yi32,	Yml,	Zilo_m,	2,
123 	Yiauto,	Yrl,	Zaut_r,	2,
124 	0
125 };
126 uchar	ym_rl[] =
127 {
128 	Ym,	Yrl,	Zm_r,	1,
129 	0
130 };
131 uchar	yrl_m[] =
132 {
133 	Yrl,	Ym,	Zr_m,	1,
134 	0
135 };
136 uchar	ymb_rl[] =
137 {
138 	Ymb,	Yrl,	Zm_r,	1,
139 	0
140 };
141 uchar	yml_rl[] =
142 {
143 	Yml,	Yrl,	Zm_r,	1,
144 	0
145 };
146 uchar	yrl_ml[] =
147 {
148 	Yrl,	Yml,	Zr_m,	1,
149 	0
150 };
151 uchar	yml_mb[] =
152 {
153 	Yrb,	Ymb,	Zr_m,	1,
154 	Ymb,	Yrb,	Zm_r,	1,
155 	0
156 };
157 uchar	yml_ml[] =
158 {
159 	Yrl,	Yml,	Zr_m,	1,
160 	Yml,	Yrl,	Zm_r,	1,
161 	0
162 };
163 uchar	ydivl[] =
164 {
165 	Yml,	Ynone,	Zm_o,	2,
166 	0
167 };
168 uchar	ydivb[] =
169 {
170 	Ymb,	Ynone,	Zm_o,	2,
171 	0
172 };
173 uchar	yimul[] =
174 {
175 	Yml,	Ynone,	Zm_o,	2,
176 	Yi8,	Yrl,	Zib_rr,	1,
177 	Yi32,	Yrl,	Zil_rr,	1,
178 	0
179 };
180 uchar	ybyte[] =
181 {
182 	Yi32,	Ynone,	Zbyte,	1,
183 	0
184 };
185 uchar	yin[] =
186 {
187 	Yi32,	Ynone,	Zib_,	1,
188 	Ynone,	Ynone,	Zlit,	1,
189 	0
190 };
191 uchar	yint[] =
192 {
193 	Yi32,	Ynone,	Zib_,	1,
194 	0
195 };
196 uchar	ypushl[] =
197 {
198 	Yrl,	Ynone,	Zrp_,	1,
199 	Ym,	Ynone,	Zm_o,	2,
200 	Yi8,	Ynone,	Zib_,	1,
201 	Yi32,	Ynone,	Zil_,	1,
202 	0
203 };
204 uchar	ypopl[] =
205 {
206 	Ynone,	Yrl,	Z_rp,	1,
207 	Ynone,	Ym,	Zo_m,	2,
208 	0
209 };
210 uchar	yscond[] =
211 {
212 	Ynone,	Ymb,	Zo_m,	2,
213 	0
214 };
215 uchar	yjcond[] =
216 {
217 	Ynone,	Ybr,	Zbr,	1,
218 	0
219 };
220 uchar	yloop[] =
221 {
222 	Ynone,	Ybr,	Zloop,	1,
223 	0
224 };
225 uchar	ycall[] =
226 {
227 	Ynone,	Yml,	Zo_m,	2,
228 	Ynone,	Ybr,	Zcall,	1,
229 	0
230 };
231 uchar	yjmp[] =
232 {
233 	Ynone,	Yml,	Zo_m,	2,
234 	Ynone,	Ybr,	Zjmp,	1,
235 	0
236 };
237 
238 uchar	yfmvd[] =
239 {
240 	Ym,	Yf0,	Zm_o,	2,
241 	Yf0,	Ym,	Zo_m,	2,
242 	Yrf,	Yf0,	Zm_o,	2,
243 	Yf0,	Yrf,	Zo_m,	2,
244 	0
245 };
246 uchar	yfmvdp[] =
247 {
248 	Yf0,	Ym,	Zo_m,	2,
249 	Yf0,	Yrf,	Zo_m,	2,
250 	0
251 };
252 uchar	yfmvf[] =
253 {
254 	Ym,	Yf0,	Zm_o,	2,
255 	Yf0,	Ym,	Zo_m,	2,
256 	0
257 };
258 uchar	yfmvx[] =
259 {
260 	Ym,	Yf0,	Zm_o,	2,
261 	0
262 };
263 uchar	yfmvp[] =
264 {
265 	Yf0,	Ym,	Zo_m,	2,
266 	0
267 };
268 uchar	yfadd[] =
269 {
270 	Ym,	Yf0,	Zm_o,	2,
271 	Yrf,	Yf0,	Zm_o,	2,
272 	Yf0,	Yrf,	Zo_m,	2,
273 	0
274 };
275 uchar	yfaddp[] =
276 {
277 	Yf0,	Yrf,	Zo_m,	2,
278 	0
279 };
280 uchar	yfxch[] =
281 {
282 	Yf0,	Yrf,	Zo_m,	2,
283 	Yrf,	Yf0,	Zm_o,	2,
284 	0
285 };
286 uchar	ycompp[] =
287 {
288 	Yf0,	Yrf,	Zo_m,	2,	/* botch is really f0,f1 */
289 	0
290 };
291 uchar	ystsw[] =
292 {
293 	Ynone,	Ym,	Zo_m,	2,
294 	Ynone,	Yax,	Zlit,	1,
295 	0
296 };
297 uchar	ystcw[] =
298 {
299 	Ynone,	Ym,	Zo_m,	2,
300 	Ym,	Ynone,	Zm_o,	2,
301 	0
302 };
303 uchar	ysvrs[] =
304 {
305 	Ynone,	Ym,	Zo_m,	2,
306 	Ym,	Ynone,	Zm_o,	2,
307 	0
308 };
309 
310 Optab optab[] =
311 /*	as, ytab, andproto, opcode */
312 {
313 	{ AXXX },
314 	{ AAAA,		ynone,	Px, 0x37 },
315 	{ AAAD,		ynone,	Px, 0xd5,0x0a },
316 	{ AAAM,		ynone,	Px, 0xd4,0x0a },
317 	{ AAAS,		ynone,	Px, 0x3f },
318 	{ AADCB,	yxorb,	Pb, 0x14,0x80,(02),0x10,0x10 },
319 	{ AADCL,	yxorl,	Px, 0x83,(02),0x15,0x81,(02),0x11,0x13 },
320 	{ AADCW,	yxorl,	Pe, 0x83,(02),0x15,0x81,(02),0x11,0x13 },
321 	{ AADDB,	yxorb,	Px, 0x04,0x80,(00),0x00,0x02 },
322 	{ AADDL,	yaddl,	Px, 0x83,(00),0x05,0x81,(00),0x01,0x03 },
323 	{ AADDW,	yaddl,	Pe, 0x83,(00),0x05,0x81,(00),0x01,0x03 },
324 	{ AADJSP },
325 	{ AANDB,	yxorb,	Pb, 0x24,0x80,(04),0x20,0x22 },
326 	{ AANDL,	yxorl,	Px, 0x83,(04),0x25,0x81,(04),0x21,0x23 },
327 	{ AANDW,	yxorl,	Pe, 0x83,(04),0x25,0x81,(04),0x21,0x23 },
328 	{ AARPL,	yrl_ml,	Px, 0x63 },
329 	{ ABOUNDL,	yrl_m,	Px, 0x62 },
330 	{ ABOUNDW,	yrl_m,	Pe, 0x62 },
331 	{ ABSFL,	yml_rl,	Pm, 0xbc },
332 	{ ABSFW,	yml_rl,	Pq, 0xbc },
333 	{ ABSRL,	yml_rl,	Pm, 0xbd },
334 	{ ABSRW,	yml_rl,	Pq, 0xbd },
335 	{ ABTL,		yml_rl,	Pm, 0xa3 },
336 	{ ABTW,		yml_rl,	Pq, 0xa3 },
337 	{ ABTCL,	yml_rl,	Pm, 0xbb },
338 	{ ABTCW,	yml_rl,	Pq, 0xbb },
339 	{ ABTRL,	yml_rl,	Pm, 0xb3 },
340 	{ ABTRW,	yml_rl,	Pq, 0xb3 },
341 	{ ABTSL,	yml_rl,	Pm, 0xab },
342 	{ ABTSW,	yml_rl,	Pq, 0xab },
343 	{ ABYTE,	ybyte,	Px, 1 },
344 	{ ACALL,	ycall,	Px, 0xff,(02),0xe8 },
345 	{ ACLC,		ynone,	Px, 0xf8 },
346 	{ ACLD,		ynone,	Px, 0xfc },
347 	{ ACLI,		ynone,	Px, 0xfa },
348 	{ ACLTS,	ynone,	Pm, 0x06 },
349 	{ ACMC,		ynone,	Px, 0xf5 },
350 	{ ACMPB,	ycmpb,	Pb, 0x3c,0x80,(07),0x38,0x3a },
351 	{ ACMPL,	ycmpl,	Px, 0x83,(07),0x3d,0x81,(07),0x39,0x3b },
352 	{ ACMPW,	ycmpl,	Pe, 0x83,(07),0x3d,0x81,(07),0x39,0x3b },
353 	{ ACMPSB,	ynone,	Pb, 0xa6 },
354 	{ ACMPSL,	ynone,	Px, 0xa7 },
355 	{ ACMPSW,	ynone,	Pe, 0xa7 },
356 	{ ADAA,		ynone,	Px, 0x27 },
357 	{ ADAS,		ynone,	Px, 0x2f },
358 	{ ADATA },
359 	{ ADECB,	yincb,	Pb, 0xfe,(01) },
360 	{ ADECL,	yincl,	Px, 0x48,0xff,(01) },
361 	{ ADECW,	yincl,	Pe, 0x48,0xff,(01) },
362 	{ ADIVB,	ydivb,	Pb, 0xf6,(06) },
363 	{ ADIVL,	ydivl,	Px, 0xf7,(06) },
364 	{ ADIVW,	ydivl,	Pe, 0xf7,(06) },
365 	{ AENTER },				/* botch */
366 	{ AGLOBL },
367 	{ AGOK },
368 	{ AHISTORY },
369 	{ AHLT,		ynone,	Px, 0xf4 },
370 	{ AIDIVB,	ydivb,	Pb, 0xf6,(07) },
371 	{ AIDIVL,	ydivl,	Px, 0xf7,(07) },
372 	{ AIDIVW,	ydivl,	Pe, 0xf7,(07) },
373 	{ AIMULB,	ydivb,	Pb, 0xf6,(05) },
374 	{ AIMULL,	yimul,	Px, 0xf7,(05),0x6b,0x69 },
375 	{ AIMULW,	yimul,	Pe, 0xf7,(05),0x6b,0x69 },
376 	{ AINB,		yin,	Pb, 0xe4,0xec },
377 	{ AINL,		yin,	Px, 0xe5,0xed },
378 	{ AINW,		yin,	Pe, 0xe5,0xed },
379 	{ AINCB,	yincb,	Pb, 0xfe,(00) },
380 	{ AINCL,	yincl,	Px, 0x40,0xff,(00) },
381 	{ AINCW,	yincl,	Pe, 0x40,0xff,(00) },
382 	{ AINSB,	ynone,	Pb, 0x6c },
383 	{ AINSL,	ynone,	Px, 0x6d },
384 	{ AINSW,	ynone,	Pe, 0x6d },
385 	{ AINT,		yint,	Px, 0xcd },
386 	{ AINTO,	ynone,	Px, 0xce },
387 	{ AIRETL,	ynone,	Px, 0xcf },
388 	{ AIRETW,	ynone,	Pe, 0xcf },
389 	{ AJCC,		yjcond,	Px, 0x73,0x83,(00) },
390 	{ AJCS,		yjcond,	Px, 0x72,0x82 },
391 	{ AJCXZ,	yloop,	Px, 0xe3 },
392 	{ AJEQ,		yjcond,	Px, 0x74,0x84 },
393 	{ AJGE,		yjcond,	Px, 0x7d,0x8d },
394 	{ AJGT,		yjcond,	Px, 0x7f,0x8f },
395 	{ AJHI,		yjcond,	Px, 0x77,0x87 },
396 	{ AJLE,		yjcond,	Px, 0x7e,0x8e },
397 	{ AJLS,		yjcond,	Px, 0x76,0x86 },
398 	{ AJLT,		yjcond,	Px, 0x7c,0x8c },
399 	{ AJMI,		yjcond,	Px, 0x78,0x88 },
400 	{ AJMP,		yjmp,	Px, 0xff,(04),0xeb,0xe9 },
401 	{ AJNE,		yjcond,	Px, 0x75,0x85 },
402 	{ AJOC,		yjcond,	Px, 0x71,0x81,(00) },
403 	{ AJOS,		yjcond,	Px, 0x70,0x80,(00) },
404 	{ AJPC,		yjcond,	Px, 0x7b,0x8b },
405 	{ AJPL,		yjcond,	Px, 0x79,0x89 },
406 	{ AJPS,		yjcond,	Px, 0x7a,0x8a },
407 	{ ALAHF,	ynone,	Px, 0x9f },
408 	{ ALARL,	yml_rl,	Pm, 0x02 },
409 	{ ALARW,	yml_rl,	Pq, 0x02 },
410 	{ ALEAL,	ym_rl,	Px, 0x8d },
411 	{ ALEAW,	ym_rl,	Pe, 0x8d },
412 	{ ALEAVEL,	ynone,	Px, 0xc9 },
413 	{ ALEAVEW,	ynone,	Pe, 0xc9 },
414 	{ ALOCK,	ynone,	Px, 0xf0 },
415 	{ ALODSB,	ynone,	Pb, 0xac },
416 	{ ALODSL,	ynone,	Px, 0xad },
417 	{ ALODSW,	ynone,	Pe, 0xad },
418 	{ ALONG,	ybyte,	Px, 4 },
419 	{ ALOOP,	yloop,	Px, 0xe2 },
420 	{ ALOOPEQ,	yloop,	Px, 0xe1 },
421 	{ ALOOPNE,	yloop,	Px, 0xe0 },
422 	{ ALSLL,	yml_rl,	Pm, 0x03  },
423 	{ ALSLW,	yml_rl,	Pq, 0x03  },
424 	{ AMOVB,	ymovb,	Pb, 0x88,0x8a,0xb0,0xc6,(00) },
425 	{ AMOVL,	ymovl,	Px, 0x89,0x8b,0x31,0x83,(04),0xb8,0xc7,(00) },
426 	{ AMOVW,	ymovl,	Pe, 0x89,0x8b,0x31,0x83,(04),0xb8,0xc7,(00) },
427 	{ AMOVBLSX,	ymb_rl,	Pm, 0xbe },
428 	{ AMOVBLZX,	ymb_rl,	Pm, 0xb6 },
429 	{ AMOVBWSX,	ymb_rl,	Pq, 0xbe },
430 	{ AMOVBWZX,	ymb_rl,	Pq, 0xb6 },
431 	{ AMOVWLSX,	yml_rl,	Pm, 0xbf },
432 	{ AMOVWLZX,	yml_rl,	Pm, 0xb7 },
433 	{ AMOVSB,	ynone,	Pb, 0xa4 },
434 	{ AMOVSL,	ynone,	Px, 0xa5 },
435 	{ AMOVSW,	ynone,	Pe, 0xa5 },
436 	{ AMULB,	ydivb,	Pb, 0xf6,(04) },
437 	{ AMULL,	ydivl,	Px, 0xf7,(04) },
438 	{ AMULW,	ydivl,	Pe, 0xf7,(04) },
439 	{ ANAME },
440 	{ ANEGB,	yscond,	Px, 0xf6,(03) },
441 	{ ANEGL,	yscond,	Px, 0xf7,(03) },
442 	{ ANEGW,	yscond,	Pe, 0xf7,(03) },
443 	{ ANOP,		ynop,	Px,0,0 },
444 	{ ANOTB,	yscond,	Px, 0xf6,(02) },
445 	{ ANOTL,	yscond,	Px, 0xf7,(02) },
446 	{ ANOTW,	yscond,	Pe, 0xf7,(02) },
447 	{ AORB,		yxorb,	Pb, 0x0c,0x80,(01),0x08,0x0a },
448 	{ AORL,		yxorl,	Px, 0x83,(01),0x0d,0x81,(01),0x09,0x0b },
449 	{ AORW,		yxorl,	Pe, 0x83,(01),0x0d,0x81,(01),0x09,0x0b },
450 	{ AOUTB,	yin,	Pb, 0xe6,0xee },
451 	{ AOUTL,	yin,	Px, 0xe7,0xef },
452 	{ AOUTW,	yin,	Pe, 0xe7,0xef },
453 	{ AOUTSB,	ynone,	Pb, 0x6e },
454 	{ AOUTSL,	ynone,	Px, 0x6f },
455 	{ AOUTSW,	ynone,	Pe, 0x6f },
456 	{ APOPAL,	ynone,	Px, 0x61 },
457 	{ APOPAW,	ynone,	Pe, 0x61 },
458 	{ APOPFL,	ynone,	Px, 0x9d },
459 	{ APOPFW,	ynone,	Pe, 0x9d },
460 	{ APOPL,	ypopl,	Px, 0x58,0x8f,(00) },
461 	{ APOPW,	ypopl,	Pe, 0x58,0x8f,(00) },
462 	{ APUSHAL,	ynone,	Px, 0x60 },
463 	{ APUSHAW,	ynone,	Pe, 0x60 },
464 	{ APUSHFL,	ynone,	Px, 0x9c },
465 	{ APUSHFW,	ynone,	Pe, 0x9c },
466 	{ APUSHL,	ypushl,	Px, 0x50,0xff,(06),0x6a,0x68 },
467 	{ APUSHW,	ypushl,	Pe, 0x50,0xff,(06),0x6a,0x68 },
468 	{ ARCLB,	yshb,	Pb, 0xd0,(02),0xc0,(02),0xd2,(02) },
469 	{ ARCLL,	yshl,	Px, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) },
470 	{ ARCLW,	yshl,	Pe, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) },
471 	{ ARCRB,	yshb,	Pb, 0xd0,(03),0xc0,(03),0xd2,(03) },
472 	{ ARCRL,	yshl,	Px, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) },
473 	{ ARCRW,	yshl,	Pe, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) },
474 	{ AREP,		ynone,	Px, 0xf3 },
475 	{ AREPN,	ynone,	Px, 0xf2 },
476 	{ ARET,		ynone,	Px, 0xc3 },
477 	{ AROLB,	yshb,	Pb, 0xd0,(00),0xc0,(00),0xd2,(00) },
478 	{ AROLL,	yshl,	Px, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) },
479 	{ AROLW,	yshl,	Pe, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) },
480 	{ ARORB,	yshb,	Pb, 0xd0,(01),0xc0,(01),0xd2,(01) },
481 	{ ARORL,	yshl,	Px, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) },
482 	{ ARORW,	yshl,	Pe, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) },
483 	{ ASAHF,	ynone,	Px, 0x9e },
484 	{ ASALB,	yshb,	Pb, 0xd0,(04),0xc0,(04),0xd2,(04) },
485 	{ ASALL,	yshl,	Px, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
486 	{ ASALW,	yshl,	Pe, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
487 	{ ASARB,	yshb,	Pb, 0xd0,(07),0xc0,(07),0xd2,(07) },
488 	{ ASARL,	yshl,	Px, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) },
489 	{ ASARW,	yshl,	Pe, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) },
490 	{ ASBBB,	yxorb,	Pb, 0x1c,0x80,(03),0x18,0x1a },
491 	{ ASBBL,	yxorl,	Px, 0x83,(03),0x1d,0x81,(03),0x19,0x1b },
492 	{ ASBBW,	yxorl,	Pe, 0x83,(03),0x1d,0x81,(03),0x19,0x1b },
493 	{ ASCASB,	ynone,	Pb, 0xae },
494 	{ ASCASL,	ynone,	Px, 0xaf },
495 	{ ASCASW,	ynone,	Pe, 0xaf },
496 	{ ASETCC,	yscond,	Pm, 0x93,(00) },
497 	{ ASETCS,	yscond,	Pm, 0x92,(00) },
498 	{ ASETEQ,	yscond,	Pm, 0x94,(00) },
499 	{ ASETGE,	yscond,	Pm, 0x9d,(00) },
500 	{ ASETGT,	yscond,	Pm, 0x9f,(00) },
501 	{ ASETHI,	yscond,	Pm, 0x97,(00) },
502 	{ ASETLE,	yscond,	Pm, 0x9e,(00) },
503 	{ ASETLS,	yscond,	Pm, 0x96,(00) },
504 	{ ASETLT,	yscond,	Pm, 0x9c,(00) },
505 	{ ASETMI,	yscond,	Pm, 0x98,(00) },
506 	{ ASETNE,	yscond,	Pm, 0x95,(00) },
507 	{ ASETOC,	yscond,	Pm, 0x91,(00) },
508 	{ ASETOS,	yscond,	Pm, 0x90,(00) },
509 	{ ASETPC,	yscond,	Pm, 0x96,(00) },
510 	{ ASETPL,	yscond,	Pm, 0x99,(00) },
511 	{ ASETPS,	yscond,	Pm, 0x9a,(00) },
512 	{ ACDQ,		ynone,	Px, 0x99 },
513 	{ ACWD,		ynone,	Pe, 0x99 },
514 	{ ASHLB,	yshb,	Pb, 0xd0,(04),0xc0,(04),0xd2,(04) },
515 	{ ASHLL,	yshl,	Px, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
516 	{ ASHLW,	yshl,	Pe, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
517 	{ ASHRB,	yshb,	Pb, 0xd0,(05),0xc0,(05),0xd2,(05) },
518 	{ ASHRL,	yshl,	Px, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) },
519 	{ ASHRW,	yshl,	Pe, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) },
520 	{ ASTC,		ynone,	Px, 0xf9 },
521 	{ ASTD,		ynone,	Px, 0xfd },
522 	{ ASTI,		ynone,	Px, 0xfb },
523 	{ ASTOSB,	ynone,	Pb, 0xaa },
524 	{ ASTOSL,	ynone,	Px, 0xab },
525 	{ ASTOSW,	ynone,	Pe, 0xab },
526 	{ ASUBB,	yxorb,	Pb, 0x2c,0x80,(05),0x28,0x2a },
527 	{ ASUBL,	yaddl,	Px, 0x83,(05),0x2d,0x81,(05),0x29,0x2b },
528 	{ ASUBW,	yaddl,	Pe, 0x83,(05),0x2d,0x81,(05),0x29,0x2b },
529 	{ ASYSCALL,	ynone,	Px, 0xcd,100 },
530 	{ ATESTB,	ytestb,	Pb, 0xa8,0xf6,(00),0x84,0x84 },
531 	{ ATESTL,	ytestl,	Px, 0xa9,0xf7,(00),0x85,0x85 },
532 	{ ATESTW,	ytestl,	Pe, 0xa9,0xf7,(00),0x85,0x85 },
533 	{ ATEXT,	ytext,	Px },
534 	{ AVERR,	ydivl,	Pm, 0x00,(04) },
535 	{ AVERW,	ydivl,	Pm, 0x00,(05) },
536 	{ AWAIT,	ynone,	Px, 0x9b },
537 	{ AWORD,	ybyte,	Px, 2 },
538 	{ AXCHGB,	yml_mb,	Pb, 0x86,0x86 },
539 	{ AXCHGL,	yml_ml,	Px, 0x87,0x87 },
540 	{ AXCHGW,	yml_ml,	Pe, 0x87,0x87 },
541 	{ AXLAT,	ynone,	Px, 0xd7 },
542 	{ AXORB,	yxorb,	Pb, 0x34,0x80,(06),0x30,0x32 },
543 	{ AXORL,	yxorl,	Px, 0x83,(06),0x35,0x81,(06),0x31,0x33 },
544 	{ AXORW,	yxorl,	Pe, 0x83,(06),0x35,0x81,(06),0x31,0x33 },
545 
546 	{ AFMOVB,	yfmvx,	Px, 0xdf,(04) },
547 	{ AFMOVBP,	yfmvp,	Px, 0xdf,(06) },
548 	{ AFMOVD,	yfmvd,	Px, 0xdd,(00),0xdd,(02),0xd9,(00),0xdd,(02) },
549 	{ AFMOVDP,	yfmvdp,	Px, 0xdd,(03),0xdd,(03) },
550 	{ AFMOVF,	yfmvf,	Px, 0xd9,(00),0xd9,(02) },
551 	{ AFMOVFP,	yfmvp,	Px, 0xd9,(03) },
552 	{ AFMOVL,	yfmvf,	Px, 0xdb,(00),0xdb,(02) },
553 	{ AFMOVLP,	yfmvp,	Px, 0xdb,(03) },
554 	{ AFMOVV,	yfmvx,	Px, 0xdf,(05) },
555 	{ AFMOVVP,	yfmvp,	Px, 0xdf,(07) },
556 	{ AFMOVW,	yfmvf,	Px, 0xdf,(00),0xdf,(02) },
557 	{ AFMOVWP,	yfmvp,	Px, 0xdf,(03) },
558 	{ AFMOVX,	yfmvx,	Px, 0xdb,(05) },
559 	{ AFMOVXP,	yfmvp,	Px, 0xdb,(07) },
560 
561 	{ AFCOMB },
562 	{ AFCOMBP },
563 	{ AFCOMD,	yfadd,	Px, 0xdc,(02),0xd8,(02),0xdc,(02) },	/* botch */
564 	{ AFCOMDP,	yfadd,	Px, 0xdc,(03),0xd8,(03),0xdc,(03) },	/* botch */
565 	{ AFCOMDPP,	ycompp,	Px, 0xde,(03) },
566 	{ AFCOMF,	yfmvx,	Px, 0xd8,(02) },
567 	{ AFCOMFP,	yfmvx,	Px, 0xd8,(03) },
568 	{ AFCOML,	yfmvx,	Px, 0xda,(02) },
569 	{ AFCOMLP,	yfmvx,	Px, 0xda,(03) },
570 	{ AFCOMW,	yfmvx,	Px, 0xde,(02) },
571 	{ AFCOMWP,	yfmvx,	Px, 0xde,(03) },
572 
573 	{ AFUCOM,	ycompp,	Px, 0xdd,(04) },
574 	{ AFUCOMP,	ycompp, Px, 0xdd,(05) },
575 	{ AFUCOMPP,	ycompp,	Px, 0xda,(13) },
576 
577 	{ AFADDDP,	yfaddp,	Px, 0xde,(00) },
578 	{ AFADDW,	yfmvx,	Px, 0xde,(00) },
579 	{ AFADDL,	yfmvx,	Px, 0xda,(00) },
580 	{ AFADDF,	yfmvx,	Px, 0xd8,(00) },
581 	{ AFADDD,	yfadd,	Px, 0xdc,(00),0xd8,(00),0xdc,(00) },
582 
583 	{ AFMULDP,	yfaddp,	Px, 0xde,(01) },
584 	{ AFMULW,	yfmvx,	Px, 0xde,(01) },
585 	{ AFMULL,	yfmvx,	Px, 0xda,(01) },
586 	{ AFMULF,	yfmvx,	Px, 0xd8,(01) },
587 	{ AFMULD,	yfadd,	Px, 0xdc,(01),0xd8,(01),0xdc,(01) },
588 
589 	{ AFSUBDP,	yfaddp,	Px, 0xde,(05) },
590 	{ AFSUBW,	yfmvx,	Px, 0xde,(04) },
591 	{ AFSUBL,	yfmvx,	Px, 0xda,(04) },
592 	{ AFSUBF,	yfmvx,	Px, 0xd8,(04) },
593 	{ AFSUBD,	yfadd,	Px, 0xdc,(04),0xd8,(04),0xdc,(05) },
594 
595 	{ AFSUBRDP,	yfaddp,	Px, 0xde,(04) },
596 	{ AFSUBRW,	yfmvx,	Px, 0xde,(05) },
597 	{ AFSUBRL,	yfmvx,	Px, 0xda,(05) },
598 	{ AFSUBRF,	yfmvx,	Px, 0xd8,(05) },
599 	{ AFSUBRD,	yfadd,	Px, 0xdc,(05),0xd8,(05),0xdc,(04) },
600 
601 	{ AFDIVDP,	yfaddp,	Px, 0xde,(07) },
602 	{ AFDIVW,	yfmvx,	Px, 0xde,(06) },
603 	{ AFDIVL,	yfmvx,	Px, 0xda,(06) },
604 	{ AFDIVF,	yfmvx,	Px, 0xd8,(06) },
605 	{ AFDIVD,	yfadd,	Px, 0xdc,(06),0xd8,(06),0xdc,(07) },
606 
607 	{ AFDIVRDP,	yfaddp,	Px, 0xde,(06) },
608 	{ AFDIVRW,	yfmvx,	Px, 0xde,(07) },
609 	{ AFDIVRL,	yfmvx,	Px, 0xda,(07) },
610 	{ AFDIVRF,	yfmvx,	Px, 0xd8,(07) },
611 	{ AFDIVRD,	yfadd,	Px, 0xdc,(07),0xd8,(07),0xdc,(06) },
612 
613 	{ AFXCHD,	yfxch,	Px, 0xd9,(01),0xd9,(01) },
614 	{ AFFREE },
615 	{ AFLDCW,	ystcw,	Px, 0xd9,(05),0xd9,(05) },
616 	{ AFLDENV,	ystcw,	Px, 0xd9,(04),0xd9,(04) },
617 	{ AFRSTOR,	ysvrs,	Px, 0xdd,(04),0xdd,(04) },
618 	{ AFSAVE,	ysvrs,	Px, 0xdd,(06),0xdd,(06) },
619 	{ AFSTCW,	ystcw,	Px, 0xd9,(07),0xd9,(07) },
620 	{ AFSTENV,	ystcw,	Px, 0xd9,(06),0xd9,(06) },
621 	{ AFSTSW,	ystsw,	Px, 0xdd,(07),0xdf,0xe0 },
622 	{ AF2XM1,	ynone,	Px, 0xd9, 0xf0 },
623 	{ AFABS,	ynone,	Px, 0xd9, 0xe1 },
624 	{ AFCHS,	ynone,	Px, 0xd9, 0xe0 },
625 	{ AFCLEX,	ynone,	Px, 0xdb, 0xe2 },
626 	{ AFCOS,	ynone,	Px, 0xd9, 0xff },
627 	{ AFDECSTP,	ynone,	Px, 0xd9, 0xf6 },
628 	{ AFINCSTP,	ynone,	Px, 0xd9, 0xf7 },
629 	{ AFINIT,	ynone,	Px, 0xdb, 0xe3 },
630 	{ AFLD1,	ynone,	Px, 0xd9, 0xe8 },
631 	{ AFLDL2E,	ynone,	Px, 0xd9, 0xea },
632 	{ AFLDL2T,	ynone,	Px, 0xd9, 0xe9 },
633 	{ AFLDLG2,	ynone,	Px, 0xd9, 0xec },
634 	{ AFLDLN2,	ynone,	Px, 0xd9, 0xed },
635 	{ AFLDPI,	ynone,	Px, 0xd9, 0xeb },
636 	{ AFLDZ,	ynone,	Px, 0xd9, 0xee },
637 	{ AFNOP,	ynone,	Px, 0xd9, 0xd0 },
638 	{ AFPATAN,	ynone,	Px, 0xd9, 0xf3 },
639 	{ AFPREM,	ynone,	Px, 0xd9, 0xf8 },
640 	{ AFPREM1,	ynone,	Px, 0xd9, 0xf5 },
641 	{ AFPTAN,	ynone,	Px, 0xd9, 0xf2 },
642 	{ AFRNDINT,	ynone,	Px, 0xd9, 0xfc },
643 	{ AFSCALE,	ynone,	Px, 0xd9, 0xfd },
644 	{ AFSIN,	ynone,	Px, 0xd9, 0xfe },
645 	{ AFSINCOS,	ynone,	Px, 0xd9, 0xfb },
646 	{ AFSQRT,	ynone,	Px, 0xd9, 0xfa },
647 	{ AFTST,	ynone,	Px, 0xd9, 0xe4 },
648 	{ AFXAM,	ynone,	Px, 0xd9, 0xe5 },
649 	{ AFXTRACT,	ynone,	Px, 0xd9, 0xf4 },
650 	{ AFYL2X,	ynone,	Px, 0xd9, 0xf1 },
651 	{ AFYL2XP1,	ynone,	Px, 0xd9, 0xf9 },
652 	{ AEND },
653 	0
654 };
655