Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include	"l.h"
2
 
3
uchar	ynone[] =
4
{
5
	Ynone,	Ynone,	Zlit,	1,
6
 
7
};
8
uchar	ytext[] =
9
{
10
	Ymb,	Yi32,	Zpseudo,1,
11
 
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
 
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
 
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
 
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
 
49
};
50
uchar	yincb[] =
51
{
52
	Ynone,	Ymb,	Zo_m,	2,
53
 
54
};
55
uchar	yincw[] =
56
{
57
	Ynone,	Yml,	Zo_m,	2,
58
 
59
};
60
uchar	yincl[] =
61
{
62
	Ynone,	Yml,	Zo_m,	2,
63
 
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
 
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
 
81
};
82
uchar	yshb[] =
83
{
84
	Yi1,	Ymb,	Zo_m,	2,
85
	Yi32,	Ymb,	Zibo_m,	2,
86
	Ycx,	Ymb,	Zo_m,	2,
87
 
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
 
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
 
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
 
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
 
120
};
121
uchar	ymbs[] =
122
{
123
	Ymb,	Ynone,	Zm_o,	2,
124
 
125
};
126
uchar	ybtl[] =
127
{
128
	Yi8,	Yml,	Zibo_m,	2,
129
	Yrl,	Yml,	Zr_m,	1,
130
 
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
 
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
 
155
};
156
uchar	yret[] =
157
{
158
	Ynone,	Ynone,	Zo_iw,	1,
159
	Yi32,	Ynone,	Zo_iw,	1,
160
 
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
 
180
};
181
uchar	ym_rl[] =
182
{
183
	Ym,	Yrl,	Zm_r,	1,
184
 
185
};
186
uchar	yrl_m[] =
187
{
188
	Yrl,	Ym,	Zr_m,	1,
189
 
190
};
191
uchar	ymb_rl[] =
192
{
193
	Ymb,	Yrl,	Zmb_r,	1,
194
 
195
};
196
uchar	yml_rl[] =
197
{
198
	Yml,	Yrl,	Zm_r,	1,
199
 
200
};
201
uchar	yrl_ml[] =
202
{
203
	Yrl,	Yml,	Zr_m,	1,
204
 
205
};
206
uchar	yml_mb[] =
207
{
208
	Yrb,	Ymb,	Zr_m,	1,
209
	Ymb,	Yrb,	Zm_r,	1,
210
 
211
};
212
uchar	yrb_mb[] =
213
{
214
	Yrb,	Ymb,	Zr_m,	1,
215
 
216
};
217
uchar	yml_ml[] =
218
{
219
	Yrl,	Yml,	Zr_m,	1,
220
	Yml,	Yrl,	Zm_r,	1,
221
 
222
};
223
uchar	ydivl[] =
224
{
225
	Yml,	Ynone,	Zm_o,	2,
226
 
227
};
228
uchar	ydivb[] =
229
{
230
	Ymb,	Ynone,	Zm_o,	2,
231
 
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
 
240
};
241
uchar	ybyte[] =
242
{
243
	Yi64,	Ynone,	Zbyte,	1,
244
 
245
};
246
uchar	yin[] =
247
{
248
	Yi32,	Ynone,	Zib_,	1,
249
	Ynone,	Ynone,	Zlit,	1,
250
 
251
};
252
uchar	yint[] =
253
{
254
	Yi32,	Ynone,	Zib_,	1,
255
 
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
 
264
};
265
uchar	ypopl[] =
266
{
267
	Ynone,	Yrl,	Z_rp,	1,
268
	Ynone,	Ym,	Zo_m,	2,
269
 
270
};
271
uchar	yscond[] =
272
{
273
	Ynone,	Ymb,	Zo_m,	2,
274
 
275
};
276
uchar	yjcond[] =
277
{
278
	Ynone,	Ybr,	Zbr,	1,
279
 
280
};
281
uchar	yloop[] =
282
{
283
	Ynone,	Ybr,	Zloop,	1,
284
 
285
};
286
uchar	ycall[] =
287
{
288
	Ynone,	Yml,	Zo_m64,	2,
289
	Ynone,	Ybr,	Zcall,	1,
290
 
291
};
292
uchar	yjmp[] =
293
{
294
	Ynone,	Yml,	Zo_m64,	2,
295
	Ynone,	Ybr,	Zjmp,	1,
296
 
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
 
306
};
307
uchar	yfmvdp[] =
308
{
309
	Yf0,	Ym,	Zo_m,	2,
310
	Yf0,	Yrf,	Zo_m,	2,
311
 
312
};
313
uchar	yfmvf[] =
314
{
315
	Ym,	Yf0,	Zm_o,	2,
316
	Yf0,	Ym,	Zo_m,	2,
317
 
318
};
319
uchar	yfmvx[] =
320
{
321
	Ym,	Yf0,	Zm_o,	2,
322
 
323
};
324
uchar	yfmvp[] =
325
{
326
	Yf0,	Ym,	Zo_m,	2,
327
 
328
};
329
uchar	yfadd[] =
330
{
331
	Ym,	Yf0,	Zm_o,	2,
332
	Yrf,	Yf0,	Zm_o,	2,
333
	Yf0,	Yrf,	Zo_m,	2,
334
 
335
};
336
uchar	yfaddp[] =
337
{
338
	Yf0,	Yrf,	Zo_m,	2,
339
 
340
};
341
uchar	yfxch[] =
342
{
343
	Yf0,	Yrf,	Zo_m,	2,
344
	Yrf,	Yf0,	Zm_o,	2,
345
 
346
};
347
uchar	ycompp[] =
348
{
349
	Yf0,	Yrf,	Zo_m,	2,	/* botch is really f0,f1 */
350
 
351
};
352
uchar	ystsw[] =
353
{
354
	Ynone,	Ym,	Zo_m,	2,
355
	Ynone,	Yax,	Zlit,	1,
356
 
357
};
358
uchar	ystcw[] =
359
{
360
	Ynone,	Ym,	Zo_m,	2,
361
	Ym,	Ynone,	Zm_o,	2,
362
 
363
};
364
uchar	ysvrs[] =
365
{
366
	Ynone,	Ym,	Zo_m,	2,
367
	Ym,	Ynone,	Zm_o,	2,
368
 
369
};
370
uchar	ymm[] = 
371
{
372
	Ymm,	Ymr,	Zm_r_xm,	1,
373
	Yxm,	Yxr,	Zm_r_xm,	2,
374
 
375
};
376
uchar	yxm[] = 
377
{
378
	Yxm,	Yxr,	Zm_r_xm,	1,
379
 
380
};
381
uchar	yxcvm1[] = 
382
{
383
	Yxm,	Yxr,	Zm_r_xm,	2,
384
	Yxm,	Ymr,	Zm_r_xm,	2,
385
 
386
};
387
uchar	yxcvm2[] =
388
{
389
	Yxm,	Yxr,	Zm_r_xm,	2,
390
	Ymm,	Yxr,	Zm_r_xm,	2,
391
 
392
};
393
uchar	yxmq[] = 
394
{
395
	Yxm,	Yxr,	Zm_r_xm,	2,
396
 
397
};
398
uchar	yxr[] = 
399
{
400
	Yxr,	Yxr,	Zm_r_xm,	1,
401
 
402
};
403
uchar	yxr_ml[] =
404
{
405
	Yxr,	Yml,	Zr_m_xm,	1,
406
 
407
};
408
uchar	ymr[] =
409
{
410
	Ymr,	Ymr,	Zm_r,	1,
411
 
412
};
413
uchar	ymr_ml[] =
414
{
415
	Ymr,	Yml,	Zr_m_xm,	1,
416
 
417
};
418
uchar	yxcmp[] =
419
{
420
	Yxm,	Yxr, Zm_r_xm,	1,
421
 
422
};
423
uchar	yxcmpi[] =
424
{
425
	Yxm,	Yxr, Zm_r_i_xm,	2,
426
 
427
};
428
uchar	yxmov[] =
429
{
430
	Yxm,	Yxr,	Zm_r_xm,	1,
431
	Yxr,	Yxm,	Zr_m_xm,	1,
432
 
433
};
434
uchar	yxcvfl[] = 
435
{
436
	Yxm,	Yrl,	Zm_r_xm,	1,
437
 
438
};
439
uchar	yxcvlf[] =
440
{
441
	Yml,	Yxr,	Zm_r_xm,	1,
442
 
443
};
444
uchar	yxcvfq[] = 
445
{
446
	Yxm,	Yrl,	Zm_r_xm,	2,
447
 
448
};
449
uchar	yxcvqf[] =
450
{
451
	Yml,	Yxr,	Zm_r_xm,	2,
452
 
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
 
461
};
462
uchar	yxrrl[] =
463
{
464
	Yxr,	Yrl,	Zm_r,	1,
465
 
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
 
477
};
478
uchar	ymshuf[] =
479
{
480
	Ymm,	Ymr,	Zibm_r,	1,
481
 
482
};
483
uchar	yxshuf[] =
484
{
485
	Yxm,	Yxr,	Zibm_r,	1,
486
 
487
};
488
uchar	yextrw[] =
489
{
490
	Yxr,	Yrl,	Zibm_r,	1,
491
 
492
};
493
uchar	ypsdq[] =
494
{
495
	Yi8,	Yxr,	Zibo_m,	2,
496
 
497
};
498
uchar	ymskb[] =
499
{
500
	Yxr,	Yrl,	Zm_r_xm,	2,
501
	Ymr,	Yrl,	Zm_r_xm,	1,
502
 
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,	Pw, 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
	{ AMOVQOZX,	ymrxr,	Pf3, 0xd6,0x7e },
776
	{ AMOVSB,	ynone,	Pb, 0xa4 },
777
	{ AMOVSD,	yxmov,	Pf2, 0x10,0x11 },
778
	{ AMOVSL,	ynone,	Px, 0xa5 },
779
	{ AMOVSQ,	ynone,	Pw, 0xa5 },
780
	{ AMOVSS,	yxmov,	Pf3, 0x10,0x11 },
781
	{ AMOVSW,	ynone,	Pe, 0xa5 },
782
	{ AMOVUPD,	yxmov,	Pe, 0x10,0x11 },
783
	{ AMOVUPS,	yxmov,	Pm, 0x10,0x11 },
784
	{ AMOVW,	ymovw,	Pe, 0x89,0x8b,0x31,0xb8,0xc7,(00) },
785
	{ AMOVWLSX,	yml_rl,	Pm, 0xbf },
786
	{ AMOVWLZX,	yml_rl,	Pm, 0xb7 },
787
	{ AMOVWQSX,	yml_rl,	Pw, 0x0f,0xbf },
788
	{ AMOVWQZX,	yml_rl,	Pw, 0x0f,0xb7 },
789
	{ AMULB,	ydivb,	Pb, 0xf6,(04) },
790
	{ AMULL,	ydivl,	Px, 0xf7,(04) },
791
	{ AMULPD,	yxm,	Pe, 0x59 },
792
	{ AMULPS,	yxm,	Ym, 0x59 },
793
	{ AMULQ,	ydivl,	Pw, 0xf7,(04) },
794
	{ AMULSD,	yxm,	Pf2, 0x59 },
795
	{ AMULSS,	yxm,	Pf3, 0x59 },
796
	{ AMULW,	ydivl,	Pe, 0xf7,(04) },
797
	{ ANAME },
798
	{ ANEGB,	yscond,	Pb, 0xf6,(03) },
799
	{ ANEGL,	yscond,	Px, 0xf7,(03) },
800
	{ ANEGQ,	yscond,	Pw, 0xf7,(03) },
801
	{ ANEGW,	yscond,	Pe, 0xf7,(03) },
802
	{ ANOP,		ynop,	Px, 0,0 },
803
	{ ANOTB,	yscond,	Pb, 0xf6,(02) },
804
	{ ANOTL,	yscond,	Px, 0xf7,(02) },
805
	{ ANOTQ,	yscond,	Pw, 0xf7,(02) },
806
	{ ANOTW,	yscond,	Pe, 0xf7,(02) },
807
	{ AORB,		yxorb,	Pb, 0x0c,0x80,(01),0x08,0x0a },
808
	{ AORL,		yxorl,	Px, 0x83,(01),0x0d,0x81,(01),0x09,0x0b },
809
	{ AORPD,	yxm,	Pq, 0x56 },
810
	{ AORPS,	yxm,	Pm, 0x56 },
811
	{ AORQ,		yxorl,	Pw, 0x83,(01),0x0d,0x81,(01),0x09,0x0b },
812
	{ AORW,		yxorl,	Pe, 0x83,(01),0x0d,0x81,(01),0x09,0x0b },
813
	{ AOUTB,	yin,	Pb, 0xe6,0xee },
814
	{ AOUTL,	yin,	Px, 0xe7,0xef },
815
	{ AOUTSB,	ynone,	Pb, 0x6e },
816
	{ AOUTSL,	ynone,	Px, 0x6f },
817
	{ AOUTSW,	ynone,	Pe, 0x6f },
818
	{ AOUTW,	yin,	Pe, 0xe7,0xef },
819
	{ APACKSSLW,	ymm,	Py, 0x6b,Pe,0x6b },
820
	{ APACKSSWB,	ymm,	Py, 0x63,Pe,0x63 },
821
	{ APACKUSWB,	ymm,	Py, 0x67,Pe,0x67 },
822
	{ APADDB,	ymm,	Py, 0xfc,Pe,0xfc },
823
	{ APADDL,	ymm,	Py, 0xfe,Pe,0xfe },
824
	{ APADDQ,	yxm,	Pe, 0xd4 },
825
	{ APADDSB,	ymm,	Py, 0xec,Pe,0xec },
826
	{ APADDSW,	ymm,	Py, 0xed,Pe,0xed },
827
	{ APADDUSB,	ymm,	Py, 0xdc,Pe,0xdc },
828
	{ APADDUSW,	ymm,	Py, 0xdd,Pe,0xdd },
829
	{ APADDW,	ymm,	Py, 0xfd,Pe,0xfd },
830
	{ APAND,	ymm,	Py, 0xdb,Pe,0xdb },
831
	{ APANDN,	ymm,	Py, 0xdf,Pe,0xdf },
832
	{ APAVGB,	ymm,	Py, 0xe0,Pe,0xe0 },
833
	{ APAVGW,	ymm,	Py, 0xe3,Pe,0xe3 },
834
	{ APCMPEQB,	ymm,	Py, 0x74,Pe,0x74 },
835
	{ APCMPEQL,	ymm,	Py, 0x76,Pe,0x76 },
836
	{ APCMPEQW,	ymm,	Py, 0x75,Pe,0x75 },
837
	{ APCMPGTB,	ymm,	Py, 0x64,Pe,0x64 },
838
	{ APCMPGTL,	ymm,	Py, 0x66,Pe,0x66 },
839
	{ APCMPGTW,	ymm,	Py, 0x65,Pe,0x65 },
840
	{ APEXTRW,	yextrw,	Pq, 0xc5 },
841
	{ APF2IL,	ymfp,	Px, 0x1d },
842
	{ APF2IW,	ymfp,	Px, 0x1c },
843
	{ API2FL,	ymfp,	Px, 0x0d },
844
	{ APFACC,	ymfp,	Px, 0xae },
845
	{ APFADD,	ymfp,	Px, 0x9e },
846
	{ APFCMPEQ,	ymfp,	Px, 0xb0 },
847
	{ APFCMPGE,	ymfp,	Px, 0x90 },
848
	{ APFCMPGT,	ymfp,	Px, 0xa0 },
849
	{ APFMAX,	ymfp,	Px, 0xa4 },
850
	{ APFMIN,	ymfp,	Px, 0x94 },
851
	{ APFMUL,	ymfp,	Px, 0xb4 },
852
	{ APFNACC,	ymfp,	Px, 0x8a },
853
	{ APFPNACC,	ymfp,	Px, 0x8e },
854
	{ APFRCP,	ymfp,	Px, 0x96 },
855
	{ APFRCPIT1,	ymfp,	Px, 0xa6 },
856
	{ APFRCPI2T,	ymfp,	Px, 0xb6 },
857
	{ APFRSQIT1,	ymfp,	Px, 0xa7 },
858
	{ APFRSQRT,	ymfp,	Px, 0x97 },
859
	{ APFSUB,	ymfp,	Px, 0x9a },
860
	{ APFSUBR,	ymfp,	Px, 0xaa },
861
	{ APINSRW,	yextrw,	Pq, 0xc4 },
862
	{ APMADDWL,	ymm,	Py, 0xf5,Pe,0xf5 },
863
	{ APMAXSW,	yxm,	Pe, 0xee },
864
	{ APMAXUB,	yxm,	Pe, 0xde },
865
	{ APMINSW,	yxm,	Pe, 0xea },
866
	{ APMINUB,	yxm,	Pe, 0xda },
867
	{ APMOVMSKB,	ymskb,	Px, Pe,0xd7,0xd7 },
868
	{ APMULHRW,	ymfp,	Px, 0xb7 },
869
	{ APMULHUW,	ymm,	Py, 0xe4,Pe,0xe4 },
870
	{ APMULHW,	ymm,	Py, 0xe5,Pe,0xe5 },
871
	{ APMULLW,	ymm,	Py, 0xd5,Pe,0xd5 },
872
	{ APMULULQ,	ymm,	Py, 0xf4,Pe,0xf4 },
873
	{ APOPAL,	ynone,	P32, 0x61 },
874
	{ APOPAW,	ynone,	Pe, 0x61 },
875
	{ APOPFL,	ynone,	P32, 0x9d },
876
	{ APOPFQ,	ynone,	Py, 0x9d },
877
	{ APOPFW,	ynone,	Pe, 0x9d },
878
	{ APOPL,	ypopl,	P32, 0x58,0x8f,(00) },
879
	{ APOPQ,	ypopl,	Py, 0x58,0x8f,(00) },
880
	{ APOPW,	ypopl,	Pe, 0x58,0x8f,(00) },
881
	{ APOR,		ymm,	Py, 0xeb,Pe,0xeb },
882
	{ APSADBW,	yxm,	Pq, 0xf6 },
883
	{ APSHUFHW,	yxshuf,	Pf3, 0x70 },
884
	{ APSHUFL,	yxshuf,	Pq, 0x70 },
885
	{ APSHUFLW,	yxshuf,	Pf2, 0x70 },
886
	{ APSHUFW,	ymshuf,	Pm, 0x70 },
887
	{ APSLLO,	ypsdq,	Pq, 0x73,(07) },
888
	{ APSLLL,	yps,	Py, 0xf2, 0x72,(06), Pe,0xf2, Pe,0x72,(06) },
889
	{ APSLLQ,	yps,	Py, 0xf3, 0x73,(06), Pe,0xf3, Pe,0x7e,(06) },
890
	{ APSLLW,	yps,	Py, 0xf1, 0x71,(06), Pe,0xf1, Pe,0x71,(06) },
891
	{ APSRAL,	yps,	Py, 0xe2, 0x72,(04), Pe,0xe2, Pe,0x72,(04) },
892
	{ APSRAW,	yps,	Py, 0xe1, 0x71,(04), Pe,0xe1, Pe,0x71,(04) },
893
	{ APSRLO,	ypsdq,	Pq, 0x73,(03) },
894
	{ APSRLL,	yps,	Py, 0xd2, 0x72,(02), Pe,0xd2, Pe,0x72,(02) },
895
	{ APSRLQ,	yps,	Py, 0xd3, 0x73,(02), Pe,0xd3, Pe,0x73,(02) },
896
	{ APSRLW,	yps,	Py, 0xd1, 0x71,(02), Pe,0xe1, Pe,0x71,(02) },
897
	{ APSUBB,	yxm,	Pe, 0xf8 },
898
	{ APSUBL,	yxm,	Pe, 0xfa },
899
	{ APSUBQ,	yxm,	Pe, 0xfb },
900
	{ APSUBSB,	yxm,	Pe, 0xe8 },
901
	{ APSUBSW,	yxm,	Pe, 0xe9 },
902
	{ APSUBUSB,	yxm,	Pe, 0xd8 },
903
	{ APSUBUSW,	yxm,	Pe, 0xd9 },
904
	{ APSUBW,	yxm,	Pe, 0xf9 },
905
	{ APSWAPL,	ymfp,	Px, 0xbb },
906
	{ APUNPCKHBW,	ymm,	Py, 0x68,Pe,0x68 },
907
	{ APUNPCKHLQ,	ymm,	Py, 0x6a,Pe,0x6a },
908
	{ APUNPCKHQDQ,	yxm,	Pe, 0x6d },
909
	{ APUNPCKHWL,	ymm,	Py, 0x69,Pe,0x69 },
910
	{ APUNPCKLBW,	ymm,	Py, 0x60,Pe,0x60 },
911
	{ APUNPCKLLQ,	ymm,	Py, 0x62,Pe,0x62 },
912
	{ APUNPCKLQDQ,	yxm,	Pe, 0x6c },
913
	{ APUNPCKLWL,	ymm,	Py, 0x61,Pe,0x61 },
914
	{ APUSHAL,	ynone,	P32, 0x60 },
915
	{ APUSHAW,	ynone,	Pe, 0x60 },
916
	{ APUSHFL,	ynone,	P32, 0x9c },
917
	{ APUSHFQ,	ynone,	Py, 0x9c },
918
	{ APUSHFW,	ynone,	Pe, 0x9c },
919
	{ APUSHL,	ypushl,	P32, 0x50,0xff,(06),0x6a,0x68 },
920
	{ APUSHQ,	ypushl,	Py, 0x50,0xff,(06),0x6a,0x68 },
921
	{ APUSHW,	ypushl,	Pe, 0x50,0xff,(06),0x6a,0x68 },
922
	{ APXOR,	ymm,	Py, 0xef,Pe,0xef },
923
	{ AQUAD,	ybyte,	Px, 8 },
924
	{ ARCLB,	yshb,	Pb, 0xd0,(02),0xc0,(02),0xd2,(02) },
925
	{ ARCLL,	yshl,	Px, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) },
926
	{ ARCLQ,	yshl,	Pw, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) },
927
	{ ARCLW,	yshl,	Pe, 0xd1,(02),0xc1,(02),0xd3,(02),0xd3,(02) },
928
	{ ARCPPS,	yxm,	Pm, 0x53 },
929
	{ ARCPSS,	yxm,	Pf3, 0x53 },
930
	{ ARCRB,	yshb,	Pb, 0xd0,(03),0xc0,(03),0xd2,(03) },
931
	{ ARCRL,	yshl,	Px, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) },
932
	{ ARCRQ,	yshl,	Pw, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) },
933
	{ ARCRW,	yshl,	Pe, 0xd1,(03),0xc1,(03),0xd3,(03),0xd3,(03) },
934
	{ AREP,		ynone,	Px, 0xf3 },
935
	{ AREPN,	ynone,	Px, 0xf2 },
936
	{ ARET,		ynone,	Px, 0xc3 },
937
	{ ARETFW,	yret,	Pe, 0xcb,0xca },
938
	{ ARETFL,	yret,	Px, 0xcb,0xca },
939
	{ ARETFQ,	yret,	Pw, 0xcb,0xca },
940
	{ AROLB,	yshb,	Pb, 0xd0,(00),0xc0,(00),0xd2,(00) },
941
	{ AROLL,	yshl,	Px, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) },
942
	{ AROLQ,	yshl,	Pw, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) },
943
	{ AROLW,	yshl,	Pe, 0xd1,(00),0xc1,(00),0xd3,(00),0xd3,(00) },
944
	{ ARORB,	yshb,	Pb, 0xd0,(01),0xc0,(01),0xd2,(01) },
945
	{ ARORL,	yshl,	Px, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) },
946
	{ ARORQ,	yshl,	Pw, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) },
947
	{ ARORW,	yshl,	Pe, 0xd1,(01),0xc1,(01),0xd3,(01),0xd3,(01) },
948
	{ ARSQRTPS,	yxm,	Pm, 0x52 },
949
	{ ARSQRTSS,	yxm,	Pf3, 0x52 },
950
	{ ASAHF,	ynone,	Px, 0x86,0xe0,0x50,0x9d },	/* XCHGB AH,AL; PUSH AX; POPFL */
951
	{ ASALB,	yshb,	Pb, 0xd0,(04),0xc0,(04),0xd2,(04) },
952
	{ ASALL,	yshl,	Px, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
953
	{ ASALQ,	yshl,	Pw, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
954
	{ ASALW,	yshl,	Pe, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
955
	{ ASARB,	yshb,	Pb, 0xd0,(07),0xc0,(07),0xd2,(07) },
956
	{ ASARL,	yshl,	Px, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) },
957
	{ ASARQ,	yshl,	Pw, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) },
958
	{ ASARW,	yshl,	Pe, 0xd1,(07),0xc1,(07),0xd3,(07),0xd3,(07) },
959
	{ ASBBB,	yxorb,	Pb, 0x1c,0x80,(03),0x18,0x1a },
960
	{ ASBBL,	yxorl,	Px, 0x83,(03),0x1d,0x81,(03),0x19,0x1b },
961
	{ ASBBQ,	yxorl,	Pw, 0x83,(03),0x1d,0x81,(03),0x19,0x1b },
962
	{ ASBBW,	yxorl,	Pe, 0x83,(03),0x1d,0x81,(03),0x19,0x1b },
963
	{ ASCASB,	ynone,	Pb, 0xae },
964
	{ ASCASL,	ynone,	Px, 0xaf },
965
	{ ASCASQ,	ynone,	Pw, 0xaf },
966
	{ ASCASW,	ynone,	Pe, 0xaf },
967
	{ ASETCC,	yscond,	Pm, 0x93,(00) },
968
	{ ASETCS,	yscond,	Pm, 0x92,(00) },
969
	{ ASETEQ,	yscond,	Pm, 0x94,(00) },
970
	{ ASETGE,	yscond,	Pm, 0x9d,(00) },
971
	{ ASETGT,	yscond,	Pm, 0x9f,(00) },
972
	{ ASETHI,	yscond,	Pm, 0x97,(00) },
973
	{ ASETLE,	yscond,	Pm, 0x9e,(00) },
974
	{ ASETLS,	yscond,	Pm, 0x96,(00) },
975
	{ ASETLT,	yscond,	Pm, 0x9c,(00) },
976
	{ ASETMI,	yscond,	Pm, 0x98,(00) },
977
	{ ASETNE,	yscond,	Pm, 0x95,(00) },
978
	{ ASETOC,	yscond,	Pm, 0x91,(00) },
979
	{ ASETOS,	yscond,	Pm, 0x90,(00) },
980
	{ ASETPC,	yscond,	Pm, 0x96,(00) },
981
	{ ASETPL,	yscond,	Pm, 0x99,(00) },
982
	{ ASETPS,	yscond,	Pm, 0x9a,(00) },
983
	{ ASHLB,	yshb,	Pb, 0xd0,(04),0xc0,(04),0xd2,(04) },
984
	{ ASHLL,	yshl,	Px, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
985
	{ ASHLQ,	yshl,	Pw, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
986
	{ ASHLW,	yshl,	Pe, 0xd1,(04),0xc1,(04),0xd3,(04),0xd3,(04) },
987
	{ ASHRB,	yshb,	Pb, 0xd0,(05),0xc0,(05),0xd2,(05) },
988
	{ ASHRL,	yshl,	Px, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) },
989
	{ ASHRQ,	yshl,	Pw, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) },
990
	{ ASHRW,	yshl,	Pe, 0xd1,(05),0xc1,(05),0xd3,(05),0xd3,(05) },
991
	{ ASHUFPD,	yxshuf,	Pq, 0xc6 },
992
	{ ASHUFPS,	yxshuf,	Pm, 0xc6 },
993
	{ ASQRTPD,	yxm,	Pe, 0x51 },
994
	{ ASQRTPS,	yxm,	Pm, 0x51 },
995
	{ ASQRTSD,	yxm,	Pf2, 0x51 },
996
	{ ASQRTSS,	yxm,	Pf3, 0x51 },
997
	{ ASTC,		ynone,	Px, 0xf9 },
998
	{ ASTD,		ynone,	Px, 0xfd },
999
	{ ASTI,		ynone,	Px, 0xfb },
1000
	{ ASTMXCSR,	ysvrs,	Pm, 0xae,(03),0xae,(03) },
1001
	{ ASTOSB,	ynone,	Pb, 0xaa },
1002
	{ ASTOSL,	ynone,	Px, 0xab },
1003
	{ ASTOSQ,	ynone,	Pw, 0xab },
1004
	{ ASTOSW,	ynone,	Pe, 0xab },
1005
	{ ASUBB,	yxorb,	Pb, 0x2c,0x80,(05),0x28,0x2a },
1006
	{ ASUBL,	yaddl,	Px, 0x83,(05),0x2d,0x81,(05),0x29,0x2b },
1007
	{ ASUBPD,	yxm,	Pe, 0x5c },
1008
	{ ASUBPS,	yxm,	Pm, 0x5c },
1009
	{ ASUBQ,	yaddl,	Pw, 0x83,(05),0x2d,0x81,(05),0x29,0x2b },
1010
	{ ASUBSD,	yxm,	Pf2, 0x5c },
1011
	{ ASUBSS,	yxm,	Pf3, 0x5c },
1012
	{ ASUBW,	yaddl,	Pe, 0x83,(05),0x2d,0x81,(05),0x29,0x2b },
1013
	{ ASWAPGS,	ynone,	Pm, 0x01,0xf8 },
1014
	{ ASYSCALL,	ynone,	Px, 0x0f,0x05 },	/* fast syscall */
1015
	{ ATESTB,	ytestb,	Pb, 0xa8,0xf6,(00),0x84,0x84 },
1016
	{ ATESTL,	ytestl,	Px, 0xa9,0xf7,(00),0x85,0x85 },
1017
	{ ATESTQ,	ytestl,	Pw, 0xa9,0xf7,(00),0x85,0x85 },
1018
	{ ATESTW,	ytestl,	Pe, 0xa9,0xf7,(00),0x85,0x85 },
1019
	{ ATEXT,	ytext,	Px },
1020
	{ AUCOMISD,	yxcmp,	Pe, 0x2e },
1021
	{ AUCOMISS,	yxcmp,	Pm, 0x2e },
1022
	{ AUNPCKHPD,	yxm,	Pe, 0x15 },
1023
	{ AUNPCKHPS,	yxm,	Pm, 0x15 },
1024
	{ AUNPCKLPD,	yxm,	Pe, 0x14 },
1025
	{ AUNPCKLPS,	yxm,	Pm, 0x14 },
1026
	{ AVERR,	ydivl,	Pm, 0x00,(04) },
1027
	{ AVERW,	ydivl,	Pm, 0x00,(05) },
1028
	{ AWAIT,	ynone,	Px, 0x9b },
1029
	{ AWORD,	ybyte,	Px, 2 },
1030
	{ AXCHGB,	yml_mb,	Pb, 0x86,0x86 },
1031
	{ AXCHGL,	yml_ml,	Px, 0x87,0x87 },
1032
	{ AXCHGQ,	yml_ml,	Pw, 0x87,0x87 },
1033
	{ AXCHGW,	yml_ml,	Pe, 0x87,0x87 },
1034
	{ AXLAT,	ynone,	Px, 0xd7 },
1035
	{ AXORB,	yxorb,	Pb, 0x34,0x80,(06),0x30,0x32 },
1036
	{ AXORL,	yxorl,	Px, 0x83,(06),0x35,0x81,(06),0x31,0x33 },
1037
	{ AXORPD,	yxm,	Pe, 0x57 },
1038
	{ AXORPS,	yxm,	Pm, 0x57 },
1039
	{ AXORQ,	yxorl,	Pw, 0x83,(06),0x35,0x81,(06),0x31,0x33 },
1040
	{ AXORW,	yxorl,	Pe, 0x83,(06),0x35,0x81,(06),0x31,0x33 },
1041
 
1042
	{ AFMOVB,	yfmvx,	Px, 0xdf,(04) },
1043
	{ AFMOVBP,	yfmvp,	Px, 0xdf,(06) },
1044
	{ AFMOVD,	yfmvd,	Px, 0xdd,(00),0xdd,(02),0xd9,(00),0xdd,(02) },
1045
	{ AFMOVDP,	yfmvdp,	Px, 0xdd,(03),0xdd,(03) },
1046
	{ AFMOVF,	yfmvf,	Px, 0xd9,(00),0xd9,(02) },
1047
	{ AFMOVFP,	yfmvp,	Px, 0xd9,(03) },
1048
	{ AFMOVL,	yfmvf,	Px, 0xdb,(00),0xdb,(02) },
1049
	{ AFMOVLP,	yfmvp,	Px, 0xdb,(03) },
1050
	{ AFMOVV,	yfmvx,	Px, 0xdf,(05) },
1051
	{ AFMOVVP,	yfmvp,	Px, 0xdf,(07) },
1052
	{ AFMOVW,	yfmvf,	Px, 0xdf,(00),0xdf,(02) },
1053
	{ AFMOVWP,	yfmvp,	Px, 0xdf,(03) },
1054
	{ AFMOVX,	yfmvx,	Px, 0xdb,(05) },
1055
	{ AFMOVXP,	yfmvp,	Px, 0xdb,(07) },
1056
 
1057
	{ AFCOMB },
1058
	{ AFCOMBP },
1059
	{ AFCOMD,	yfadd,	Px, 0xdc,(02),0xd8,(02),0xdc,(02) },	/* botch */
1060
	{ AFCOMDP,	yfadd,	Px, 0xdc,(03),0xd8,(03),0xdc,(03) },	/* botch */
1061
	{ AFCOMDPP,	ycompp,	Px, 0xde,(03) },
1062
	{ AFCOMF,	yfmvx,	Px, 0xd8,(02) },
1063
	{ AFCOMFP,	yfmvx,	Px, 0xd8,(03) },
1064
	{ AFCOML,	yfmvx,	Px, 0xda,(02) },
1065
	{ AFCOMLP,	yfmvx,	Px, 0xda,(03) },
1066
	{ AFCOMW,	yfmvx,	Px, 0xde,(02) },
1067
	{ AFCOMWP,	yfmvx,	Px, 0xde,(03) },
1068
 
1069
	{ AFUCOM,	ycompp,	Px, 0xdd,(04) },
1070
	{ AFUCOMP,	ycompp, Px, 0xdd,(05) },
1071
	{ AFUCOMPP,	ycompp,	Px, 0xda,(13) },
1072
 
1073
	{ AFADDDP,	yfaddp,	Px, 0xde,(00) },
1074
	{ AFADDW,	yfmvx,	Px, 0xde,(00) },
1075
	{ AFADDL,	yfmvx,	Px, 0xda,(00) },
1076
	{ AFADDF,	yfmvx,	Px, 0xd8,(00) },
1077
	{ AFADDD,	yfadd,	Px, 0xdc,(00),0xd8,(00),0xdc,(00) },
1078
 
1079
	{ AFMULDP,	yfaddp,	Px, 0xde,(01) },
1080
	{ AFMULW,	yfmvx,	Px, 0xde,(01) },
1081
	{ AFMULL,	yfmvx,	Px, 0xda,(01) },
1082
	{ AFMULF,	yfmvx,	Px, 0xd8,(01) },
1083
	{ AFMULD,	yfadd,	Px, 0xdc,(01),0xd8,(01),0xdc,(01) },
1084
 
1085
	{ AFSUBDP,	yfaddp,	Px, 0xde,(05) },
1086
	{ AFSUBW,	yfmvx,	Px, 0xde,(04) },
1087
	{ AFSUBL,	yfmvx,	Px, 0xda,(04) },
1088
	{ AFSUBF,	yfmvx,	Px, 0xd8,(04) },
1089
	{ AFSUBD,	yfadd,	Px, 0xdc,(04),0xd8,(04),0xdc,(05) },
1090
 
1091
	{ AFSUBRDP,	yfaddp,	Px, 0xde,(04) },
1092
	{ AFSUBRW,	yfmvx,	Px, 0xde,(05) },
1093
	{ AFSUBRL,	yfmvx,	Px, 0xda,(05) },
1094
	{ AFSUBRF,	yfmvx,	Px, 0xd8,(05) },
1095
	{ AFSUBRD,	yfadd,	Px, 0xdc,(05),0xd8,(05),0xdc,(04) },
1096
 
1097
	{ AFDIVDP,	yfaddp,	Px, 0xde,(07) },
1098
	{ AFDIVW,	yfmvx,	Px, 0xde,(06) },
1099
	{ AFDIVL,	yfmvx,	Px, 0xda,(06) },
1100
	{ AFDIVF,	yfmvx,	Px, 0xd8,(06) },
1101
	{ AFDIVD,	yfadd,	Px, 0xdc,(06),0xd8,(06),0xdc,(07) },
1102
 
1103
	{ AFDIVRDP,	yfaddp,	Px, 0xde,(06) },
1104
	{ AFDIVRW,	yfmvx,	Px, 0xde,(07) },
1105
	{ AFDIVRL,	yfmvx,	Px, 0xda,(07) },
1106
	{ AFDIVRF,	yfmvx,	Px, 0xd8,(07) },
1107
	{ AFDIVRD,	yfadd,	Px, 0xdc,(07),0xd8,(07),0xdc,(06) },
1108
 
1109
	{ AFXCHD,	yfxch,	Px, 0xd9,(01),0xd9,(01) },
1110
	{ AFFREE },
1111
	{ AFLDCW,	ystcw,	Px, 0xd9,(05),0xd9,(05) },
1112
	{ AFLDENV,	ystcw,	Px, 0xd9,(04),0xd9,(04) },
1113
	{ AFRSTOR,	ysvrs,	Px, 0xdd,(04),0xdd,(04) },
1114
	{ AFSAVE,	ysvrs,	Px, 0xdd,(06),0xdd,(06) },
1115
	{ AFSTCW,	ystcw,	Px, 0xd9,(07),0xd9,(07) },
1116
	{ AFSTENV,	ystcw,	Px, 0xd9,(06),0xd9,(06) },
1117
	{ AFSTSW,	ystsw,	Px, 0xdd,(07),0xdf,0xe0 },
1118
	{ AF2XM1,	ynone,	Px, 0xd9, 0xf0 },
1119
	{ AFABS,	ynone,	Px, 0xd9, 0xe1 },
1120
	{ AFCHS,	ynone,	Px, 0xd9, 0xe0 },
1121
	{ AFCLEX,	ynone,	Px, 0xdb, 0xe2 },
1122
	{ AFCOS,	ynone,	Px, 0xd9, 0xff },
1123
	{ AFDECSTP,	ynone,	Px, 0xd9, 0xf6 },
1124
	{ AFINCSTP,	ynone,	Px, 0xd9, 0xf7 },
1125
	{ AFINIT,	ynone,	Px, 0xdb, 0xe3 },
1126
	{ AFLD1,	ynone,	Px, 0xd9, 0xe8 },
1127
	{ AFLDL2E,	ynone,	Px, 0xd9, 0xea },
1128
	{ AFLDL2T,	ynone,	Px, 0xd9, 0xe9 },
1129
	{ AFLDLG2,	ynone,	Px, 0xd9, 0xec },
1130
	{ AFLDLN2,	ynone,	Px, 0xd9, 0xed },
1131
	{ AFLDPI,	ynone,	Px, 0xd9, 0xeb },
1132
	{ AFLDZ,	ynone,	Px, 0xd9, 0xee },
1133
	{ AFNOP,	ynone,	Px, 0xd9, 0xd0 },
1134
	{ AFPATAN,	ynone,	Px, 0xd9, 0xf3 },
1135
	{ AFPREM,	ynone,	Px, 0xd9, 0xf8 },
1136
	{ AFPREM1,	ynone,	Px, 0xd9, 0xf5 },
1137
	{ AFPTAN,	ynone,	Px, 0xd9, 0xf2 },
1138
	{ AFRNDINT,	ynone,	Px, 0xd9, 0xfc },
1139
	{ AFSCALE,	ynone,	Px, 0xd9, 0xfd },
1140
	{ AFSIN,	ynone,	Px, 0xd9, 0xfe },
1141
	{ AFSINCOS,	ynone,	Px, 0xd9, 0xfb },
1142
	{ AFSQRT,	ynone,	Px, 0xd9, 0xfa },
1143
	{ AFTST,	ynone,	Px, 0xd9, 0xe4 },
1144
	{ AFXAM,	ynone,	Px, 0xd9, 0xe5 },
1145
	{ AFXTRACT,	ynone,	Px, 0xd9, 0xf4 },
1146
	{ AFYL2X,	ynone,	Px, 0xd9, 0xf1 },
1147
	{ AFYL2XP1,	ynone,	Px, 0xd9, 0xf9 },
1148
 
1149
	{ ACMPXCHGB,	yrb_mb,	Pb, 0x0f,0xb0 },
1150
	{ ACMPXCHGL,	yrl_ml,	Px, 0x0f,0xb1 },
1151
	{ ACMPXCHGW,	yrl_ml,	Pe, 0x0f,0xb1 },
1152
	{ ACMPXCHGQ,	yrl_ml,	Pw, 0x0f,0xb1 },
1153
	{ ACMPXCHG8B,	yscond,	Pm, 0xc7,(01) },
1154
	{ AINVD,	ynone,	Pm, 0x08 },
1155
	{ AINVLPG,	ymbs,	Pm, 0x01,(07) },
1156
	{ ALFENCE,	ynone,	Pm, 0xae,0xe8 },
1157
	{ AMFENCE,	ynone,	Pm, 0xae,0xf0 },
1158
	{ AMOVNTIL,	yrl_ml,	Pm, 0xc3 },
1159
	{ AMOVNTIQ,	yrl_ml, Pw, 0x0f,0xc3 },
1160
	{ ARDMSR,	ynone,	Pm, 0x32 },
1161
	{ ARDPMC,	ynone,	Pm, 0x33 },
1162
	{ ARDTSC,	ynone,	Pm, 0x31 },
1163
	{ ARSM,		ynone,	Pm, 0xaa },
1164
	{ ASFENCE,	ynone,	Pm, 0xae,0xf8 },
1165
	{ ASYSRET,	ynone,	Pm, 0x07 },
1166
	{ AWBINVD,	ynone,	Pm, 0x09 },
1167
	{ AWRMSR,	ynone,	Pm, 0x30 },
1168
 
1169
	{ AXADDB,	yrb_mb,	Pb, 0x0f,0xc0 },
1170
	{ AXADDL,	yrl_ml,	Px, 0x0f,0xc1 },
1171
	{ AXADDQ,	yrl_ml,	Pw, 0x0f,0xc1 },
1172
	{ AXADDW,	yrl_ml,	Pe, 0x0f,0xc1 },
1173
 
1174
	{ AEND },
1175
 
1176
};
1177
 
1178
Optab*	opindex[ALAST+1];
1179
 
1180
/*
1181
AMOVD	0f 6e/r	mmx,reg/mem32[mem64-rex?]
1182
AMOVD	0f 7e/r	reg/mem32[64],mmx	STORE
1183
AMOVQ	0f 6f/r	mmx1,mmx2/mem64
1184
AMOVQ	0f 7f/r	mmx1/mem64,mmx2
1185
*/