]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/6l/optab.c
etheriwl: don't break controller on command flush timeout
[plan9front.git] / sys / src / cmd / 6l / optab.c
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         Ynone,  Yxr,    Zpseudo,1,
19         Yml,    Ynone,  Zpseudo,1,
20         Yrf,    Ynone,  Zpseudo,1,
21         Yxr,    Ynone,  Zpseudo,1,
22         0
23 };
24 uchar   yxorb[] =
25 {
26         Yi32,   Yal,    Zib_,   1,
27         Yi32,   Ymb,    Zibo_m, 2,
28         Yrb,    Ymb,    Zr_m,   1,
29         Ymb,    Yrb,    Zm_r,   1,
30         0
31 };
32 uchar   yxorl[] =
33 {
34         Yi8,    Yml,    Zibo_m, 2,
35         Yi32,   Yax,    Zil_,   1,
36         Yi32,   Yml,    Zilo_m, 2,
37         Yrl,    Yml,    Zr_m,   1,
38         Yml,    Yrl,    Zm_r,   1,
39         0
40 };
41 uchar   yaddl[] =
42 {
43         Yi8,    Yml,    Zibo_m, 2,
44         Yi32,   Yax,    Zil_,   1,
45         Yi32,   Yml,    Zilo_m, 2,
46         Yrl,    Yml,    Zr_m,   1,
47         Yml,    Yrl,    Zm_r,   1,
48         0
49 };
50 uchar   yincb[] =
51 {
52         Ynone,  Ymb,    Zo_m,   2,
53         0
54 };
55 uchar   yincw[] =
56 {
57         Ynone,  Yml,    Zo_m,   2,
58         0
59 };
60 uchar   yincl[] =
61 {
62         Ynone,  Yml,    Zo_m,   2,
63         0
64 };
65 uchar   ycmpb[] =
66 {
67         Yal,    Yi32,   Z_ib,   1,
68         Ymb,    Yi32,   Zm_ibo, 2,
69         Ymb,    Yrb,    Zm_r,   1,
70         Yrb,    Ymb,    Zr_m,   1,
71         0
72 };
73 uchar   ycmpl[] =
74 {
75         Yml,    Yi8,    Zm_ibo, 2,
76         Yax,    Yi32,   Z_il,   1,
77         Yml,    Yi32,   Zm_ilo, 2,
78         Yml,    Yrl,    Zm_r,   1,
79         Yrl,    Yml,    Zr_m,   1,
80         0
81 };
82 uchar   yshb[] =
83 {
84         Yi1,    Ymb,    Zo_m,   2,
85         Yi32,   Ymb,    Zibo_m, 2,
86         Ycx,    Ymb,    Zo_m,   2,
87         0
88 };
89 uchar   yshl[] =
90 {
91         Yi1,    Yml,    Zo_m,   2,
92         Yi32,   Yml,    Zibo_m, 2,
93         Ycl,    Yml,    Zo_m,   2,
94         Ycx,    Yml,    Zo_m,   2,
95         0
96 };
97 uchar   ytestb[] =
98 {
99         Yi32,   Yal,    Zib_,   1,
100         Yi32,   Ymb,    Zibo_m, 2,
101         Yrb,    Ymb,    Zr_m,   1,
102         Ymb,    Yrb,    Zm_r,   1,
103         0
104 };
105 uchar   ytestl[] =
106 {
107         Yi32,   Yax,    Zil_,   1,
108         Yi32,   Yml,    Zilo_m, 2,
109         Yrl,    Yml,    Zr_m,   1,
110         Yml,    Yrl,    Zm_r,   1,
111         0
112 };
113 uchar   ymovb[] =
114 {
115         Yrb,    Ymb,    Zr_m,   1,
116         Ymb,    Yrb,    Zm_r,   1,
117         Yi32,   Yrb,    Zib_rp, 1,
118         Yi32,   Ymb,    Zibo_m, 2,
119         0
120 };
121 uchar   ymbs[] =
122 {
123         Ymb,    Ynone,  Zm_o,   2,
124         0
125 };
126 uchar   ybtl[] =
127 {
128         Yi8,    Yml,    Zibo_m, 2,
129         Yrl,    Yml,    Zr_m,   1,
130         0
131 };
132 uchar   ymovw[] =
133 {
134         Yrl,    Yml,    Zr_m,   1,
135         Yml,    Yrl,    Zm_r,   1,
136         Yi0,    Yrl,    Zclr,   1,
137         Yi32,   Yrl,    Zil_rp, 1,
138         Yi32,   Yml,    Zilo_m, 2,
139         Yiauto, Yrl,    Zaut_r, 2,
140         0
141 };
142 uchar   ymovl[] =
143 {
144         Yrl,    Yml,    Zr_m,   1,
145         Yml,    Yrl,    Zm_r,   1,
146         Yi0,    Yrl,    Zclr,   1,
147         Yi32,   Yrl,    Zil_rp, 1,
148         Yi32,   Yml,    Zilo_m, 2,
149         Yml,    Ymr,    Zm_r_xm,        1,      // MMX MOVD
150         Ymr,    Yml,    Zr_m_xm,        1,      // MMX MOVD
151         Yml,    Yxr,    Zm_r_xm,        2,      // XMM MOVD (32 bit)
152         Yxr,    Yml,    Zr_m_xm,        2,      // XMM MOVD (32 bit)
153         Yiauto, Yrl,    Zaut_r, 2,
154         0
155 };
156 uchar   yret[] =
157 {
158         Ynone,  Ynone,  Zo_iw,  1,
159         Yi32,   Ynone,  Zo_iw,  1,
160         0
161 };
162 uchar   ymovq[] =
163 {
164         Yrl,    Yml,    Zr_m,   1,      // 0x89
165         Yml,    Yrl,    Zm_r,   1,      // 0x8b
166         Yi0,    Yrl,    Zclr,   1,      // 0x31
167         Ys32,   Yrl,    Zilo_m, 2,      // 32 bit signed 0xc7,(0)
168         Yi64,   Yrl,    Ziq_rp, 1,      // 0xb8 -- 32/64 bit immediate
169         Yi32,   Yml,    Zilo_m, 2,      // 0xc7,(0)
170         Ym,     Ymr,    Zm_r_xm_nr,     1,      // MMX MOVQ (shorter encoding)
171         Ymr,    Ym,     Zr_m_xm_nr,     1,      // MMX MOVQ
172         Ymm,    Ymr,    Zm_r_xm,        1,      // MMX MOVD
173         Ymr,    Ymm,    Zr_m_xm,        1,      // MMX MOVD
174         Yxr,    Ymr,    Zm_r_xm_nr,     2,      // MOVDQ2Q
175         Yxr,    Ym,     Zr_m_xm_nr,     2,      // MOVQ xmm store
176         Yml,    Yxr,    Zm_r_xm,        2,      // MOVD xmm load
177         Yxr,    Yml,    Zr_m_xm,        2,      // MOVD xmm store
178         Yiauto, Yrl,    Zaut_r, 2,      // built-in LEAQ
179         0
180 };
181 uchar   ym_rl[] =
182 {
183         Ym,     Yrl,    Zm_r,   1,
184         0
185 };
186 uchar   yrl_m[] =
187 {
188         Yrl,    Ym,     Zr_m,   1,
189         0
190 };
191 uchar   ymb_rl[] =
192 {
193         Ymb,    Yrl,    Zmb_r,  1,
194         0
195 };
196 uchar   yml_rl[] =
197 {
198         Yml,    Yrl,    Zm_r,   1,
199         0
200 };
201 uchar   yrl_ml[] =
202 {
203         Yrl,    Yml,    Zr_m,   1,
204         0
205 };
206 uchar   yml_mb[] =
207 {
208         Yrb,    Ymb,    Zr_m,   1,
209         Ymb,    Yrb,    Zm_r,   1,
210         0
211 };
212 uchar   yrb_mb[] =
213 {
214         Yrb,    Ymb,    Zr_m,   1,
215         0
216 };
217 uchar   yml_ml[] =
218 {
219         Yrl,    Yml,    Zr_m,   1,
220         Yml,    Yrl,    Zm_r,   1,
221         0
222 };
223 uchar   ydivl[] =
224 {
225         Yml,    Ynone,  Zm_o,   2,
226         0
227 };
228 uchar   ydivb[] =
229 {
230         Ymb,    Ynone,  Zm_o,   2,
231         0
232 };
233 uchar   yimul[] =
234 {
235         Yml,    Ynone,  Zm_o,   2,
236         Yi8,    Yrl,    Zib_rr, 1,
237         Yi32,   Yrl,    Zil_rr, 1,
238         Yml,    Yrl,    Zm_r,   2,
239         0
240 };
241 uchar   ybyte[] =
242 {
243         Yi64,   Ynone,  Zbyte,  1,
244         0
245 };
246 uchar   yin[] =
247 {
248         Yi32,   Ynone,  Zib_,   1,
249         Ynone,  Ynone,  Zlit,   1,
250         0
251 };
252 uchar   yint[] =
253 {
254         Yi32,   Ynone,  Zib_,   1,
255         0
256 };
257 uchar   ypushl[] =
258 {
259         Yrl,    Ynone,  Zrp_,   1,
260         Ym,     Ynone,  Zm_o,   2,
261         Yi8,    Ynone,  Zib_,   1,
262         Yi32,   Ynone,  Zil_,   1,
263         0
264 };
265 uchar   ypopl[] =
266 {
267         Ynone,  Yrl,    Z_rp,   1,
268         Ynone,  Ym,     Zo_m,   2,
269         0
270 };
271 uchar   yscond[] =
272 {
273         Ynone,  Ymb,    Zo_m,   2,
274         0
275 };
276 uchar   yjcond[] =
277 {
278         Ynone,  Ybr,    Zbr,    1,
279         0
280 };
281 uchar   yloop[] =
282 {
283         Ynone,  Ybr,    Zloop,  1,
284         0
285 };
286 uchar   ycall[] =
287 {
288         Ynone,  Yml,    Zo_m64, 2,
289         Ynone,  Ybr,    Zcall,  1,
290         0
291 };
292 uchar   yjmp[] =
293 {
294         Ynone,  Yml,    Zo_m64, 2,
295         Ynone,  Ybr,    Zjmp,   1,
296         0
297 };
298
299 uchar   yfmvd[] =
300 {
301         Ym,     Yf0,    Zm_o,   2,
302         Yf0,    Ym,     Zo_m,   2,
303         Yrf,    Yf0,    Zm_o,   2,
304         Yf0,    Yrf,    Zo_m,   2,
305         0
306 };
307 uchar   yfmvdp[] =
308 {
309         Yf0,    Ym,     Zo_m,   2,
310         Yf0,    Yrf,    Zo_m,   2,
311         0
312 };
313 uchar   yfmvf[] =
314 {
315         Ym,     Yf0,    Zm_o,   2,
316         Yf0,    Ym,     Zo_m,   2,
317         0
318 };
319 uchar   yfmvx[] =
320 {
321         Ym,     Yf0,    Zm_o,   2,
322         0
323 };
324 uchar   yfmvp[] =
325 {
326         Yf0,    Ym,     Zo_m,   2,
327         0
328 };
329 uchar   yfadd[] =
330 {
331         Ym,     Yf0,    Zm_o,   2,
332         Yrf,    Yf0,    Zm_o,   2,
333         Yf0,    Yrf,    Zo_m,   2,
334         0
335 };
336 uchar   yfaddp[] =
337 {
338         Yf0,    Yrf,    Zo_m,   2,
339         0
340 };
341 uchar   yfxch[] =
342 {
343         Yf0,    Yrf,    Zo_m,   2,
344         Yrf,    Yf0,    Zm_o,   2,
345         0
346 };
347 uchar   ycompp[] =
348 {
349         Yf0,    Yrf,    Zo_m,   2,      /* botch is really f0,f1 */
350         0
351 };
352 uchar   ystsw[] =
353 {
354         Ynone,  Ym,     Zo_m,   2,
355         Ynone,  Yax,    Zlit,   1,
356         0
357 };
358 uchar   ystcw[] =
359 {
360         Ynone,  Ym,     Zo_m,   2,
361         Ym,     Ynone,  Zm_o,   2,
362         0
363 };
364 uchar   ysvrs[] =
365 {
366         Ynone,  Ym,     Zo_m,   2,
367         Ym,     Ynone,  Zm_o,   2,
368         0
369 };
370 uchar   ymm[] = 
371 {
372         Ymm,    Ymr,    Zm_r_xm,        1,
373         Yxm,    Yxr,    Zm_r_xm,        2,
374         0
375 };
376 uchar   yxm[] = 
377 {
378         Yxm,    Yxr,    Zm_r_xm,        1,
379         0
380 };
381 uchar   yxcvm1[] = 
382 {
383         Yxm,    Yxr,    Zm_r_xm,        2,
384         Yxm,    Ymr,    Zm_r_xm,        2,
385         0
386 };
387 uchar   yxcvm2[] =
388 {
389         Yxm,    Yxr,    Zm_r_xm,        2,
390         Ymm,    Yxr,    Zm_r_xm,        2,
391         0
392 };
393 uchar   yxmq[] = 
394 {
395         Yxm,    Yxr,    Zm_r_xm,        2,
396         0
397 };
398 uchar   yxr[] = 
399 {
400         Yxr,    Yxr,    Zm_r_xm,        1,
401         0
402 };
403 uchar   yxr_ml[] =
404 {
405         Yxr,    Yml,    Zr_m_xm,        1,
406         0
407 };
408 uchar   ymr[] =
409 {
410         Ymr,    Ymr,    Zm_r,   1,
411         0
412 };
413 uchar   ymr_ml[] =
414 {
415         Ymr,    Yml,    Zr_m_xm,        1,
416         0
417 };
418 uchar   yxcmp[] =
419 {
420         Yxm,    Yxr, Zm_r_xm,   1,
421         0
422 };
423 uchar   yxcmpi[] =
424 {
425         Yxm,    Yxr, Zm_r_i_xm, 2,
426         0
427 };
428 uchar   yxmov[] =
429 {
430         Yxm,    Yxr,    Zm_r_xm,        1,
431         Yxr,    Yxm,    Zr_m_xm,        1,
432         0
433 };
434 uchar   yxcvfl[] = 
435 {
436         Yxm,    Yrl,    Zm_r_xm,        1,
437         0
438 };
439 uchar   yxcvlf[] =
440 {
441         Yml,    Yxr,    Zm_r_xm,        1,
442         0
443 };
444 uchar   yxcvfq[] = 
445 {
446         Yxm,    Yrl,    Zm_r_xm,        2,
447         0
448 };
449 uchar   yxcvqf[] =
450 {
451         Yml,    Yxr,    Zm_r_xm,        2,
452         0
453 };
454 uchar   yps[] = 
455 {
456         Ymm,    Ymr,    Zm_r_xm,        1,
457         Yi8,    Ymr,    Zibo_m_xm,      2,
458         Yxm,    Yxr,    Zm_r_xm,        2,
459         Yi8,    Yxr,    Zibo_m_xm,      3,
460         0
461 };
462 uchar   yxrrl[] =
463 {
464         Yxr,    Yrl,    Zm_r,   1,
465         0
466 };
467 uchar   ymfp[] =
468 {
469         Ymm,    Ymr,    Zm_r_3d,        1,
470         0,
471 };
472 uchar   ymrxr[] =
473 {
474         Ymr,    Yxr,    Zm_r,   1,
475         Yxm,    Yxr,    Zm_r_xm,        1,
476         0
477 };
478 uchar   ymshuf[] =
479 {
480         Ymm,    Ymr,    Zibm_r, 1,
481         0
482 };
483 uchar   yxshuf[] =
484 {
485         Yxm,    Yxr,    Zibm_r, 1,
486         0
487 };
488 uchar   yextrw[] =
489 {
490         Yxr,    Yrl,    Zibm_r, 1,
491         0
492 };
493 uchar   ypsdq[] =
494 {
495         Yi8,    Yxr,    Zibo_m, 2,
496         0
497 };
498 uchar   ymskb[] =
499 {
500         Yxr,    Yrl,    Zm_r_xm,        2,
501         Ymr,    Yrl,    Zm_r_xm,        1,
502         0
503 };
504
505 Optab optab[] =
506 /*      as, ytab, andproto, opcode */
507 {
508         { AXXX },
509         { AAAA,         ynone,  P32, 0x37 },
510         { AAAD,         ynone,  P32, 0xd5,0x0a },
511         { AAAM,         ynone,  P32, 0xd4,0x0a },
512         { AAAS,         ynone,  P32, 0x3f },
513         { AADCB,        yxorb,  Pb, 0x14,0x80,(02),0x10,0x10 },
514         { AADCL,        yxorl,  Px, 0x83,(02),0x15,0x81,(02),0x11,0x13 },
515         { AADCQ,        yxorl,  Pw, 0x83,(02),0x15,0x81,(02),0x11,0x13 },
516         { AADCW,        yxorl,  Pe, 0x83,(02),0x15,0x81,(02),0x11,0x13 },
517         { AADDB,        yxorb,  Pb, 0x04,0x80,(00),0x00,0x02 },
518         { AADDL,        yaddl,  Px, 0x83,(00),0x05,0x81,(00),0x01,0x03 },
519         { AADDPD,       yxm,    Pq, 0x58 },
520         { AADDPS,       yxm,    Pm, 0x58 },
521         { AADDQ,        yaddl,  Pw, 0x83,(00),0x05,0x81,(00),0x01,0x03 },
522         { AADDSD,       yxm,    Pf2, 0x58 },
523         { AADDSS,       yxm,    Pf3, 0x58 },
524         { AADDW,        yaddl,  Pe, 0x83,(00),0x05,0x81,(00),0x01,0x03 },
525         { AADJSP },
526         { AANDB,        yxorb,  Pb, 0x24,0x80,(04),0x20,0x22 },
527         { AANDL,        yxorl,  Px, 0x83,(04),0x25,0x81,(04),0x21,0x23 },
528         { AANDNPD,      yxm,    Pq, 0x55 },
529         { AANDNPS,      yxm,    Pm, 0x55 },
530         { AANDPD,       yxm,    Pq, 0x54 },
531         { AANDPS,       yxm,    Pq, 0x54 },
532         { AANDQ,        yxorl,  Pw, 0x83,(04),0x25,0x81,(04),0x21,0x23 },
533         { AANDW,        yxorl,  Pe, 0x83,(04),0x25,0x81,(04),0x21,0x23 },
534         { AARPL,        yrl_ml, P32, 0x63 },
535         { ABOUNDL,      yrl_m,  P32, 0x62 },
536         { ABOUNDW,      yrl_m,  Pe, 0x62 },
537         { ABSFL,        yml_rl, Pm, 0xbc },
538         { ABSFQ,        yml_rl, Pw, 0x0f,0xbc },
539         { ABSFW,        yml_rl, Pq, 0xbc },
540         { ABSRL,        yml_rl, Pm, 0xbd },
541         { ABSRQ,        yml_rl, Pw, 0x0f,0xbd },
542         { ABSRW,        yml_rl, Pq, 0xbd },
543         { ABTCL,        ybtl,   Pm, 0xba,(07),0xbb },
544         { ABTCQ,        ybtl,   Pw, 0x0f,0xba,(07),0x0f,0xbb },
545         { ABTCW,        ybtl,   Pq, 0xba,(07),0xbb },
546         { ABTL,         ybtl,   Pm, 0xba,(04),0xa3 },
547         { ABTQ,         ybtl,   Pw, 0x0f,0xba,(04),0x0f,0xa3},
548         { ABTRL,        ybtl,   Pm, 0xba,(06),0xb3 },
549         { ABTRQ,        ybtl,   Pw, 0x0f,0xba,(06),0x0f,0xb3 },
550         { ABTRW,        ybtl,   Pq, 0xba,(06),0xb3 },
551         { ABTSL,        ybtl,   Pm, 0xba,(05),0xab  },
552         { ABTSQ,        ybtl,   Pw, 0x0f,0xba,(05),0x0f,0xab },
553         { ABTSW,        ybtl,   Pq, 0xba,(05),0xab  },
554         { ABTW,         ybtl,   Pq, 0xba,(04),0xa3 },
555         { ABYTE,        ybyte,  Px, 1 },
556         { ACALL,        ycall,  Px, 0xff,(02),0xe8 },
557         { ACDQ,         ynone,  Px, 0x99 },
558         { ACLC,         ynone,  Px, 0xf8 },
559         { ACLD,         ynone,  Px, 0xfc },
560         { ACLI,         ynone,  Px, 0xfa },
561         { ACLTS,        ynone,  Pm, 0x06 },
562         { ACMC,         ynone,  Px, 0xf5 },
563         { ACMOVLCC,     yml_rl, Pm, 0x43 },
564         { ACMOVLCS,     yml_rl, Pm, 0x42 },
565         { ACMOVLEQ,     yml_rl, Pm, 0x44 },
566         { ACMOVLGE,     yml_rl, Pm, 0x4d },
567         { ACMOVLGT,     yml_rl, Pm, 0x4f },
568         { ACMOVLHI,     yml_rl, Pm, 0x47 },
569         { ACMOVLLE,     yml_rl, Pm, 0x4e },
570         { ACMOVLLS,     yml_rl, Pm, 0x46 },
571         { ACMOVLLT,     yml_rl, Pm, 0x4c },
572         { ACMOVLMI,     yml_rl, Pm, 0x48 },
573         { ACMOVLNE,     yml_rl, Pm, 0x45 },
574         { ACMOVLOC,     yml_rl, Pm, 0x41 },
575         { ACMOVLOS,     yml_rl, Pm, 0x40 },
576         { ACMOVLPC,     yml_rl, Pm, 0x4b },
577         { ACMOVLPL,     yml_rl, Pm, 0x49 },
578         { ACMOVLPS,     yml_rl, Pm, 0x4a },
579         { ACMOVQCC,     yml_rl, Pw, 0x0f,0x43 },
580         { ACMOVQCS,     yml_rl, Pw, 0x0f,0x42 },
581         { ACMOVQEQ,     yml_rl, Pw, 0x0f,0x44 },
582         { ACMOVQGE,     yml_rl, Pw, 0x0f,0x4d },
583         { ACMOVQGT,     yml_rl, Pw, 0x0f,0x4f },
584         { ACMOVQHI,     yml_rl, Pw, 0x0f,0x47 },
585         { ACMOVQLE,     yml_rl, Pw, 0x0f,0x4e },
586         { ACMOVQLS,     yml_rl, Pw, 0x0f,0x46 },
587         { ACMOVQLT,     yml_rl, Pw, 0x0f,0x4c },
588         { ACMOVQMI,     yml_rl, Pw, 0x0f,0x48 },
589         { ACMOVQNE,     yml_rl, Pw, 0x0f,0x45 },
590         { ACMOVQOC,     yml_rl, Pw, 0x0f,0x41 },
591         { ACMOVQOS,     yml_rl, Pw, 0x0f,0x40 },
592         { ACMOVQPC,     yml_rl, Pw, 0x0f,0x4b },
593         { ACMOVQPL,     yml_rl, Pw, 0x0f,0x49 },
594         { ACMOVQPS,     yml_rl, Pw, 0x0f,0x4a },
595         { ACMOVWCC,     yml_rl, Pq, 0x43 },
596         { ACMOVWCS,     yml_rl, Pq, 0x42 },
597         { ACMOVWEQ,     yml_rl, Pq, 0x44 },
598         { ACMOVWGE,     yml_rl, Pq, 0x4d },
599         { ACMOVWGT,     yml_rl, Pq, 0x4f },
600         { ACMOVWHI,     yml_rl, Pq, 0x47 },
601         { ACMOVWLE,     yml_rl, Pq, 0x4e },
602         { ACMOVWLS,     yml_rl, Pq, 0x46 },
603         { ACMOVWLT,     yml_rl, Pq, 0x4c },
604         { ACMOVWMI,     yml_rl, Pq, 0x48 },
605         { ACMOVWNE,     yml_rl, Pq, 0x45 },
606         { ACMOVWOC,     yml_rl, Pq, 0x41 },
607         { ACMOVWOS,     yml_rl, Pq, 0x40 },
608         { ACMOVWPC,     yml_rl, Pq, 0x4b },
609         { ACMOVWPL,     yml_rl, Pq, 0x49 },
610         { ACMOVWPS,     yml_rl, Pq, 0x4a },
611         { ACMPB,        ycmpb,  Pb, 0x3c,0x80,(07),0x38,0x3a },
612         { ACMPL,        ycmpl,  Px, 0x83,(07),0x3d,0x81,(07),0x39,0x3b },
613         { ACMPPD,       yxcmpi, Px, Pe,0xc2 },
614         { ACMPPS,       yxcmpi, Pm, 0xc2,0 },
615         { ACMPQ,        ycmpl,  Pw, 0x83,(07),0x3d,0x81,(07),0x39,0x3b },
616         { ACMPSB,       ynone,  Pb, 0xa6 },
617         { ACMPSD,       yxcmpi, Px, Pf2,0xc2 },
618         { ACMPSL,       ynone,  Px, 0xa7 },
619         { ACMPSQ,       ynone,  Pw, 0xa7 },
620         { ACMPSS,       yxcmpi, Px, Pf3,0xc2 },
621         { ACMPSW,       ynone,  Pe, 0xa7 },
622         { ACMPW,        ycmpl,  Pe, 0x83,(07),0x3d,0x81,(07),0x39,0x3b },
623         { ACOMISD,      yxcmp,  Pe, 0x2f },
624         { ACOMISS,      yxcmp,  Pm, 0x2f },
625         { ACPUID,       ynone,  Pm, 0xa2 },
626         { ACVTPL2PD,    yxcvm2, Px, Pf3,0xe6,Pe,0x2a },
627         { ACVTPL2PS,    yxcvm2, Pm, 0x5b,0,0x2a,0, },
628         { ACVTPD2PL,    yxcvm1, Px, Pf2,0xe6,Pe,0x2d },
629         { ACVTPD2PS,    yxm,    Pe, 0x5a },
630         { ACVTPS2PL,    yxcvm1, Px, Pe,0x5b,Pm,0x2d },
631         { ACVTPS2PD,    yxm,    Pm, 0x5a },
632         { API2FW,       ymfp,   Px, 0x0c },
633         { ACVTSD2SL,    yxcvfl, Pf2, 0x2d },
634         { ACVTSD2SQ,    yxcvfq, Pw, Pf2,0x2d },
635         { ACVTSD2SS,    yxm,    Pf2, 0x5a },
636         { ACVTSL2SD,    yxcvlf, Pf2, 0x2a },
637         { ACVTSQ2SD,    yxcvqf, Pw, Pf2,0x2a },
638         { ACVTSL2SS,    yxcvlf, Pf3, 0x2a },
639         { ACVTSQ2SS,    yxcvqf, Pw, Pf3,0x2a },
640         { ACVTSS2SD,    yxm,    Pf3, 0x5a },
641         { ACVTSS2SL,    yxcvfl, Pf3, 0x2d },
642         { ACVTSS2SQ,    yxcvfq, Pw, Pf3,0x2d },
643         { ACVTTPD2PL,   yxcvm1, Px, Pe,0xe6,Pe,0x2c },
644         { ACVTTPS2PL,   yxcvm1, Px, Pf3,0x5b,Pm,0x2c },
645         { ACVTTSD2SL,   yxcvfl, Pf2, 0x2c },
646         { ACVTTSD2SQ,   yxcvfq, Pw, Pf2,0x2c },
647         { ACVTTSS2SL,   yxcvfl, Pf3, 0x2c },
648         { ACVTTSS2SQ,   yxcvfq, Pw, Pf3,0x2c },
649         { ACWD,         ynone,  Pe, 0x99 },
650         { ACQO,         ynone,  Pw, 0x99 },
651         { ADAA,         ynone,  P32, 0x27 },
652         { ADAS,         ynone,  P32, 0x2f },
653         { ADATA },
654         { ADECB,        yincb,  Pb, 0xfe,(01) },
655         { ADECL,        yincl,  Px, 0xff,(01) },
656         { ADECQ,        yincl,  Pw, 0xff,(01) },
657         { ADECW,        yincw,  Pe, 0xff,(01) },
658         { ADIVB,        ydivb,  Pb, 0xf6,(06) },
659         { ADIVL,        ydivl,  Px, 0xf7,(06) },
660         { ADIVPD,       yxm,    Pe, 0x5e },
661         { ADIVPS,       yxm,    Pm, 0x5e },
662         { ADIVQ,        ydivl,  Pw, 0xf7,(06) },
663         { ADIVSD,       yxm,    Pf2, 0x5e },
664         { ADIVSS,       yxm,    Pf3, 0x5e },
665         { ADIVW,        ydivl,  Pe, 0xf7,(06) },
666         { AEMMS,        ynone,  Pm, 0x77 },
667         { AENTER },                             /* botch */
668         { AFXRSTOR,     ysvrs,  Pm, 0xae,(01),0xae,(01) },
669         { AFXSAVE,      ysvrs,  Pm, 0xae,(00),0xae,(00) },
670         { AFXRSTOR64,   ysvrs,  Pw, 0x0f,0xae,(01),0x0f,0xae,(01) },
671         { AFXSAVE64,    ysvrs,  Pw, 0x0f,0xae,(00),0x0f,0xae,(00) },
672         { AGLOBL },
673         { AGOK },
674         { AHISTORY },
675         { AHLT,         ynone,  Px, 0xf4 },
676         { AIDIVB,       ydivb,  Pb, 0xf6,(07) },
677         { AIDIVL,       ydivl,  Px, 0xf7,(07) },
678         { AIDIVQ,       ydivl,  Pw, 0xf7,(07) },
679         { AIDIVW,       ydivl,  Pe, 0xf7,(07) },
680         { AIMULB,       ydivb,  Pb, 0xf6,(05) },
681         { AIMULL,       yimul,  Px, 0xf7,(05),0x6b,0x69,Pm,0xaf },
682         { AIMULQ,       yimul,  Pw, 0xf7,(05),0x6b,0x69,Pm,0xaf },
683         { AIMULW,       yimul,  Pe, 0xf7,(05),0x6b,0x69,Pm,0xaf },
684         { AINB,         yin,    Pb, 0xe4,0xec },
685         { AINCB,        yincb,  Pb, 0xfe,(00) },
686         { AINCL,        yincl,  Px, 0xff,(00) },
687         { AINCQ,        yincl,  Pw, 0xff,(00) },
688         { AINCW,        yincw,  Pe, 0xff,(00) },
689         { AINL,         yin,    Px, 0xe5,0xed },
690         { AINSB,        ynone,  Pb, 0x6c },
691         { AINSL,        ynone,  Px, 0x6d },
692         { AINSW,        ynone,  Pe, 0x6d },
693         { AINT,         yint,   Px, 0xcd },
694         { AINTO,        ynone,  P32, 0xce },
695         { AINW,         yin,    Pe, 0xe5,0xed },
696         { AIRETL,       ynone,  Px, 0xcf },
697         { AIRETQ,       ynone,  Pw, 0xcf },
698         { AIRETW,       ynone,  Pe, 0xcf },
699         { AJCC,         yjcond, Px, 0x73,0x83,(00) },
700         { AJCS,         yjcond, Px, 0x72,0x82 },
701         { AJCXZ,        yloop,  Px, 0xe3 },
702         { AJEQ,         yjcond, Px, 0x74,0x84 },
703         { AJGE,         yjcond, Px, 0x7d,0x8d },
704         { AJGT,         yjcond, Px, 0x7f,0x8f },
705         { AJHI,         yjcond, Px, 0x77,0x87 },
706         { AJLE,         yjcond, Px, 0x7e,0x8e },
707         { AJLS,         yjcond, Px, 0x76,0x86 },
708         { AJLT,         yjcond, Px, 0x7c,0x8c },
709         { AJMI,         yjcond, Px, 0x78,0x88 },
710         { AJMP,         yjmp,   Px, 0xff,(04),0xeb,0xe9 },
711         { AJNE,         yjcond, Px, 0x75,0x85 },
712         { AJOC,         yjcond, Px, 0x71,0x81,(00) },
713         { AJOS,         yjcond, Px, 0x70,0x80,(00) },
714         { AJPC,         yjcond, Px, 0x7b,0x8b },
715         { AJPL,         yjcond, Px, 0x79,0x89 },
716         { AJPS,         yjcond, Px, 0x7a,0x8a },
717         { ALAHF,        ynone,  Px, 0x9f },
718         { ALARL,        yml_rl, Pm, 0x02 },
719         { ALARW,        yml_rl, Pq, 0x02 },
720         { ALDMXCSR,     ysvrs,  Pm, 0xae,(02),0xae,(02) },
721         { ALEAL,        ym_rl,  Px, 0x8d },
722         { ALEAQ,        ym_rl,  Pw, 0x8d },
723         { ALEAVEL,      ynone,  P32, 0xc9 },
724         { ALEAVEQ,      ynone,  Py, 0xc9 },
725         { ALEAVEW,      ynone,  Pe, 0xc9 },
726         { ALEAW,        ym_rl,  Pe, 0x8d },
727         { ALOCK,        ynone,  Px, 0xf0 },
728         { ALODSB,       ynone,  Pb, 0xac },
729         { ALODSL,       ynone,  Px, 0xad },
730         { ALODSQ,       ynone,  Pw, 0xad },
731         { ALODSW,       ynone,  Pe, 0xad },
732         { ALONG,        ybyte,  Px, 4 },
733         { ALOOP,        yloop,  Px, 0xe2 },
734         { ALOOPEQ,      yloop,  Px, 0xe1 },
735         { ALOOPNE,      yloop,  Px, 0xe0 },
736         { ALSLL,        yml_rl, Pm, 0x03  },
737         { ALSLW,        yml_rl, Pq, 0x03  },
738         { AMASKMOVOU,   yxr,    Pe, 0xf7 },
739         { AMASKMOVQ,    ymr,    Pm, 0xf7 },
740         { AMAXPD,       yxm,    Pe, 0x5f },
741         { AMAXPS,       yxm,    Pm, 0x5f },
742         { AMAXSD,       yxm,    Pf2, 0x5f },
743         { AMAXSS,       yxm,    Pf3, 0x5f },
744         { AMINPD,       yxm,    Pe, 0x5d },
745         { AMINPS,       yxm,    Pm, 0x5d },
746         { AMINSD,       yxm,    Pf2, 0x5d },
747         { AMINSS,       yxm,    Pf3, 0x5d },
748         { AMOVAPD,      yxmov,  Pe, 0x28,0x29 },
749         { AMOVAPS,      yxmov,  Pm, 0x28,0x29 },
750         { AMOVB,        ymovb,  Pb, 0x88,0x8a,0xb0,0xc6,(00) },
751         { AMOVBLSX,     ymb_rl, Pm, 0xbe },
752         { AMOVBLZX,     ymb_rl, Pm, 0xb6 },
753         { AMOVBQSX,     ymb_rl, Pw, 0x0f,0xbe },
754         { AMOVBQZX,     ymb_rl, Py, 0x0f,0xb6 },
755         { AMOVBWSX,     ymb_rl, Pq, 0xbe },
756         { AMOVBWZX,     ymb_rl, Pq, 0xb6 },
757         { AMOVO,        yxmov,  Pe, 0x6f,0x7f },
758         { AMOVOU,       yxmov,  Pf3, 0x6f,0x7f },
759         { AMOVHLPS,     yxr,    Pm, 0x12 },
760         { AMOVHPD,      yxmov,  Pe, 0x16,0x17 },
761         { AMOVHPS,      yxmov,  Pm, 0x16,0x17 },
762         { AMOVL,        ymovl,  Px, 0x89,0x8b,0x31,0xb8,0xc7,(00),0x6e,0x7e,Pe,0x6e,Pe,0x7e },
763         { AMOVLHPS,     yxr,    Pm, 0x16 },
764         { AMOVLPD,      yxmov,  Pe, 0x12,0x13 },
765         { AMOVLPS,      yxmov,  Pm, 0x12,0x13 },
766         { AMOVLQSX,     yml_rl, Pw, 0x63 },
767         { AMOVLQZX,     yml_rl, Px, 0x8b },
768         { AMOVMSKPD,    yxrrl,  Pq, 0x50 },
769         { AMOVMSKPS,    yxrrl,  Pm, 0x50 },
770         { AMOVNTO,      yxr_ml, Pe, 0xe7 },
771         { AMOVNTPD,     yxr_ml, Pe, 0x2b },
772         { AMOVNTPS,     yxr_ml, Pm, 0x2b },
773         { AMOVNTQ,      ymr_ml, Pm, 0xe7 },
774         { AMOVQ,        ymovq,  Pw, 0x89,0x8b,0x31,0xc7,(00),0xb8,0xc7,(00),0x6f,0x7f,0x6e,0x7e,Pf2,0xd6,Pe,0xd6,Pe,0x6e,Pe,0x7e },
775         { AMOVQL,       yrl_ml, Px,     0x89 },
776         { AMOVQOZX,     ymrxr,  Pf3, 0xd6,0x7e },
777         { AMOVSB,       ynone,  Pb, 0xa4 },
778         { AMOVSD,       yxmov,  Pf2, 0x10,0x11 },
779         { AMOVSL,       ynone,  Px, 0xa5 },
780         { AMOVSQ,       ynone,  Pw, 0xa5 },
781         { AMOVSS,       yxmov,  Pf3, 0x10,0x11 },
782         { AMOVSW,       ynone,  Pe, 0xa5 },
783         { AMOVUPD,      yxmov,  Pe, 0x10,0x11 },
784         { AMOVUPS,      yxmov,  Pm, 0x10,0x11 },
785         { AMOVW,        ymovw,  Pe, 0x89,0x8b,0x31,0xb8,0xc7,(00) },
786         { AMOVWLSX,     yml_rl, Pm, 0xbf },
787         { AMOVWLZX,     yml_rl, Pm, 0xb7 },
788         { AMOVWQSX,     yml_rl, Pw, 0x0f,0xbf },
789         { AMOVWQZX,     yml_rl, Py, 0x0f,0xb7 },
790         { AMULB,        ydivb,  Pb, 0xf6,(04) },
791         { AMULL,        ydivl,  Px, 0xf7,(04) },
792         { AMULPD,       yxm,    Pe, 0x59 },
793         { AMULPS,       yxm,    Ym, 0x59 },
794         { AMULQ,        ydivl,  Pw, 0xf7,(04) },
795         { AMULSD,       yxm,    Pf2, 0x59 },
796         { AMULSS,       yxm,    Pf3, 0x59 },
797         { AMULW,        ydivl,  Pe, 0xf7,(04) },
798         { ANAME },
799         { ANEGB,        yscond, Pb, 0xf6,(03) },
800         { ANEGL,        yscond, Px, 0xf7,(03) },
801         { ANEGQ,        yscond, Pw, 0xf7,(03) },
802         { ANEGW,        yscond, Pe, 0xf7,(03) },
803         { ANOP,         ynop,   Px, 0,0 },
804         { ANOTB,        yscond, Pb, 0xf6,(02) },
805         { ANOTL,        yscond, Px, 0xf7,(02) },
806         { ANOTQ,        yscond, Pw, 0xf7,(02) },
807         { ANOTW,        yscond, Pe, 0xf7,(02) },
808         { AORB,         yxorb,  Pb, 0x0c,0x80,(01),0x08,0x0a },
809         { AORL,         yxorl,  Px, 0x83,(01),0x0d,0x81,(01),0x09,0x0b },
810         { AORPD,        yxm,    Pq, 0x56 },
811         { AORPS,        yxm,    Pm, 0x56 },
812         { AORQ,         yxorl,  Pw, 0x83,(01),0x0d,0x81,(01),0x09,0x0b },
813         { AORW,         yxorl,  Pe, 0x83,(01),0x0d,0x81,(01),0x09,0x0b },
814         { AOUTB,        yin,    Pb, 0xe6,0xee },
815         { AOUTL,        yin,    Px, 0xe7,0xef },
816         { AOUTSB,       ynone,  Pb, 0x6e },
817         { AOUTSL,       ynone,  Px, 0x6f },
818         { AOUTSW,       ynone,  Pe, 0x6f },
819         { AOUTW,        yin,    Pe, 0xe7,0xef },
820         { APACKSSLW,    ymm,    Py, 0x6b,Pe,0x6b },
821         { APACKSSWB,    ymm,    Py, 0x63,Pe,0x63 },
822         { APACKUSWB,    ymm,    Py, 0x67,Pe,0x67 },
823         { APADDB,       ymm,    Py, 0xfc,Pe,0xfc },
824         { APADDL,       ymm,    Py, 0xfe,Pe,0xfe },
825         { APADDQ,       yxm,    Pe, 0xd4 },
826         { APADDSB,      ymm,    Py, 0xec,Pe,0xec },
827         { APADDSW,      ymm,    Py, 0xed,Pe,0xed },
828         { APADDUSB,     ymm,    Py, 0xdc,Pe,0xdc },
829         { APADDUSW,     ymm,    Py, 0xdd,Pe,0xdd },
830         { APADDW,       ymm,    Py, 0xfd,Pe,0xfd },
831         { APAND,        ymm,    Py, 0xdb,Pe,0xdb },
832         { APANDN,       ymm,    Py, 0xdf,Pe,0xdf },
833         { APAVGB,       ymm,    Py, 0xe0,Pe,0xe0 },
834         { APAVGW,       ymm,    Py, 0xe3,Pe,0xe3 },
835         { APCMPEQB,     ymm,    Py, 0x74,Pe,0x74 },
836         { APCMPEQL,     ymm,    Py, 0x76,Pe,0x76 },
837         { APCMPEQW,     ymm,    Py, 0x75,Pe,0x75 },
838         { APCMPGTB,     ymm,    Py, 0x64,Pe,0x64 },
839         { APCMPGTL,     ymm,    Py, 0x66,Pe,0x66 },
840         { APCMPGTW,     ymm,    Py, 0x65,Pe,0x65 },
841         { APEXTRW,      yextrw, Pq, 0xc5 },
842         { APF2IL,       ymfp,   Px, 0x1d },
843         { APF2IW,       ymfp,   Px, 0x1c },
844         { API2FL,       ymfp,   Px, 0x0d },
845         { APFACC,       ymfp,   Px, 0xae },
846         { APFADD,       ymfp,   Px, 0x9e },
847         { APFCMPEQ,     ymfp,   Px, 0xb0 },
848         { APFCMPGE,     ymfp,   Px, 0x90 },
849         { APFCMPGT,     ymfp,   Px, 0xa0 },
850         { APFMAX,       ymfp,   Px, 0xa4 },
851         { APFMIN,       ymfp,   Px, 0x94 },
852         { APFMUL,       ymfp,   Px, 0xb4 },
853         { APFNACC,      ymfp,   Px, 0x8a },
854         { APFPNACC,     ymfp,   Px, 0x8e },
855         { APFRCP,       ymfp,   Px, 0x96 },
856         { APFRCPIT1,    ymfp,   Px, 0xa6 },
857         { APFRCPI2T,    ymfp,   Px, 0xb6 },
858         { APFRSQIT1,    ymfp,   Px, 0xa7 },
859         { APFRSQRT,     ymfp,   Px, 0x97 },
860         { APFSUB,       ymfp,   Px, 0x9a },
861         { APFSUBR,      ymfp,   Px, 0xaa },
862         { APINSRW,      yextrw, Pq, 0xc4 },
863         { APMADDWL,     ymm,    Py, 0xf5,Pe,0xf5 },
864         { APMAXSW,      yxm,    Pe, 0xee },
865         { APMAXUB,      yxm,    Pe, 0xde },
866         { APMINSW,      yxm,    Pe, 0xea },
867         { APMINUB,      yxm,    Pe, 0xda },
868         { APMOVMSKB,    ymskb,  Px, Pe,0xd7,0xd7 },
869         { APMULHRW,     ymfp,   Px, 0xb7 },
870         { APMULHUW,     ymm,    Py, 0xe4,Pe,0xe4 },
871         { APMULHW,      ymm,    Py, 0xe5,Pe,0xe5 },
872         { APMULLW,      ymm,    Py, 0xd5,Pe,0xd5 },
873         { APMULULQ,     ymm,    Py, 0xf4,Pe,0xf4 },
874         { APOPAL,       ynone,  P32, 0x61 },
875         { APOPAW,       ynone,  Pe, 0x61 },
876         { APOPFL,       ynone,  P32, 0x9d },
877         { APOPFQ,       ynone,  Py, 0x9d },
878         { APOPFW,       ynone,  Pe, 0x9d },
879         { APOPL,        ypopl,  P32, 0x58,0x8f,(00) },
880         { APOPQ,        ypopl,  Py, 0x58,0x8f,(00) },
881         { APOPW,        ypopl,  Pe, 0x58,0x8f,(00) },
882         { APOR,         ymm,    Py, 0xeb,Pe,0xeb },
883         { APSADBW,      yxm,    Pq, 0xf6 },
884         { APSHUFHW,     yxshuf, Pf3, 0x70 },
885         { APSHUFL,      yxshuf, Pq, 0x70 },
886         { APSHUFLW,     yxshuf, Pf2, 0x70 },
887         { APSHUFW,      ymshuf, Pm, 0x70 },
888         { APSLLO,       ypsdq,  Pq, 0x73,(07) },
889         { APSLLL,       yps,    Py, 0xf2, 0x72,(06), Pe,0xf2, Pe,0x72,(06) },
890         { APSLLQ,       yps,    Py, 0xf3, 0x73,(06), Pe,0xf3, Pe,0x73,(06) },
891         { APSLLW,       yps,    Py, 0xf1, 0x71,(06), Pe,0xf1, Pe,0x71,(06) },
892         { APSRAL,       yps,    Py, 0xe2, 0x72,(04), Pe,0xe2, Pe,0x72,(04) },
893         { APSRAW,       yps,    Py, 0xe1, 0x71,(04), Pe,0xe1, Pe,0x71,(04) },
894         { APSRLO,       ypsdq,  Pq, 0x73,(03) },
895         { APSRLL,       yps,    Py, 0xd2, 0x72,(02), Pe,0xd2, Pe,0x72,(02) },
896         { APSRLQ,       yps,    Py, 0xd3, 0x73,(02), Pe,0xd3, Pe,0x73,(02) },
897         { APSRLW,       yps,    Py, 0xd1, 0x71,(02), Pe,0xe1, Pe,0x71,(02) },
898         { APSUBB,       yxm,    Pe, 0xf8 },
899         { APSUBL,       yxm,    Pe, 0xfa },
900         { APSUBQ,       yxm,    Pe, 0xfb },
901         { APSUBSB,      yxm,    Pe, 0xe8 },
902         { APSUBSW,      yxm,    Pe, 0xe9 },
903         { APSUBUSB,     yxm,    Pe, 0xd8 },
904         { APSUBUSW,     yxm,    Pe, 0xd9 },
905         { APSUBW,       yxm,    Pe, 0xf9 },
906         { APSWAPL,      ymfp,   Px, 0xbb },
907         { APUNPCKHBW,   ymm,    Py, 0x68,Pe,0x68 },
908         { APUNPCKHLQ,   ymm,    Py, 0x6a,Pe,0x6a },
909         { APUNPCKHQDQ,  yxm,    Pe, 0x6d },
910         { APUNPCKHWL,   ymm,    Py, 0x69,Pe,0x69 },
911         { APUNPCKLBW,   ymm,    Py, 0x60,Pe,0x60 },
912         { APUNPCKLLQ,   ymm,    Py, 0x62,Pe,0x62 },
913         { APUNPCKLQDQ,  yxm,    Pe, 0x6c },
914         { APUNPCKLWL,   ymm,    Py, 0x61,Pe,0x61 },
915         { APUSHAL,      ynone,  P32, 0x60 },
916         { APUSHAW,      ynone,  Pe, 0x60 },
917         { APUSHFL,      ynone,  P32, 0x9c },
918         { APUSHFQ,      ynone,  Py, 0x9c },
919         { APUSHFW,      ynone,  Pe, 0x9c },
920         { APUSHL,       ypushl, P32, 0x50,0xff,(06),0x6a,0x68 },
921         { APUSHQ,       ypushl, Py, 0x50,0xff,(06),0x6a,0x68 },
922         { APUSHW,       ypushl, Pe, 0x50,0xff,(06),0x6a,0x68 },
923         { APXOR,        ymm,    Py, 0xef,Pe,0xef },
924         { AQUAD,        ybyte,  Px, 8 },
925         { ARCLB,        yshb,   Pb, 0xd0,(02),0xc0,(02),0xd2,(02) },
926         { ARCLL,        yshl,   Px, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) },
927         { ARCLQ,        yshl,   Pw, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) },
928         { ARCLW,        yshl,   Pe, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) },
929         { ARCPPS,       yxm,    Pm, 0x53 },
930         { ARCPSS,       yxm,    Pf3, 0x53 },
931         { ARCRB,        yshb,   Pb, 0xd0,(03),0xc0,(03),0xd2,(03) },
932         { ARCRL,        yshl,   Px, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) },
933         { ARCRQ,        yshl,   Pw, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) },
934         { ARCRW,        yshl,   Pe, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) },
935         { AREP,         ynone,  Px, 0xf3 },
936         { AREPN,        ynone,  Px, 0xf2 },
937         { ARET,         ynone,  Px, 0xc3 },
938         { ARETFW,       yret,   Pe, 0xcb,0xca },
939         { ARETFL,       yret,   Px, 0xcb,0xca },
940         { ARETFQ,       yret,   Pw, 0xcb,0xca },
941         { AROLB,        yshb,   Pb, 0xd0,(00),0xc0,(00),0xd2,(00) },
942         { AROLL,        yshl,   Px, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) },
943         { AROLQ,        yshl,   Pw, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) },
944         { AROLW,        yshl,   Pe, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) },
945         { ARORB,        yshb,   Pb, 0xd0,(01),0xc0,(01),0xd2,(01) },
946         { ARORL,        yshl,   Px, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) },
947         { ARORQ,        yshl,   Pw, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) },
948         { ARORW,        yshl,   Pe, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) },
949         { ARSQRTPS,     yxm,    Pm, 0x52 },
950         { ARSQRTSS,     yxm,    Pf3, 0x52 },
951         { ASAHF,        ynone,  Px, 0x86,0xe0,0x50,0x9d },      /* XCHGB AH,AL; PUSH AX; POPFL */
952         { ASALB,        yshb,   Pb, 0xd0,(04),0xc0,(04),0xd2,(04) },
953         { ASALL,        yshl,   Px, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
954         { ASALQ,        yshl,   Pw, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
955         { ASALW,        yshl,   Pe, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
956         { ASARB,        yshb,   Pb, 0xd0,(07),0xc0,(07),0xd2,(07) },
957         { ASARL,        yshl,   Px, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) },
958         { ASARQ,        yshl,   Pw, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) },
959         { ASARW,        yshl,   Pe, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) },
960         { ASBBB,        yxorb,  Pb, 0x1c,0x80,(03),0x18,0x1a },
961         { ASBBL,        yxorl,  Px, 0x83,(03),0x1d,0x81,(03),0x19,0x1b },
962         { ASBBQ,        yxorl,  Pw, 0x83,(03),0x1d,0x81,(03),0x19,0x1b },
963         { ASBBW,        yxorl,  Pe, 0x83,(03),0x1d,0x81,(03),0x19,0x1b },
964         { ASCASB,       ynone,  Pb, 0xae },
965         { ASCASL,       ynone,  Px, 0xaf },
966         { ASCASQ,       ynone,  Pw, 0xaf },
967         { ASCASW,       ynone,  Pe, 0xaf },
968         { ASETCC,       yscond, Pm, 0x93,(00) },
969         { ASETCS,       yscond, Pm, 0x92,(00) },
970         { ASETEQ,       yscond, Pm, 0x94,(00) },
971         { ASETGE,       yscond, Pm, 0x9d,(00) },
972         { ASETGT,       yscond, Pm, 0x9f,(00) },
973         { ASETHI,       yscond, Pm, 0x97,(00) },
974         { ASETLE,       yscond, Pm, 0x9e,(00) },
975         { ASETLS,       yscond, Pm, 0x96,(00) },
976         { ASETLT,       yscond, Pm, 0x9c,(00) },
977         { ASETMI,       yscond, Pm, 0x98,(00) },
978         { ASETNE,       yscond, Pm, 0x95,(00) },
979         { ASETOC,       yscond, Pm, 0x91,(00) },
980         { ASETOS,       yscond, Pm, 0x90,(00) },
981         { ASETPC,       yscond, Pm, 0x96,(00) },
982         { ASETPL,       yscond, Pm, 0x99,(00) },
983         { ASETPS,       yscond, Pm, 0x9a,(00) },
984         { ASHLB,        yshb,   Pb, 0xd0,(04),0xc0,(04),0xd2,(04) },
985         { ASHLL,        yshl,   Px, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
986         { ASHLQ,        yshl,   Pw, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
987         { ASHLW,        yshl,   Pe, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
988         { ASHRB,        yshb,   Pb, 0xd0,(05),0xc0,(05),0xd2,(05) },
989         { ASHRL,        yshl,   Px, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) },
990         { ASHRQ,        yshl,   Pw, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) },
991         { ASHRW,        yshl,   Pe, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) },
992         { ASHUFPD,      yxshuf, Pq, 0xc6 },
993         { ASHUFPS,      yxshuf, Pm, 0xc6 },
994         { ASQRTPD,      yxm,    Pe, 0x51 },
995         { ASQRTPS,      yxm,    Pm, 0x51 },
996         { ASQRTSD,      yxm,    Pf2, 0x51 },
997         { ASQRTSS,      yxm,    Pf3, 0x51 },
998         { ASTC,         ynone,  Px, 0xf9 },
999         { ASTD,         ynone,  Px, 0xfd },
1000         { ASTI,         ynone,  Px, 0xfb },
1001         { ASTMXCSR,     ysvrs,  Pm, 0xae,(03),0xae,(03) },
1002         { ASTOSB,       ynone,  Pb, 0xaa },
1003         { ASTOSL,       ynone,  Px, 0xab },
1004         { ASTOSQ,       ynone,  Pw, 0xab },
1005         { ASTOSW,       ynone,  Pe, 0xab },
1006         { ASUBB,        yxorb,  Pb, 0x2c,0x80,(05),0x28,0x2a },
1007         { ASUBL,        yaddl,  Px, 0x83,(05),0x2d,0x81,(05),0x29,0x2b },
1008         { ASUBPD,       yxm,    Pe, 0x5c },
1009         { ASUBPS,       yxm,    Pm, 0x5c },
1010         { ASUBQ,        yaddl,  Pw, 0x83,(05),0x2d,0x81,(05),0x29,0x2b },
1011         { ASUBSD,       yxm,    Pf2, 0x5c },
1012         { ASUBSS,       yxm,    Pf3, 0x5c },
1013         { ASUBW,        yaddl,  Pe, 0x83,(05),0x2d,0x81,(05),0x29,0x2b },
1014         { ASWAPGS,      ynone,  Pm, 0x01,0xf8 },
1015         { ASYSCALL,     ynone,  Px, 0x0f,0x05 },        /* fast syscall */
1016         { ATESTB,       ytestb, Pb, 0xa8,0xf6,(00),0x84,0x84 },
1017         { ATESTL,       ytestl, Px, 0xa9,0xf7,(00),0x85,0x85 },
1018         { ATESTQ,       ytestl, Pw, 0xa9,0xf7,(00),0x85,0x85 },
1019         { ATESTW,       ytestl, Pe, 0xa9,0xf7,(00),0x85,0x85 },
1020         { ATEXT,        ytext,  Px },
1021         { AUCOMISD,     yxcmp,  Pe, 0x2e },
1022         { AUCOMISS,     yxcmp,  Pm, 0x2e },
1023         { AUNPCKHPD,    yxm,    Pe, 0x15 },
1024         { AUNPCKHPS,    yxm,    Pm, 0x15 },
1025         { AUNPCKLPD,    yxm,    Pe, 0x14 },
1026         { AUNPCKLPS,    yxm,    Pm, 0x14 },
1027         { AVERR,        ydivl,  Pm, 0x00,(04) },
1028         { AVERW,        ydivl,  Pm, 0x00,(05) },
1029         { AWAIT,        ynone,  Px, 0x9b },
1030         { AWORD,        ybyte,  Px, 2 },
1031         { AXCHGB,       yml_mb, Pb, 0x86,0x86 },
1032         { AXCHGL,       yml_ml, Px, 0x87,0x87 },
1033         { AXCHGQ,       yml_ml, Pw, 0x87,0x87 },
1034         { AXCHGW,       yml_ml, Pe, 0x87,0x87 },
1035         { AXLAT,        ynone,  Px, 0xd7 },
1036         { AXORB,        yxorb,  Pb, 0x34,0x80,(06),0x30,0x32 },
1037         { AXORL,        yxorl,  Px, 0x83,(06),0x35,0x81,(06),0x31,0x33 },
1038         { AXORPD,       yxm,    Pe, 0x57 },
1039         { AXORPS,       yxm,    Pm, 0x57 },
1040         { AXORQ,        yxorl,  Pw, 0x83,(06),0x35,0x81,(06),0x31,0x33 },
1041         { AXORW,        yxorl,  Pe, 0x83,(06),0x35,0x81,(06),0x31,0x33 },
1042
1043         { AFMOVB,       yfmvx,  Px, 0xdf,(04) },
1044         { AFMOVBP,      yfmvp,  Px, 0xdf,(06) },
1045         { AFMOVD,       yfmvd,  Px, 0xdd,(00),0xdd,(02),0xd9,(00),0xdd,(02) },
1046         { AFMOVDP,      yfmvdp, Px, 0xdd,(03),0xdd,(03) },
1047         { AFMOVF,       yfmvf,  Px, 0xd9,(00),0xd9,(02) },
1048         { AFMOVFP,      yfmvp,  Px, 0xd9,(03) },
1049         { AFMOVL,       yfmvf,  Px, 0xdb,(00),0xdb,(02) },
1050         { AFMOVLP,      yfmvp,  Px, 0xdb,(03) },
1051         { AFMOVV,       yfmvx,  Px, 0xdf,(05) },
1052         { AFMOVVP,      yfmvp,  Px, 0xdf,(07) },
1053         { AFMOVW,       yfmvf,  Px, 0xdf,(00),0xdf,(02) },
1054         { AFMOVWP,      yfmvp,  Px, 0xdf,(03) },
1055         { AFMOVX,       yfmvx,  Px, 0xdb,(05) },
1056         { AFMOVXP,      yfmvp,  Px, 0xdb,(07) },
1057
1058         { AFCOMB },
1059         { AFCOMBP },
1060         { AFCOMD,       yfadd,  Px, 0xdc,(02),0xd8,(02),0xdc,(02) },    /* botch */
1061         { AFCOMDP,      yfadd,  Px, 0xdc,(03),0xd8,(03),0xdc,(03) },    /* botch */
1062         { AFCOMDPP,     ycompp, Px, 0xde,(03) },
1063         { AFCOMF,       yfmvx,  Px, 0xd8,(02) },
1064         { AFCOMFP,      yfmvx,  Px, 0xd8,(03) },
1065         { AFCOML,       yfmvx,  Px, 0xda,(02) },
1066         { AFCOMLP,      yfmvx,  Px, 0xda,(03) },
1067         { AFCOMW,       yfmvx,  Px, 0xde,(02) },
1068         { AFCOMWP,      yfmvx,  Px, 0xde,(03) },
1069
1070         { AFUCOM,       ycompp, Px, 0xdd,(04) },
1071         { AFUCOMP,      ycompp, Px, 0xdd,(05) },
1072         { AFUCOMPP,     ycompp, Px, 0xda,(13) },
1073
1074         { AFADDDP,      yfaddp, Px, 0xde,(00) },
1075         { AFADDW,       yfmvx,  Px, 0xde,(00) },
1076         { AFADDL,       yfmvx,  Px, 0xda,(00) },
1077         { AFADDF,       yfmvx,  Px, 0xd8,(00) },
1078         { AFADDD,       yfadd,  Px, 0xdc,(00),0xd8,(00),0xdc,(00) },
1079
1080         { AFMULDP,      yfaddp, Px, 0xde,(01) },
1081         { AFMULW,       yfmvx,  Px, 0xde,(01) },
1082         { AFMULL,       yfmvx,  Px, 0xda,(01) },
1083         { AFMULF,       yfmvx,  Px, 0xd8,(01) },
1084         { AFMULD,       yfadd,  Px, 0xdc,(01),0xd8,(01),0xdc,(01) },
1085
1086         { AFSUBDP,      yfaddp, Px, 0xde,(05) },
1087         { AFSUBW,       yfmvx,  Px, 0xde,(04) },
1088         { AFSUBL,       yfmvx,  Px, 0xda,(04) },
1089         { AFSUBF,       yfmvx,  Px, 0xd8,(04) },
1090         { AFSUBD,       yfadd,  Px, 0xdc,(04),0xd8,(04),0xdc,(05) },
1091
1092         { AFSUBRDP,     yfaddp, Px, 0xde,(04) },
1093         { AFSUBRW,      yfmvx,  Px, 0xde,(05) },
1094         { AFSUBRL,      yfmvx,  Px, 0xda,(05) },
1095         { AFSUBRF,      yfmvx,  Px, 0xd8,(05) },
1096         { AFSUBRD,      yfadd,  Px, 0xdc,(05),0xd8,(05),0xdc,(04) },
1097
1098         { AFDIVDP,      yfaddp, Px, 0xde,(07) },
1099         { AFDIVW,       yfmvx,  Px, 0xde,(06) },
1100         { AFDIVL,       yfmvx,  Px, 0xda,(06) },
1101         { AFDIVF,       yfmvx,  Px, 0xd8,(06) },
1102         { AFDIVD,       yfadd,  Px, 0xdc,(06),0xd8,(06),0xdc,(07) },
1103
1104         { AFDIVRDP,     yfaddp, Px, 0xde,(06) },
1105         { AFDIVRW,      yfmvx,  Px, 0xde,(07) },
1106         { AFDIVRL,      yfmvx,  Px, 0xda,(07) },
1107         { AFDIVRF,      yfmvx,  Px, 0xd8,(07) },
1108         { AFDIVRD,      yfadd,  Px, 0xdc,(07),0xd8,(07),0xdc,(06) },
1109
1110         { AFXCHD,       yfxch,  Px, 0xd9,(01),0xd9,(01) },
1111         { AFFREE },
1112         { AFLDCW,       ystcw,  Px, 0xd9,(05),0xd9,(05) },
1113         { AFLDENV,      ystcw,  Px, 0xd9,(04),0xd9,(04) },
1114         { AFRSTOR,      ysvrs,  Px, 0xdd,(04),0xdd,(04) },
1115         { AFSAVE,       ysvrs,  Px, 0xdd,(06),0xdd,(06) },
1116         { AFSTCW,       ystcw,  Px, 0xd9,(07),0xd9,(07) },
1117         { AFSTENV,      ystcw,  Px, 0xd9,(06),0xd9,(06) },
1118         { AFSTSW,       ystsw,  Px, 0xdd,(07),0xdf,0xe0 },
1119         { AF2XM1,       ynone,  Px, 0xd9, 0xf0 },
1120         { AFABS,        ynone,  Px, 0xd9, 0xe1 },
1121         { AFCHS,        ynone,  Px, 0xd9, 0xe0 },
1122         { AFCLEX,       ynone,  Px, 0xdb, 0xe2 },
1123         { AFCOS,        ynone,  Px, 0xd9, 0xff },
1124         { AFDECSTP,     ynone,  Px, 0xd9, 0xf6 },
1125         { AFINCSTP,     ynone,  Px, 0xd9, 0xf7 },
1126         { AFINIT,       ynone,  Px, 0xdb, 0xe3 },
1127         { AFLD1,        ynone,  Px, 0xd9, 0xe8 },
1128         { AFLDL2E,      ynone,  Px, 0xd9, 0xea },
1129         { AFLDL2T,      ynone,  Px, 0xd9, 0xe9 },
1130         { AFLDLG2,      ynone,  Px, 0xd9, 0xec },
1131         { AFLDLN2,      ynone,  Px, 0xd9, 0xed },
1132         { AFLDPI,       ynone,  Px, 0xd9, 0xeb },
1133         { AFLDZ,        ynone,  Px, 0xd9, 0xee },
1134         { AFNOP,        ynone,  Px, 0xd9, 0xd0 },
1135         { AFPATAN,      ynone,  Px, 0xd9, 0xf3 },
1136         { AFPREM,       ynone,  Px, 0xd9, 0xf8 },
1137         { AFPREM1,      ynone,  Px, 0xd9, 0xf5 },
1138         { AFPTAN,       ynone,  Px, 0xd9, 0xf2 },
1139         { AFRNDINT,     ynone,  Px, 0xd9, 0xfc },
1140         { AFSCALE,      ynone,  Px, 0xd9, 0xfd },
1141         { AFSIN,        ynone,  Px, 0xd9, 0xfe },
1142         { AFSINCOS,     ynone,  Px, 0xd9, 0xfb },
1143         { AFSQRT,       ynone,  Px, 0xd9, 0xfa },
1144         { AFTST,        ynone,  Px, 0xd9, 0xe4 },
1145         { AFXAM,        ynone,  Px, 0xd9, 0xe5 },
1146         { AFXTRACT,     ynone,  Px, 0xd9, 0xf4 },
1147         { AFYL2X,       ynone,  Px, 0xd9, 0xf1 },
1148         { AFYL2XP1,     ynone,  Px, 0xd9, 0xf9 },
1149
1150         { ACMPXCHGB,    yrb_mb, Pb, 0x0f,0xb0 },
1151         { ACMPXCHGL,    yrl_ml, Px, 0x0f,0xb1 },
1152         { ACMPXCHGW,    yrl_ml, Pe, 0x0f,0xb1 },
1153         { ACMPXCHGQ,    yrl_ml, Pw, 0x0f,0xb1 },
1154         { ACMPXCHG8B,   yscond, Pm, 0xc7,(01) },
1155         { AINVD,        ynone,  Pm, 0x08 },
1156         { AINVLPG,      ymbs,   Pm, 0x01,(07) },
1157         { ALFENCE,      ynone,  Pm, 0xae,0xe8 },
1158         { AMFENCE,      ynone,  Pm, 0xae,0xf0 },
1159         { AMOVNTIL,     yrl_ml, Pm, 0xc3 },
1160         { AMOVNTIQ,     yrl_ml, Pw, 0x0f,0xc3 },
1161         { ARDMSR,       ynone,  Pm, 0x32 },
1162         { ARDPMC,       ynone,  Pm, 0x33 },
1163         { ARDTSC,       ynone,  Pm, 0x31 },
1164         { ARSM,         ynone,  Pm, 0xaa },
1165         { ASFENCE,      ynone,  Pm, 0xae,0xf8 },
1166         { ASYSRET,      ynone,  Pm, 0x07 },
1167         { AWBINVD,      ynone,  Pm, 0x09 },
1168         { AWRMSR,       ynone,  Pm, 0x30 },
1169
1170         { AXADDB,       yrb_mb, Pb, 0x0f,0xc0 },
1171         { AXADDL,       yrl_ml, Px, 0x0f,0xc1 },
1172         { AXADDQ,       yrl_ml, Pw, 0x0f,0xc1 },
1173         { AXADDW,       yrl_ml, Pe, 0x0f,0xc1 },
1174
1175         { AEND },
1176         0
1177 };
1178
1179 Optab*  opindex[ALAST+1];
1180
1181 /*
1182 AMOVD   0f 6e/r mmx,reg/mem32[mem64-rex?]
1183 AMOVD   0f 7e/r reg/mem32[64],mmx       STORE
1184 AMOVQ   0f 6f/r mmx1,mmx2/mem64
1185 AMOVQ   0f 7f/r mmx1/mem64,mmx2
1186 */