diff options
Diffstat (limited to 'arch/x86/lib')
-rw-r--r-- | arch/x86/lib/inat.c | 9 | ||||
-rw-r--r-- | arch/x86/lib/insn.c | 4 | ||||
-rw-r--r-- | arch/x86/lib/string_32.c | 8 | ||||
-rw-r--r-- | arch/x86/lib/x86-opcode-map.txt | 606 |
4 files changed, 347 insertions, 280 deletions
diff --git a/arch/x86/lib/inat.c b/arch/x86/lib/inat.c index 46fc4ee09fc4..88ad5fbda6e1 100644 --- a/arch/x86/lib/inat.c +++ b/arch/x86/lib/inat.c | |||
@@ -82,9 +82,16 @@ insn_attr_t inat_get_avx_attribute(insn_byte_t opcode, insn_byte_t vex_m, | |||
82 | const insn_attr_t *table; | 82 | const insn_attr_t *table; |
83 | if (vex_m > X86_VEX_M_MAX || vex_p > INAT_LSTPFX_MAX) | 83 | if (vex_m > X86_VEX_M_MAX || vex_p > INAT_LSTPFX_MAX) |
84 | return 0; | 84 | return 0; |
85 | table = inat_avx_tables[vex_m][vex_p]; | 85 | /* At first, this checks the master table */ |
86 | table = inat_avx_tables[vex_m][0]; | ||
86 | if (!table) | 87 | if (!table) |
87 | return 0; | 88 | return 0; |
89 | if (!inat_is_group(table[opcode]) && vex_p) { | ||
90 | /* If this is not a group, get attribute directly */ | ||
91 | table = inat_avx_tables[vex_m][vex_p]; | ||
92 | if (!table) | ||
93 | return 0; | ||
94 | } | ||
88 | return table[opcode]; | 95 | return table[opcode]; |
89 | } | 96 | } |
90 | 97 | ||
diff --git a/arch/x86/lib/insn.c b/arch/x86/lib/insn.c index 374562ed6704..5a1f9f3e3fbb 100644 --- a/arch/x86/lib/insn.c +++ b/arch/x86/lib/insn.c | |||
@@ -202,7 +202,7 @@ void insn_get_opcode(struct insn *insn) | |||
202 | m = insn_vex_m_bits(insn); | 202 | m = insn_vex_m_bits(insn); |
203 | p = insn_vex_p_bits(insn); | 203 | p = insn_vex_p_bits(insn); |
204 | insn->attr = inat_get_avx_attribute(op, m, p); | 204 | insn->attr = inat_get_avx_attribute(op, m, p); |
205 | if (!inat_accept_vex(insn->attr)) | 205 | if (!inat_accept_vex(insn->attr) && !inat_is_group(insn->attr)) |
206 | insn->attr = 0; /* This instruction is bad */ | 206 | insn->attr = 0; /* This instruction is bad */ |
207 | goto end; /* VEX has only 1 byte for opcode */ | 207 | goto end; /* VEX has only 1 byte for opcode */ |
208 | } | 208 | } |
@@ -249,6 +249,8 @@ void insn_get_modrm(struct insn *insn) | |||
249 | pfx = insn_last_prefix(insn); | 249 | pfx = insn_last_prefix(insn); |
250 | insn->attr = inat_get_group_attribute(mod, pfx, | 250 | insn->attr = inat_get_group_attribute(mod, pfx, |
251 | insn->attr); | 251 | insn->attr); |
252 | if (insn_is_avx(insn) && !inat_accept_vex(insn->attr)) | ||
253 | insn->attr = 0; /* This is bad */ | ||
252 | } | 254 | } |
253 | } | 255 | } |
254 | 256 | ||
diff --git a/arch/x86/lib/string_32.c b/arch/x86/lib/string_32.c index 82004d2bf05e..bd59090825db 100644 --- a/arch/x86/lib/string_32.c +++ b/arch/x86/lib/string_32.c | |||
@@ -164,15 +164,13 @@ EXPORT_SYMBOL(strchr); | |||
164 | size_t strlen(const char *s) | 164 | size_t strlen(const char *s) |
165 | { | 165 | { |
166 | int d0; | 166 | int d0; |
167 | int res; | 167 | size_t res; |
168 | asm volatile("repne\n\t" | 168 | asm volatile("repne\n\t" |
169 | "scasb\n\t" | 169 | "scasb" |
170 | "notl %0\n\t" | ||
171 | "decl %0" | ||
172 | : "=c" (res), "=&D" (d0) | 170 | : "=c" (res), "=&D" (d0) |
173 | : "1" (s), "a" (0), "0" (0xffffffffu) | 171 | : "1" (s), "a" (0), "0" (0xffffffffu) |
174 | : "memory"); | 172 | : "memory"); |
175 | return res; | 173 | return ~res - 1; |
176 | } | 174 | } |
177 | EXPORT_SYMBOL(strlen); | 175 | EXPORT_SYMBOL(strlen); |
178 | #endif | 176 | #endif |
diff --git a/arch/x86/lib/x86-opcode-map.txt b/arch/x86/lib/x86-opcode-map.txt index 8641bbb8e006..819137904428 100644 --- a/arch/x86/lib/x86-opcode-map.txt +++ b/arch/x86/lib/x86-opcode-map.txt | |||
@@ -1,5 +1,11 @@ | |||
1 | # x86 Opcode Maps | 1 | # x86 Opcode Maps |
2 | # | 2 | # |
3 | # This is (mostly) based on following documentations. | ||
4 | # - Intel(R) 64 and IA-32 Architectures Software Developer's Manual Vol.2 | ||
5 | # (#325383-040US, October 2011) | ||
6 | # - Intel(R) Advanced Vector Extensions Programming Reference | ||
7 | # (#319433-011,JUNE 2011). | ||
8 | # | ||
3 | #<Opcode maps> | 9 | #<Opcode maps> |
4 | # Table: table-name | 10 | # Table: table-name |
5 | # Referrer: escaped-name | 11 | # Referrer: escaped-name |
@@ -15,10 +21,13 @@ | |||
15 | # EndTable | 21 | # EndTable |
16 | # | 22 | # |
17 | # AVX Superscripts | 23 | # AVX Superscripts |
18 | # (VEX): this opcode can accept VEX prefix. | 24 | # (v): this opcode requires VEX prefix. |
19 | # (oVEX): this opcode requires VEX prefix. | 25 | # (v1): this opcode only supports 128bit VEX. |
20 | # (o128): this opcode only supports 128bit VEX. | 26 | # |
21 | # (o256): this opcode only supports 256bit VEX. | 27 | # Last Prefix Superscripts |
28 | # - (66): the last prefix is 0x66 | ||
29 | # - (F3): the last prefix is 0xF3 | ||
30 | # - (F2): the last prefix is 0xF2 | ||
22 | # | 31 | # |
23 | 32 | ||
24 | Table: one byte opcode | 33 | Table: one byte opcode |
@@ -199,8 +208,8 @@ a0: MOV AL,Ob | |||
199 | a1: MOV rAX,Ov | 208 | a1: MOV rAX,Ov |
200 | a2: MOV Ob,AL | 209 | a2: MOV Ob,AL |
201 | a3: MOV Ov,rAX | 210 | a3: MOV Ov,rAX |
202 | a4: MOVS/B Xb,Yb | 211 | a4: MOVS/B Yb,Xb |
203 | a5: MOVS/W/D/Q Xv,Yv | 212 | a5: MOVS/W/D/Q Yv,Xv |
204 | a6: CMPS/B Xb,Yb | 213 | a6: CMPS/B Xb,Yb |
205 | a7: CMPS/W/D Xv,Yv | 214 | a7: CMPS/W/D Xv,Yv |
206 | a8: TEST AL,Ib | 215 | a8: TEST AL,Ib |
@@ -235,8 +244,8 @@ c0: Grp2 Eb,Ib (1A) | |||
235 | c1: Grp2 Ev,Ib (1A) | 244 | c1: Grp2 Ev,Ib (1A) |
236 | c2: RETN Iw (f64) | 245 | c2: RETN Iw (f64) |
237 | c3: RETN | 246 | c3: RETN |
238 | c4: LES Gz,Mp (i64) | 3bytes-VEX (Prefix) | 247 | c4: LES Gz,Mp (i64) | VEX+2byte (Prefix) |
239 | c5: LDS Gz,Mp (i64) | 2bytes-VEX (Prefix) | 248 | c5: LDS Gz,Mp (i64) | VEX+1byte (Prefix) |
240 | c6: Grp11 Eb,Ib (1A) | 249 | c6: Grp11 Eb,Ib (1A) |
241 | c7: Grp11 Ev,Iz (1A) | 250 | c7: Grp11 Ev,Iz (1A) |
242 | c8: ENTER Iw,Ib | 251 | c8: ENTER Iw,Ib |
@@ -322,14 +331,19 @@ AVXcode: 1 | |||
322 | # 3DNow! uses the last imm byte as opcode extension. | 331 | # 3DNow! uses the last imm byte as opcode extension. |
323 | 0f: 3DNow! Pq,Qq,Ib | 332 | 0f: 3DNow! Pq,Qq,Ib |
324 | # 0x0f 0x10-0x1f | 333 | # 0x0f 0x10-0x1f |
325 | 10: movups Vps,Wps (VEX) | movss Vss,Wss (F3),(VEX),(o128) | movupd Vpd,Wpd (66),(VEX) | movsd Vsd,Wsd (F2),(VEX),(o128) | 334 | # NOTE: According to Intel SDM opcode map, vmovups and vmovupd has no operands |
326 | 11: movups Wps,Vps (VEX) | movss Wss,Vss (F3),(VEX),(o128) | movupd Wpd,Vpd (66),(VEX) | movsd Wsd,Vsd (F2),(VEX),(o128) | 335 | # but it actually has operands. And also, vmovss and vmovsd only accept 128bit. |
327 | 12: movlps Vq,Mq (VEX),(o128) | movlpd Vq,Mq (66),(VEX),(o128) | movhlps Vq,Uq (VEX),(o128) | movddup Vq,Wq (F2),(VEX) | movsldup Vq,Wq (F3),(VEX) | 336 | # MOVSS/MOVSD has too many forms(3) on SDM. This map just shows a typical form. |
328 | 13: mpvlps Mq,Vq (VEX),(o128) | movlpd Mq,Vq (66),(VEX),(o128) | 337 | # Many AVX instructions lack v1 superscript, according to Intel AVX-Prgramming |
329 | 14: unpcklps Vps,Wq (VEX) | unpcklpd Vpd,Wq (66),(VEX) | 338 | # Reference A.1 |
330 | 15: unpckhps Vps,Wq (VEX) | unpckhpd Vpd,Wq (66),(VEX) | 339 | 10: vmovups Vps,Wps | vmovupd Vpd,Wpd (66) | vmovss Vx,Hx,Wss (F3),(v1) | vmovsd Vx,Hx,Wsd (F2),(v1) |
331 | 16: movhps Vq,Mq (VEX),(o128) | movhpd Vq,Mq (66),(VEX),(o128) | movlsps Vq,Uq (VEX),(o128) | movshdup Vq,Wq (F3),(VEX) | 340 | 11: vmovups Wps,Vps | vmovupd Wpd,Vpd (66) | vmovss Wss,Hx,Vss (F3),(v1) | vmovsd Wsd,Hx,Vsd (F2),(v1) |
332 | 17: movhps Mq,Vq (VEX),(o128) | movhpd Mq,Vq (66),(VEX),(o128) | 341 | 12: vmovlps Vq,Hq,Mq (v1) | vmovhlps Vq,Hq,Uq (v1) | vmovlpd Vq,Hq,Mq (66),(v1) | vmovsldup Vx,Wx (F3) | vmovddup Vx,Wx (F2) |
342 | 13: vmovlps Mq,Vq (v1) | vmovlpd Mq,Vq (66),(v1) | ||
343 | 14: vunpcklps Vx,Hx,Wx | vunpcklpd Vx,Hx,Wx (66) | ||
344 | 15: vunpckhps Vx,Hx,Wx | vunpckhpd Vx,Hx,Wx (66) | ||
345 | 16: vmovhps Vdq,Hq,Mq (v1) | vmovlhps Vdq,Hq,Uq (v1) | vmovhpd Vdq,Hq,Mq (66),(v1) | vmovshdup Vx,Wx (F3) | ||
346 | 17: vmovhps Mq,Vq (v1) | vmovhpd Mq,Vq (66),(v1) | ||
333 | 18: Grp16 (1A) | 347 | 18: Grp16 (1A) |
334 | 19: | 348 | 19: |
335 | 1a: | 349 | 1a: |
@@ -347,14 +361,14 @@ AVXcode: 1 | |||
347 | 25: | 361 | 25: |
348 | 26: | 362 | 26: |
349 | 27: | 363 | 27: |
350 | 28: movaps Vps,Wps (VEX) | movapd Vpd,Wpd (66),(VEX) | 364 | 28: vmovaps Vps,Wps | vmovapd Vpd,Wpd (66) |
351 | 29: movaps Wps,Vps (VEX) | movapd Wpd,Vpd (66),(VEX) | 365 | 29: vmovaps Wps,Vps | vmovapd Wpd,Vpd (66) |
352 | 2a: cvtpi2ps Vps,Qpi | cvtsi2ss Vss,Ed/q (F3),(VEX),(o128) | cvtpi2pd Vpd,Qpi (66) | cvtsi2sd Vsd,Ed/q (F2),(VEX),(o128) | 366 | 2a: cvtpi2ps Vps,Qpi | cvtpi2pd Vpd,Qpi (66) | vcvtsi2ss Vss,Hss,Ey (F3),(v1) | vcvtsi2sd Vsd,Hsd,Ey (F2),(v1) |
353 | 2b: movntps Mps,Vps (VEX) | movntpd Mpd,Vpd (66),(VEX) | 367 | 2b: vmovntps Mps,Vps | vmovntpd Mpd,Vpd (66) |
354 | 2c: cvttps2pi Ppi,Wps | cvttss2si Gd/q,Wss (F3),(VEX),(o128) | cvttpd2pi Ppi,Wpd (66) | cvttsd2si Gd/q,Wsd (F2),(VEX),(o128) | 368 | 2c: cvttps2pi Ppi,Wps | cvttpd2pi Ppi,Wpd (66) | vcvttss2si Gy,Wss (F3),(v1) | vcvttsd2si Gy,Wsd (F2),(v1) |
355 | 2d: cvtps2pi Ppi,Wps | cvtss2si Gd/q,Wss (F3),(VEX),(o128) | cvtpd2pi Qpi,Wpd (66) | cvtsd2si Gd/q,Wsd (F2),(VEX),(o128) | 369 | 2d: cvtps2pi Ppi,Wps | cvtpd2pi Qpi,Wpd (66) | vcvtss2si Gy,Wss (F3),(v1) | vcvtsd2si Gy,Wsd (F2),(v1) |
356 | 2e: ucomiss Vss,Wss (VEX),(o128) | ucomisd Vsd,Wsd (66),(VEX),(o128) | 370 | 2e: vucomiss Vss,Wss (v1) | vucomisd Vsd,Wsd (66),(v1) |
357 | 2f: comiss Vss,Wss (VEX),(o128) | comisd Vsd,Wsd (66),(VEX),(o128) | 371 | 2f: vcomiss Vss,Wss (v1) | vcomisd Vsd,Wsd (66),(v1) |
358 | # 0x0f 0x30-0x3f | 372 | # 0x0f 0x30-0x3f |
359 | 30: WRMSR | 373 | 30: WRMSR |
360 | 31: RDTSC | 374 | 31: RDTSC |
@@ -390,65 +404,66 @@ AVXcode: 1 | |||
390 | 4e: CMOVLE/NG Gv,Ev | 404 | 4e: CMOVLE/NG Gv,Ev |
391 | 4f: CMOVNLE/G Gv,Ev | 405 | 4f: CMOVNLE/G Gv,Ev |
392 | # 0x0f 0x50-0x5f | 406 | # 0x0f 0x50-0x5f |
393 | 50: movmskps Gd/q,Ups (VEX) | movmskpd Gd/q,Upd (66),(VEX) | 407 | 50: vmovmskps Gy,Ups | vmovmskpd Gy,Upd (66) |
394 | 51: sqrtps Vps,Wps (VEX) | sqrtss Vss,Wss (F3),(VEX),(o128) | sqrtpd Vpd,Wpd (66),(VEX) | sqrtsd Vsd,Wsd (F2),(VEX),(o128) | 408 | 51: vsqrtps Vps,Wps | vsqrtpd Vpd,Wpd (66) | vsqrtss Vss,Hss,Wss (F3),(v1) | vsqrtsd Vsd,Hsd,Wsd (F2),(v1) |
395 | 52: rsqrtps Vps,Wps (VEX) | rsqrtss Vss,Wss (F3),(VEX),(o128) | 409 | 52: vrsqrtps Vps,Wps | vrsqrtss Vss,Hss,Wss (F3),(v1) |
396 | 53: rcpps Vps,Wps (VEX) | rcpss Vss,Wss (F3),(VEX),(o128) | 410 | 53: vrcpps Vps,Wps | vrcpss Vss,Hss,Wss (F3),(v1) |
397 | 54: andps Vps,Wps (VEX) | andpd Vpd,Wpd (66),(VEX) | 411 | 54: vandps Vps,Hps,Wps | vandpd Vpd,Hpd,Wpd (66) |
398 | 55: andnps Vps,Wps (VEX) | andnpd Vpd,Wpd (66),(VEX) | 412 | 55: vandnps Vps,Hps,Wps | vandnpd Vpd,Hpd,Wpd (66) |
399 | 56: orps Vps,Wps (VEX) | orpd Vpd,Wpd (66),(VEX) | 413 | 56: vorps Vps,Hps,Wps | vorpd Vpd,Hpd,Wpd (66) |
400 | 57: xorps Vps,Wps (VEX) | xorpd Vpd,Wpd (66),(VEX) | 414 | 57: vxorps Vps,Hps,Wps | vxorpd Vpd,Hpd,Wpd (66) |
401 | 58: addps Vps,Wps (VEX) | addss Vss,Wss (F3),(VEX),(o128) | addpd Vpd,Wpd (66),(VEX) | addsd Vsd,Wsd (F2),(VEX),(o128) | 415 | 58: vaddps Vps,Hps,Wps | vaddpd Vpd,Hpd,Wpd (66) | vaddss Vss,Hss,Wss (F3),(v1) | vaddsd Vsd,Hsd,Wsd (F2),(v1) |
402 | 59: mulps Vps,Wps (VEX) | mulss Vss,Wss (F3),(VEX),(o128) | mulpd Vpd,Wpd (66),(VEX) | mulsd Vsd,Wsd (F2),(VEX),(o128) | 416 | 59: vmulps Vps,Hps,Wps | vmulpd Vpd,Hpd,Wpd (66) | vmulss Vss,Hss,Wss (F3),(v1) | vmulsd Vsd,Hsd,Wsd (F2),(v1) |
403 | 5a: cvtps2pd Vpd,Wps (VEX) | cvtss2sd Vsd,Wss (F3),(VEX),(o128) | cvtpd2ps Vps,Wpd (66),(VEX) | cvtsd2ss Vsd,Wsd (F2),(VEX),(o128) | 417 | 5a: vcvtps2pd Vpd,Wps | vcvtpd2ps Vps,Wpd (66) | vcvtss2sd Vsd,Hx,Wss (F3),(v1) | vcvtsd2ss Vss,Hx,Wsd (F2),(v1) |
404 | 5b: cvtdq2ps Vps,Wdq (VEX) | cvtps2dq Vdq,Wps (66),(VEX) | cvttps2dq Vdq,Wps (F3),(VEX) | 418 | 5b: vcvtdq2ps Vps,Wdq | vcvtps2dq Vdq,Wps (66) | vcvttps2dq Vdq,Wps (F3) |
405 | 5c: subps Vps,Wps (VEX) | subss Vss,Wss (F3),(VEX),(o128) | subpd Vpd,Wpd (66),(VEX) | subsd Vsd,Wsd (F2),(VEX),(o128) | 419 | 5c: vsubps Vps,Hps,Wps | vsubpd Vpd,Hpd,Wpd (66) | vsubss Vss,Hss,Wss (F3),(v1) | vsubsd Vsd,Hsd,Wsd (F2),(v1) |
406 | 5d: minps Vps,Wps (VEX) | minss Vss,Wss (F3),(VEX),(o128) | minpd Vpd,Wpd (66),(VEX) | minsd Vsd,Wsd (F2),(VEX),(o128) | 420 | 5d: vminps Vps,Hps,Wps | vminpd Vpd,Hpd,Wpd (66) | vminss Vss,Hss,Wss (F3),(v1) | vminsd Vsd,Hsd,Wsd (F2),(v1) |
407 | 5e: divps Vps,Wps (VEX) | divss Vss,Wss (F3),(VEX),(o128) | divpd Vpd,Wpd (66),(VEX) | divsd Vsd,Wsd (F2),(VEX),(o128) | 421 | 5e: vdivps Vps,Hps,Wps | vdivpd Vpd,Hpd,Wpd (66) | vdivss Vss,Hss,Wss (F3),(v1) | vdivsd Vsd,Hsd,Wsd (F2),(v1) |
408 | 5f: maxps Vps,Wps (VEX) | maxss Vss,Wss (F3),(VEX),(o128) | maxpd Vpd,Wpd (66),(VEX) | maxsd Vsd,Wsd (F2),(VEX),(o128) | 422 | 5f: vmaxps Vps,Hps,Wps | vmaxpd Vpd,Hpd,Wpd (66) | vmaxss Vss,Hss,Wss (F3),(v1) | vmaxsd Vsd,Hsd,Wsd (F2),(v1) |
409 | # 0x0f 0x60-0x6f | 423 | # 0x0f 0x60-0x6f |
410 | 60: punpcklbw Pq,Qd | punpcklbw Vdq,Wdq (66),(VEX),(o128) | 424 | 60: punpcklbw Pq,Qd | vpunpcklbw Vx,Hx,Wx (66),(v1) |
411 | 61: punpcklwd Pq,Qd | punpcklwd Vdq,Wdq (66),(VEX),(o128) | 425 | 61: punpcklwd Pq,Qd | vpunpcklwd Vx,Hx,Wx (66),(v1) |
412 | 62: punpckldq Pq,Qd | punpckldq Vdq,Wdq (66),(VEX),(o128) | 426 | 62: punpckldq Pq,Qd | vpunpckldq Vx,Hx,Wx (66),(v1) |
413 | 63: packsswb Pq,Qq | packsswb Vdq,Wdq (66),(VEX),(o128) | 427 | 63: packsswb Pq,Qq | vpacksswb Vx,Hx,Wx (66),(v1) |
414 | 64: pcmpgtb Pq,Qq | pcmpgtb Vdq,Wdq (66),(VEX),(o128) | 428 | 64: pcmpgtb Pq,Qq | vpcmpgtb Vx,Hx,Wx (66),(v1) |
415 | 65: pcmpgtw Pq,Qq | pcmpgtw Vdq,Wdq (66),(VEX),(o128) | 429 | 65: pcmpgtw Pq,Qq | vpcmpgtw Vx,Hx,Wx (66),(v1) |
416 | 66: pcmpgtd Pq,Qq | pcmpgtd Vdq,Wdq (66),(VEX),(o128) | 430 | 66: pcmpgtd Pq,Qq | vpcmpgtd Vx,Hx,Wx (66),(v1) |
417 | 67: packuswb Pq,Qq | packuswb Vdq,Wdq (66),(VEX),(o128) | 431 | 67: packuswb Pq,Qq | vpackuswb Vx,Hx,Wx (66),(v1) |
418 | 68: punpckhbw Pq,Qd | punpckhbw Vdq,Wdq (66),(VEX),(o128) | 432 | 68: punpckhbw Pq,Qd | vpunpckhbw Vx,Hx,Wx (66),(v1) |
419 | 69: punpckhwd Pq,Qd | punpckhwd Vdq,Wdq (66),(VEX),(o128) | 433 | 69: punpckhwd Pq,Qd | vpunpckhwd Vx,Hx,Wx (66),(v1) |
420 | 6a: punpckhdq Pq,Qd | punpckhdq Vdq,Wdq (66),(VEX),(o128) | 434 | 6a: punpckhdq Pq,Qd | vpunpckhdq Vx,Hx,Wx (66),(v1) |
421 | 6b: packssdw Pq,Qd | packssdw Vdq,Wdq (66),(VEX),(o128) | 435 | 6b: packssdw Pq,Qd | vpackssdw Vx,Hx,Wx (66),(v1) |
422 | 6c: punpcklqdq Vdq,Wdq (66),(VEX),(o128) | 436 | 6c: vpunpcklqdq Vx,Hx,Wx (66),(v1) |
423 | 6d: punpckhqdq Vdq,Wdq (66),(VEX),(o128) | 437 | 6d: vpunpckhqdq Vx,Hx,Wx (66),(v1) |
424 | 6e: movd/q/ Pd,Ed/q | movd/q Vdq,Ed/q (66),(VEX),(o128) | 438 | 6e: movd/q Pd,Ey | vmovd/q Vy,Ey (66),(v1) |
425 | 6f: movq Pq,Qq | movdqa Vdq,Wdq (66),(VEX) | movdqu Vdq,Wdq (F3),(VEX) | 439 | 6f: movq Pq,Qq | vmovdqa Vx,Wx (66) | vmovdqu Vx,Wx (F3) |
426 | # 0x0f 0x70-0x7f | 440 | # 0x0f 0x70-0x7f |
427 | 70: pshufw Pq,Qq,Ib | pshufd Vdq,Wdq,Ib (66),(VEX),(o128) | pshufhw Vdq,Wdq,Ib (F3),(VEX),(o128) | pshuflw VdqWdq,Ib (F2),(VEX),(o128) | 441 | 70: pshufw Pq,Qq,Ib | vpshufd Vx,Wx,Ib (66),(v1) | vpshufhw Vx,Wx,Ib (F3),(v1) | vpshuflw Vx,Wx,Ib (F2),(v1) |
428 | 71: Grp12 (1A) | 442 | 71: Grp12 (1A) |
429 | 72: Grp13 (1A) | 443 | 72: Grp13 (1A) |
430 | 73: Grp14 (1A) | 444 | 73: Grp14 (1A) |
431 | 74: pcmpeqb Pq,Qq | pcmpeqb Vdq,Wdq (66),(VEX),(o128) | 445 | 74: pcmpeqb Pq,Qq | vpcmpeqb Vx,Hx,Wx (66),(v1) |
432 | 75: pcmpeqw Pq,Qq | pcmpeqw Vdq,Wdq (66),(VEX),(o128) | 446 | 75: pcmpeqw Pq,Qq | vpcmpeqw Vx,Hx,Wx (66),(v1) |
433 | 76: pcmpeqd Pq,Qq | pcmpeqd Vdq,Wdq (66),(VEX),(o128) | 447 | 76: pcmpeqd Pq,Qq | vpcmpeqd Vx,Hx,Wx (66),(v1) |
434 | 77: emms/vzeroupper/vzeroall (VEX) | 448 | # Note: Remove (v), because vzeroall and vzeroupper becomes emms without VEX. |
435 | 78: VMREAD Ed/q,Gd/q | 449 | 77: emms | vzeroupper | vzeroall |
436 | 79: VMWRITE Gd/q,Ed/q | 450 | 78: VMREAD Ey,Gy |
451 | 79: VMWRITE Gy,Ey | ||
437 | 7a: | 452 | 7a: |
438 | 7b: | 453 | 7b: |
439 | 7c: haddps Vps,Wps (F2),(VEX) | haddpd Vpd,Wpd (66),(VEX) | 454 | 7c: vhaddpd Vpd,Hpd,Wpd (66) | vhaddps Vps,Hps,Wps (F2) |
440 | 7d: hsubps Vps,Wps (F2),(VEX) | hsubpd Vpd,Wpd (66),(VEX) | 455 | 7d: vhsubpd Vpd,Hpd,Wpd (66) | vhsubps Vps,Hps,Wps (F2) |
441 | 7e: movd/q Ed/q,Pd | movd/q Ed/q,Vdq (66),(VEX),(o128) | movq Vq,Wq (F3),(VEX),(o128) | 456 | 7e: movd/q Ey,Pd | vmovd/q Ey,Vy (66),(v1) | vmovq Vq,Wq (F3),(v1) |
442 | 7f: movq Qq,Pq | movdqa Wdq,Vdq (66),(VEX) | movdqu Wdq,Vdq (F3),(VEX) | 457 | 7f: movq Qq,Pq | vmovdqa Wx,Vx (66) | vmovdqu Wx,Vx (F3) |
443 | # 0x0f 0x80-0x8f | 458 | # 0x0f 0x80-0x8f |
444 | 80: JO Jz (f64) | 459 | 80: JO Jz (f64) |
445 | 81: JNO Jz (f64) | 460 | 81: JNO Jz (f64) |
446 | 82: JB/JNAE/JC Jz (f64) | 461 | 82: JB/JC/JNAE Jz (f64) |
447 | 83: JNB/JAE/JNC Jz (f64) | 462 | 83: JAE/JNB/JNC Jz (f64) |
448 | 84: JZ/JE Jz (f64) | 463 | 84: JE/JZ Jz (f64) |
449 | 85: JNZ/JNE Jz (f64) | 464 | 85: JNE/JNZ Jz (f64) |
450 | 86: JBE/JNA Jz (f64) | 465 | 86: JBE/JNA Jz (f64) |
451 | 87: JNBE/JA Jz (f64) | 466 | 87: JA/JNBE Jz (f64) |
452 | 88: JS Jz (f64) | 467 | 88: JS Jz (f64) |
453 | 89: JNS Jz (f64) | 468 | 89: JNS Jz (f64) |
454 | 8a: JP/JPE Jz (f64) | 469 | 8a: JP/JPE Jz (f64) |
@@ -504,18 +519,18 @@ b8: JMPE | POPCNT Gv,Ev (F3) | |||
504 | b9: Grp10 (1A) | 519 | b9: Grp10 (1A) |
505 | ba: Grp8 Ev,Ib (1A) | 520 | ba: Grp8 Ev,Ib (1A) |
506 | bb: BTC Ev,Gv | 521 | bb: BTC Ev,Gv |
507 | bc: BSF Gv,Ev | 522 | bc: BSF Gv,Ev | TZCNT Gv,Ev (F3) |
508 | bd: BSR Gv,Ev | 523 | bd: BSR Gv,Ev | LZCNT Gv,Ev (F3) |
509 | be: MOVSX Gv,Eb | 524 | be: MOVSX Gv,Eb |
510 | bf: MOVSX Gv,Ew | 525 | bf: MOVSX Gv,Ew |
511 | # 0x0f 0xc0-0xcf | 526 | # 0x0f 0xc0-0xcf |
512 | c0: XADD Eb,Gb | 527 | c0: XADD Eb,Gb |
513 | c1: XADD Ev,Gv | 528 | c1: XADD Ev,Gv |
514 | c2: cmpps Vps,Wps,Ib (VEX) | cmpss Vss,Wss,Ib (F3),(VEX),(o128) | cmppd Vpd,Wpd,Ib (66),(VEX) | cmpsd Vsd,Wsd,Ib (F2),(VEX) | 529 | c2: vcmpps Vps,Hps,Wps,Ib | vcmppd Vpd,Hpd,Wpd,Ib (66) | vcmpss Vss,Hss,Wss,Ib (F3),(v1) | vcmpsd Vsd,Hsd,Wsd,Ib (F2),(v1) |
515 | c3: movnti Md/q,Gd/q | 530 | c3: movnti My,Gy |
516 | c4: pinsrw Pq,Rd/q/Mw,Ib | pinsrw Vdq,Rd/q/Mw,Ib (66),(VEX),(o128) | 531 | c4: pinsrw Pq,Ry/Mw,Ib | vpinsrw Vdq,Hdq,Ry/Mw,Ib (66),(v1) |
517 | c5: pextrw Gd,Nq,Ib | pextrw Gd,Udq,Ib (66),(VEX),(o128) | 532 | c5: pextrw Gd,Nq,Ib | vpextrw Gd,Udq,Ib (66),(v1) |
518 | c6: shufps Vps,Wps,Ib (VEX) | shufpd Vpd,Wpd,Ib (66),(VEX) | 533 | c6: vshufps Vps,Hps,Wps,Ib | vshufpd Vpd,Hpd,Wpd,Ib (66) |
519 | c7: Grp9 (1A) | 534 | c7: Grp9 (1A) |
520 | c8: BSWAP RAX/EAX/R8/R8D | 535 | c8: BSWAP RAX/EAX/R8/R8D |
521 | c9: BSWAP RCX/ECX/R9/R9D | 536 | c9: BSWAP RCX/ECX/R9/R9D |
@@ -526,55 +541,55 @@ cd: BSWAP RBP/EBP/R13/R13D | |||
526 | ce: BSWAP RSI/ESI/R14/R14D | 541 | ce: BSWAP RSI/ESI/R14/R14D |
527 | cf: BSWAP RDI/EDI/R15/R15D | 542 | cf: BSWAP RDI/EDI/R15/R15D |
528 | # 0x0f 0xd0-0xdf | 543 | # 0x0f 0xd0-0xdf |
529 | d0: addsubps Vps,Wps (F2),(VEX) | addsubpd Vpd,Wpd (66),(VEX) | 544 | d0: vaddsubpd Vpd,Hpd,Wpd (66) | vaddsubps Vps,Hps,Wps (F2) |
530 | d1: psrlw Pq,Qq | psrlw Vdq,Wdq (66),(VEX),(o128) | 545 | d1: psrlw Pq,Qq | vpsrlw Vx,Hx,Wx (66),(v1) |
531 | d2: psrld Pq,Qq | psrld Vdq,Wdq (66),(VEX),(o128) | 546 | d2: psrld Pq,Qq | vpsrld Vx,Hx,Wx (66),(v1) |
532 | d3: psrlq Pq,Qq | psrlq Vdq,Wdq (66),(VEX),(o128) | 547 | d3: psrlq Pq,Qq | vpsrlq Vx,Hx,Wx (66),(v1) |
533 | d4: paddq Pq,Qq | paddq Vdq,Wdq (66),(VEX),(o128) | 548 | d4: paddq Pq,Qq | vpaddq Vx,Hx,Wx (66),(v1) |
534 | d5: pmullw Pq,Qq | pmullw Vdq,Wdq (66),(VEX),(o128) | 549 | d5: pmullw Pq,Qq | vpmullw Vx,Hx,Wx (66),(v1) |
535 | d6: movq Wq,Vq (66),(VEX),(o128) | movq2dq Vdq,Nq (F3) | movdq2q Pq,Uq (F2) | 550 | d6: vmovq Wq,Vq (66),(v1) | movq2dq Vdq,Nq (F3) | movdq2q Pq,Uq (F2) |
536 | d7: pmovmskb Gd,Nq | pmovmskb Gd,Udq (66),(VEX),(o128) | 551 | d7: pmovmskb Gd,Nq | vpmovmskb Gd,Ux (66),(v1) |
537 | d8: psubusb Pq,Qq | psubusb Vdq,Wdq (66),(VEX),(o128) | 552 | d8: psubusb Pq,Qq | vpsubusb Vx,Hx,Wx (66),(v1) |
538 | d9: psubusw Pq,Qq | psubusw Vdq,Wdq (66),(VEX),(o128) | 553 | d9: psubusw Pq,Qq | vpsubusw Vx,Hx,Wx (66),(v1) |
539 | da: pminub Pq,Qq | pminub Vdq,Wdq (66),(VEX),(o128) | 554 | da: pminub Pq,Qq | vpminub Vx,Hx,Wx (66),(v1) |
540 | db: pand Pq,Qq | pand Vdq,Wdq (66),(VEX),(o128) | 555 | db: pand Pq,Qq | vpand Vx,Hx,Wx (66),(v1) |
541 | dc: paddusb Pq,Qq | paddusb Vdq,Wdq (66),(VEX),(o128) | 556 | dc: paddusb Pq,Qq | vpaddusb Vx,Hx,Wx (66),(v1) |
542 | dd: paddusw Pq,Qq | paddusw Vdq,Wdq (66),(VEX),(o128) | 557 | dd: paddusw Pq,Qq | vpaddusw Vx,Hx,Wx (66),(v1) |
543 | de: pmaxub Pq,Qq | pmaxub Vdq,Wdq (66),(VEX),(o128) | 558 | de: pmaxub Pq,Qq | vpmaxub Vx,Hx,Wx (66),(v1) |
544 | df: pandn Pq,Qq | pandn Vdq,Wdq (66),(VEX),(o128) | 559 | df: pandn Pq,Qq | vpandn Vx,Hx,Wx (66),(v1) |
545 | # 0x0f 0xe0-0xef | 560 | # 0x0f 0xe0-0xef |
546 | e0: pavgb Pq,Qq | pavgb Vdq,Wdq (66),(VEX),(o128) | 561 | e0: pavgb Pq,Qq | vpavgb Vx,Hx,Wx (66),(v1) |
547 | e1: psraw Pq,Qq | psraw Vdq,Wdq (66),(VEX),(o128) | 562 | e1: psraw Pq,Qq | vpsraw Vx,Hx,Wx (66),(v1) |
548 | e2: psrad Pq,Qq | psrad Vdq,Wdq (66),(VEX),(o128) | 563 | e2: psrad Pq,Qq | vpsrad Vx,Hx,Wx (66),(v1) |
549 | e3: pavgw Pq,Qq | pavgw Vdq,Wdq (66),(VEX),(o128) | 564 | e3: pavgw Pq,Qq | vpavgw Vx,Hx,Wx (66),(v1) |
550 | e4: pmulhuw Pq,Qq | pmulhuw Vdq,Wdq (66),(VEX),(o128) | 565 | e4: pmulhuw Pq,Qq | vpmulhuw Vx,Hx,Wx (66),(v1) |
551 | e5: pmulhw Pq,Qq | pmulhw Vdq,Wdq (66),(VEX),(o128) | 566 | e5: pmulhw Pq,Qq | vpmulhw Vx,Hx,Wx (66),(v1) |
552 | e6: cvtpd2dq Vdq,Wpd (F2),(VEX) | cvttpd2dq Vdq,Wpd (66),(VEX) | cvtdq2pd Vpd,Wdq (F3),(VEX) | 567 | e6: vcvttpd2dq Vx,Wpd (66) | vcvtdq2pd Vx,Wdq (F3) | vcvtpd2dq Vx,Wpd (F2) |
553 | e7: movntq Mq,Pq | movntdq Mdq,Vdq (66),(VEX) | 568 | e7: movntq Mq,Pq | vmovntdq Mx,Vx (66) |
554 | e8: psubsb Pq,Qq | psubsb Vdq,Wdq (66),(VEX),(o128) | 569 | e8: psubsb Pq,Qq | vpsubsb Vx,Hx,Wx (66),(v1) |
555 | e9: psubsw Pq,Qq | psubsw Vdq,Wdq (66),(VEX),(o128) | 570 | e9: psubsw Pq,Qq | vpsubsw Vx,Hx,Wx (66),(v1) |
556 | ea: pminsw Pq,Qq | pminsw Vdq,Wdq (66),(VEX),(o128) | 571 | ea: pminsw Pq,Qq | vpminsw Vx,Hx,Wx (66),(v1) |
557 | eb: por Pq,Qq | por Vdq,Wdq (66),(VEX),(o128) | 572 | eb: por Pq,Qq | vpor Vx,Hx,Wx (66),(v1) |
558 | ec: paddsb Pq,Qq | paddsb Vdq,Wdq (66),(VEX),(o128) | 573 | ec: paddsb Pq,Qq | vpaddsb Vx,Hx,Wx (66),(v1) |
559 | ed: paddsw Pq,Qq | paddsw Vdq,Wdq (66),(VEX),(o128) | 574 | ed: paddsw Pq,Qq | vpaddsw Vx,Hx,Wx (66),(v1) |
560 | ee: pmaxsw Pq,Qq | pmaxsw Vdq,Wdq (66),(VEX),(o128) | 575 | ee: pmaxsw Pq,Qq | vpmaxsw Vx,Hx,Wx (66),(v1) |
561 | ef: pxor Pq,Qq | pxor Vdq,Wdq (66),(VEX),(o128) | 576 | ef: pxor Pq,Qq | vpxor Vx,Hx,Wx (66),(v1) |
562 | # 0x0f 0xf0-0xff | 577 | # 0x0f 0xf0-0xff |
563 | f0: lddqu Vdq,Mdq (F2),(VEX) | 578 | f0: vlddqu Vx,Mx (F2) |
564 | f1: psllw Pq,Qq | psllw Vdq,Wdq (66),(VEX),(o128) | 579 | f1: psllw Pq,Qq | vpsllw Vx,Hx,Wx (66),(v1) |
565 | f2: pslld Pq,Qq | pslld Vdq,Wdq (66),(VEX),(o128) | 580 | f2: pslld Pq,Qq | vpslld Vx,Hx,Wx (66),(v1) |
566 | f3: psllq Pq,Qq | psllq Vdq,Wdq (66),(VEX),(o128) | 581 | f3: psllq Pq,Qq | vpsllq Vx,Hx,Wx (66),(v1) |
567 | f4: pmuludq Pq,Qq | pmuludq Vdq,Wdq (66),(VEX),(o128) | 582 | f4: pmuludq Pq,Qq | vpmuludq Vx,Hx,Wx (66),(v1) |
568 | f5: pmaddwd Pq,Qq | pmaddwd Vdq,Wdq (66),(VEX),(o128) | 583 | f5: pmaddwd Pq,Qq | vpmaddwd Vx,Hx,Wx (66),(v1) |
569 | f6: psadbw Pq,Qq | psadbw Vdq,Wdq (66),(VEX),(o128) | 584 | f6: psadbw Pq,Qq | vpsadbw Vx,Hx,Wx (66),(v1) |
570 | f7: maskmovq Pq,Nq | maskmovdqu Vdq,Udq (66),(VEX),(o128) | 585 | f7: maskmovq Pq,Nq | vmaskmovdqu Vx,Ux (66),(v1) |
571 | f8: psubb Pq,Qq | psubb Vdq,Wdq (66),(VEX),(o128) | 586 | f8: psubb Pq,Qq | vpsubb Vx,Hx,Wx (66),(v1) |
572 | f9: psubw Pq,Qq | psubw Vdq,Wdq (66),(VEX),(o128) | 587 | f9: psubw Pq,Qq | vpsubw Vx,Hx,Wx (66),(v1) |
573 | fa: psubd Pq,Qq | psubd Vdq,Wdq (66),(VEX),(o128) | 588 | fa: psubd Pq,Qq | vpsubd Vx,Hx,Wx (66),(v1) |
574 | fb: psubq Pq,Qq | psubq Vdq,Wdq (66),(VEX),(o128) | 589 | fb: psubq Pq,Qq | vpsubq Vx,Hx,Wx (66),(v1) |
575 | fc: paddb Pq,Qq | paddb Vdq,Wdq (66),(VEX),(o128) | 590 | fc: paddb Pq,Qq | vpaddb Vx,Hx,Wx (66),(v1) |
576 | fd: paddw Pq,Qq | paddw Vdq,Wdq (66),(VEX),(o128) | 591 | fd: paddw Pq,Qq | vpaddw Vx,Hx,Wx (66),(v1) |
577 | fe: paddd Pq,Qq | paddd Vdq,Wdq (66),(VEX),(o128) | 592 | fe: paddd Pq,Qq | vpaddd Vx,Hx,Wx (66),(v1) |
578 | ff: | 593 | ff: |
579 | EndTable | 594 | EndTable |
580 | 595 | ||
@@ -582,155 +597,193 @@ Table: 3-byte opcode 1 (0x0f 0x38) | |||
582 | Referrer: 3-byte escape 1 | 597 | Referrer: 3-byte escape 1 |
583 | AVXcode: 2 | 598 | AVXcode: 2 |
584 | # 0x0f 0x38 0x00-0x0f | 599 | # 0x0f 0x38 0x00-0x0f |
585 | 00: pshufb Pq,Qq | pshufb Vdq,Wdq (66),(VEX),(o128) | 600 | 00: pshufb Pq,Qq | vpshufb Vx,Hx,Wx (66),(v1) |
586 | 01: phaddw Pq,Qq | phaddw Vdq,Wdq (66),(VEX),(o128) | 601 | 01: phaddw Pq,Qq | vphaddw Vx,Hx,Wx (66),(v1) |
587 | 02: phaddd Pq,Qq | phaddd Vdq,Wdq (66),(VEX),(o128) | 602 | 02: phaddd Pq,Qq | vphaddd Vx,Hx,Wx (66),(v1) |
588 | 03: phaddsw Pq,Qq | phaddsw Vdq,Wdq (66),(VEX),(o128) | 603 | 03: phaddsw Pq,Qq | vphaddsw Vx,Hx,Wx (66),(v1) |
589 | 04: pmaddubsw Pq,Qq | pmaddubsw Vdq,Wdq (66),(VEX),(o128) | 604 | 04: pmaddubsw Pq,Qq | vpmaddubsw Vx,Hx,Wx (66),(v1) |
590 | 05: phsubw Pq,Qq | phsubw Vdq,Wdq (66),(VEX),(o128) | 605 | 05: phsubw Pq,Qq | vphsubw Vx,Hx,Wx (66),(v1) |
591 | 06: phsubd Pq,Qq | phsubd Vdq,Wdq (66),(VEX),(o128) | 606 | 06: phsubd Pq,Qq | vphsubd Vx,Hx,Wx (66),(v1) |
592 | 07: phsubsw Pq,Qq | phsubsw Vdq,Wdq (66),(VEX),(o128) | 607 | 07: phsubsw Pq,Qq | vphsubsw Vx,Hx,Wx (66),(v1) |
593 | 08: psignb Pq,Qq | psignb Vdq,Wdq (66),(VEX),(o128) | 608 | 08: psignb Pq,Qq | vpsignb Vx,Hx,Wx (66),(v1) |
594 | 09: psignw Pq,Qq | psignw Vdq,Wdq (66),(VEX),(o128) | 609 | 09: psignw Pq,Qq | vpsignw Vx,Hx,Wx (66),(v1) |
595 | 0a: psignd Pq,Qq | psignd Vdq,Wdq (66),(VEX),(o128) | 610 | 0a: psignd Pq,Qq | vpsignd Vx,Hx,Wx (66),(v1) |
596 | 0b: pmulhrsw Pq,Qq | pmulhrsw Vdq,Wdq (66),(VEX),(o128) | 611 | 0b: pmulhrsw Pq,Qq | vpmulhrsw Vx,Hx,Wx (66),(v1) |
597 | 0c: Vpermilps /r (66),(oVEX) | 612 | 0c: vpermilps Vx,Hx,Wx (66),(v) |
598 | 0d: Vpermilpd /r (66),(oVEX) | 613 | 0d: vpermilpd Vx,Hx,Wx (66),(v) |
599 | 0e: vtestps /r (66),(oVEX) | 614 | 0e: vtestps Vx,Wx (66),(v) |
600 | 0f: vtestpd /r (66),(oVEX) | 615 | 0f: vtestpd Vx,Wx (66),(v) |
601 | # 0x0f 0x38 0x10-0x1f | 616 | # 0x0f 0x38 0x10-0x1f |
602 | 10: pblendvb Vdq,Wdq (66) | 617 | 10: pblendvb Vdq,Wdq (66) |
603 | 11: | 618 | 11: |
604 | 12: | 619 | 12: |
605 | 13: | 620 | 13: vcvtph2ps Vx,Wx,Ib (66),(v) |
606 | 14: blendvps Vdq,Wdq (66) | 621 | 14: blendvps Vdq,Wdq (66) |
607 | 15: blendvpd Vdq,Wdq (66) | 622 | 15: blendvpd Vdq,Wdq (66) |
608 | 16: | 623 | 16: vpermps Vqq,Hqq,Wqq (66),(v) |
609 | 17: ptest Vdq,Wdq (66),(VEX) | 624 | 17: vptest Vx,Wx (66) |
610 | 18: vbroadcastss /r (66),(oVEX) | 625 | 18: vbroadcastss Vx,Wd (66),(v) |
611 | 19: vbroadcastsd /r (66),(oVEX),(o256) | 626 | 19: vbroadcastsd Vqq,Wq (66),(v) |
612 | 1a: vbroadcastf128 /r (66),(oVEX),(o256) | 627 | 1a: vbroadcastf128 Vqq,Mdq (66),(v) |
613 | 1b: | 628 | 1b: |
614 | 1c: pabsb Pq,Qq | pabsb Vdq,Wdq (66),(VEX),(o128) | 629 | 1c: pabsb Pq,Qq | vpabsb Vx,Wx (66),(v1) |
615 | 1d: pabsw Pq,Qq | pabsw Vdq,Wdq (66),(VEX),(o128) | 630 | 1d: pabsw Pq,Qq | vpabsw Vx,Wx (66),(v1) |
616 | 1e: pabsd Pq,Qq | pabsd Vdq,Wdq (66),(VEX),(o128) | 631 | 1e: pabsd Pq,Qq | vpabsd Vx,Wx (66),(v1) |
617 | 1f: | 632 | 1f: |
618 | # 0x0f 0x38 0x20-0x2f | 633 | # 0x0f 0x38 0x20-0x2f |
619 | 20: pmovsxbw Vdq,Udq/Mq (66),(VEX),(o128) | 634 | 20: vpmovsxbw Vx,Ux/Mq (66),(v1) |
620 | 21: pmovsxbd Vdq,Udq/Md (66),(VEX),(o128) | 635 | 21: vpmovsxbd Vx,Ux/Md (66),(v1) |
621 | 22: pmovsxbq Vdq,Udq/Mw (66),(VEX),(o128) | 636 | 22: vpmovsxbq Vx,Ux/Mw (66),(v1) |
622 | 23: pmovsxwd Vdq,Udq/Mq (66),(VEX),(o128) | 637 | 23: vpmovsxwd Vx,Ux/Mq (66),(v1) |
623 | 24: pmovsxwq Vdq,Udq/Md (66),(VEX),(o128) | 638 | 24: vpmovsxwq Vx,Ux/Md (66),(v1) |
624 | 25: pmovsxdq Vdq,Udq/Mq (66),(VEX),(o128) | 639 | 25: vpmovsxdq Vx,Ux/Mq (66),(v1) |
625 | 26: | 640 | 26: |
626 | 27: | 641 | 27: |
627 | 28: pmuldq Vdq,Wdq (66),(VEX),(o128) | 642 | 28: vpmuldq Vx,Hx,Wx (66),(v1) |
628 | 29: pcmpeqq Vdq,Wdq (66),(VEX),(o128) | 643 | 29: vpcmpeqq Vx,Hx,Wx (66),(v1) |
629 | 2a: movntdqa Vdq,Mdq (66),(VEX),(o128) | 644 | 2a: vmovntdqa Vx,Mx (66),(v1) |
630 | 2b: packusdw Vdq,Wdq (66),(VEX),(o128) | 645 | 2b: vpackusdw Vx,Hx,Wx (66),(v1) |
631 | 2c: vmaskmovps(ld) /r (66),(oVEX) | 646 | 2c: vmaskmovps Vx,Hx,Mx (66),(v) |
632 | 2d: vmaskmovpd(ld) /r (66),(oVEX) | 647 | 2d: vmaskmovpd Vx,Hx,Mx (66),(v) |
633 | 2e: vmaskmovps(st) /r (66),(oVEX) | 648 | 2e: vmaskmovps Mx,Hx,Vx (66),(v) |
634 | 2f: vmaskmovpd(st) /r (66),(oVEX) | 649 | 2f: vmaskmovpd Mx,Hx,Vx (66),(v) |
635 | # 0x0f 0x38 0x30-0x3f | 650 | # 0x0f 0x38 0x30-0x3f |
636 | 30: pmovzxbw Vdq,Udq/Mq (66),(VEX),(o128) | 651 | 30: vpmovzxbw Vx,Ux/Mq (66),(v1) |
637 | 31: pmovzxbd Vdq,Udq/Md (66),(VEX),(o128) | 652 | 31: vpmovzxbd Vx,Ux/Md (66),(v1) |
638 | 32: pmovzxbq Vdq,Udq/Mw (66),(VEX),(o128) | 653 | 32: vpmovzxbq Vx,Ux/Mw (66),(v1) |
639 | 33: pmovzxwd Vdq,Udq/Mq (66),(VEX),(o128) | 654 | 33: vpmovzxwd Vx,Ux/Mq (66),(v1) |
640 | 34: pmovzxwq Vdq,Udq/Md (66),(VEX),(o128) | 655 | 34: vpmovzxwq Vx,Ux/Md (66),(v1) |
641 | 35: pmovzxdq Vdq,Udq/Mq (66),(VEX),(o128) | 656 | 35: vpmovzxdq Vx,Ux/Mq (66),(v1) |
642 | 36: | 657 | 36: vpermd Vqq,Hqq,Wqq (66),(v) |
643 | 37: pcmpgtq Vdq,Wdq (66),(VEX),(o128) | 658 | 37: vpcmpgtq Vx,Hx,Wx (66),(v1) |
644 | 38: pminsb Vdq,Wdq (66),(VEX),(o128) | 659 | 38: vpminsb Vx,Hx,Wx (66),(v1) |
645 | 39: pminsd Vdq,Wdq (66),(VEX),(o128) | 660 | 39: vpminsd Vx,Hx,Wx (66),(v1) |
646 | 3a: pminuw Vdq,Wdq (66),(VEX),(o128) | 661 | 3a: vpminuw Vx,Hx,Wx (66),(v1) |
647 | 3b: pminud Vdq,Wdq (66),(VEX),(o128) | 662 | 3b: vpminud Vx,Hx,Wx (66),(v1) |
648 | 3c: pmaxsb Vdq,Wdq (66),(VEX),(o128) | 663 | 3c: vpmaxsb Vx,Hx,Wx (66),(v1) |
649 | 3d: pmaxsd Vdq,Wdq (66),(VEX),(o128) | 664 | 3d: vpmaxsd Vx,Hx,Wx (66),(v1) |
650 | 3e: pmaxuw Vdq,Wdq (66),(VEX),(o128) | 665 | 3e: vpmaxuw Vx,Hx,Wx (66),(v1) |
651 | 3f: pmaxud Vdq,Wdq (66),(VEX),(o128) | 666 | 3f: vpmaxud Vx,Hx,Wx (66),(v1) |
652 | # 0x0f 0x38 0x40-0x8f | 667 | # 0x0f 0x38 0x40-0x8f |
653 | 40: pmulld Vdq,Wdq (66),(VEX),(o128) | 668 | 40: vpmulld Vx,Hx,Wx (66),(v1) |
654 | 41: phminposuw Vdq,Wdq (66),(VEX),(o128) | 669 | 41: vphminposuw Vdq,Wdq (66),(v1) |
655 | 80: INVEPT Gd/q,Mdq (66) | 670 | 42: |
656 | 81: INVPID Gd/q,Mdq (66) | 671 | 43: |
672 | 44: | ||
673 | 45: vpsrlvd/q Vx,Hx,Wx (66),(v) | ||
674 | 46: vpsravd Vx,Hx,Wx (66),(v) | ||
675 | 47: vpsllvd/q Vx,Hx,Wx (66),(v) | ||
676 | # Skip 0x48-0x57 | ||
677 | 58: vpbroadcastd Vx,Wx (66),(v) | ||
678 | 59: vpbroadcastq Vx,Wx (66),(v) | ||
679 | 5a: vbroadcasti128 Vqq,Mdq (66),(v) | ||
680 | # Skip 0x5b-0x77 | ||
681 | 78: vpbroadcastb Vx,Wx (66),(v) | ||
682 | 79: vpbroadcastw Vx,Wx (66),(v) | ||
683 | # Skip 0x7a-0x7f | ||
684 | 80: INVEPT Gy,Mdq (66) | ||
685 | 81: INVPID Gy,Mdq (66) | ||
686 | 82: INVPCID Gy,Mdq (66) | ||
687 | 8c: vpmaskmovd/q Vx,Hx,Mx (66),(v) | ||
688 | 8e: vpmaskmovd/q Mx,Vx,Hx (66),(v) | ||
657 | # 0x0f 0x38 0x90-0xbf (FMA) | 689 | # 0x0f 0x38 0x90-0xbf (FMA) |
658 | 96: vfmaddsub132pd/ps /r (66),(VEX) | 690 | 90: vgatherdd/q Vx,Hx,Wx (66),(v) |
659 | 97: vfmsubadd132pd/ps /r (66),(VEX) | 691 | 91: vgatherqd/q Vx,Hx,Wx (66),(v) |
660 | 98: vfmadd132pd/ps /r (66),(VEX) | 692 | 92: vgatherdps/d Vx,Hx,Wx (66),(v) |
661 | 99: vfmadd132sd/ss /r (66),(VEX),(o128) | 693 | 93: vgatherqps/d Vx,Hx,Wx (66),(v) |
662 | 9a: vfmsub132pd/ps /r (66),(VEX) | 694 | 94: |
663 | 9b: vfmsub132sd/ss /r (66),(VEX),(o128) | 695 | 95: |
664 | 9c: vfnmadd132pd/ps /r (66),(VEX) | 696 | 96: vfmaddsub132ps/d Vx,Hx,Wx (66),(v) |
665 | 9d: vfnmadd132sd/ss /r (66),(VEX),(o128) | 697 | 97: vfmsubadd132ps/d Vx,Hx,Wx (66),(v) |
666 | 9e: vfnmsub132pd/ps /r (66),(VEX) | 698 | 98: vfmadd132ps/d Vx,Hx,Wx (66),(v) |
667 | 9f: vfnmsub132sd/ss /r (66),(VEX),(o128) | 699 | 99: vfmadd132ss/d Vx,Hx,Wx (66),(v),(v1) |
668 | a6: vfmaddsub213pd/ps /r (66),(VEX) | 700 | 9a: vfmsub132ps/d Vx,Hx,Wx (66),(v) |
669 | a7: vfmsubadd213pd/ps /r (66),(VEX) | 701 | 9b: vfmsub132ss/d Vx,Hx,Wx (66),(v),(v1) |
670 | a8: vfmadd213pd/ps /r (66),(VEX) | 702 | 9c: vfnmadd132ps/d Vx,Hx,Wx (66),(v) |
671 | a9: vfmadd213sd/ss /r (66),(VEX),(o128) | 703 | 9d: vfnmadd132ss/d Vx,Hx,Wx (66),(v),(v1) |
672 | aa: vfmsub213pd/ps /r (66),(VEX) | 704 | 9e: vfnmsub132ps/d Vx,Hx,Wx (66),(v) |
673 | ab: vfmsub213sd/ss /r (66),(VEX),(o128) | 705 | 9f: vfnmsub132ss/d Vx,Hx,Wx (66),(v),(v1) |
674 | ac: vfnmadd213pd/ps /r (66),(VEX) | 706 | a6: vfmaddsub213ps/d Vx,Hx,Wx (66),(v) |
675 | ad: vfnmadd213sd/ss /r (66),(VEX),(o128) | 707 | a7: vfmsubadd213ps/d Vx,Hx,Wx (66),(v) |
676 | ae: vfnmsub213pd/ps /r (66),(VEX) | 708 | a8: vfmadd213ps/d Vx,Hx,Wx (66),(v) |
677 | af: vfnmsub213sd/ss /r (66),(VEX),(o128) | 709 | a9: vfmadd213ss/d Vx,Hx,Wx (66),(v),(v1) |
678 | b6: vfmaddsub231pd/ps /r (66),(VEX) | 710 | aa: vfmsub213ps/d Vx,Hx,Wx (66),(v) |
679 | b7: vfmsubadd231pd/ps /r (66),(VEX) | 711 | ab: vfmsub213ss/d Vx,Hx,Wx (66),(v),(v1) |
680 | b8: vfmadd231pd/ps /r (66),(VEX) | 712 | ac: vfnmadd213ps/d Vx,Hx,Wx (66),(v) |
681 | b9: vfmadd231sd/ss /r (66),(VEX),(o128) | 713 | ad: vfnmadd213ss/d Vx,Hx,Wx (66),(v),(v1) |
682 | ba: vfmsub231pd/ps /r (66),(VEX) | 714 | ae: vfnmsub213ps/d Vx,Hx,Wx (66),(v) |
683 | bb: vfmsub231sd/ss /r (66),(VEX),(o128) | 715 | af: vfnmsub213ss/d Vx,Hx,Wx (66),(v),(v1) |
684 | bc: vfnmadd231pd/ps /r (66),(VEX) | 716 | b6: vfmaddsub231ps/d Vx,Hx,Wx (66),(v) |
685 | bd: vfnmadd231sd/ss /r (66),(VEX),(o128) | 717 | b7: vfmsubadd231ps/d Vx,Hx,Wx (66),(v) |
686 | be: vfnmsub231pd/ps /r (66),(VEX) | 718 | b8: vfmadd231ps/d Vx,Hx,Wx (66),(v) |
687 | bf: vfnmsub231sd/ss /r (66),(VEX),(o128) | 719 | b9: vfmadd231ss/d Vx,Hx,Wx (66),(v),(v1) |
720 | ba: vfmsub231ps/d Vx,Hx,Wx (66),(v) | ||
721 | bb: vfmsub231ss/d Vx,Hx,Wx (66),(v),(v1) | ||
722 | bc: vfnmadd231ps/d Vx,Hx,Wx (66),(v) | ||
723 | bd: vfnmadd231ss/d Vx,Hx,Wx (66),(v),(v1) | ||
724 | be: vfnmsub231ps/d Vx,Hx,Wx (66),(v) | ||
725 | bf: vfnmsub231ss/d Vx,Hx,Wx (66),(v),(v1) | ||
688 | # 0x0f 0x38 0xc0-0xff | 726 | # 0x0f 0x38 0xc0-0xff |
689 | db: aesimc Vdq,Wdq (66),(VEX),(o128) | 727 | db: VAESIMC Vdq,Wdq (66),(v1) |
690 | dc: aesenc Vdq,Wdq (66),(VEX),(o128) | 728 | dc: VAESENC Vdq,Hdq,Wdq (66),(v1) |
691 | dd: aesenclast Vdq,Wdq (66),(VEX),(o128) | 729 | dd: VAESENCLAST Vdq,Hdq,Wdq (66),(v1) |
692 | de: aesdec Vdq,Wdq (66),(VEX),(o128) | 730 | de: VAESDEC Vdq,Hdq,Wdq (66),(v1) |
693 | df: aesdeclast Vdq,Wdq (66),(VEX),(o128) | 731 | df: VAESDECLAST Vdq,Hdq,Wdq (66),(v1) |
694 | f0: MOVBE Gv,Mv | CRC32 Gd,Eb (F2) | 732 | f0: MOVBE Gy,My | MOVBE Gw,Mw (66) | CRC32 Gd,Eb (F2) |
695 | f1: MOVBE Mv,Gv | CRC32 Gd,Ev (F2) | 733 | f1: MOVBE My,Gy | MOVBE Mw,Gw (66) | CRC32 Gd,Ey (F2) |
734 | f2: ANDN Gy,By,Ey (v) | ||
735 | f3: Grp17 (1A) | ||
736 | f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v) | ||
737 | f6: MULX By,Gy,rDX,Ey (F2),(v) | ||
738 | f7: BEXTR Gy,Ey,By (v) | SHLX Gy,Ey,By (66),(v) | SARX Gy,Ey,By (F3),(v) | SHRX Gy,Ey,By (F2),(v) | ||
696 | EndTable | 739 | EndTable |
697 | 740 | ||
698 | Table: 3-byte opcode 2 (0x0f 0x3a) | 741 | Table: 3-byte opcode 2 (0x0f 0x3a) |
699 | Referrer: 3-byte escape 2 | 742 | Referrer: 3-byte escape 2 |
700 | AVXcode: 3 | 743 | AVXcode: 3 |
701 | # 0x0f 0x3a 0x00-0xff | 744 | # 0x0f 0x3a 0x00-0xff |
702 | 04: vpermilps /r,Ib (66),(oVEX) | 745 | 00: vpermq Vqq,Wqq,Ib (66),(v) |
703 | 05: vpermilpd /r,Ib (66),(oVEX) | 746 | 01: vpermpd Vqq,Wqq,Ib (66),(v) |
704 | 06: vperm2f128 /r,Ib (66),(oVEX),(o256) | 747 | 02: vpblendd Vx,Hx,Wx,Ib (66),(v) |
705 | 08: roundps Vdq,Wdq,Ib (66),(VEX) | 748 | 03: |
706 | 09: roundpd Vdq,Wdq,Ib (66),(VEX) | 749 | 04: vpermilps Vx,Wx,Ib (66),(v) |
707 | 0a: roundss Vss,Wss,Ib (66),(VEX),(o128) | 750 | 05: vpermilpd Vx,Wx,Ib (66),(v) |
708 | 0b: roundsd Vsd,Wsd,Ib (66),(VEX),(o128) | 751 | 06: vperm2f128 Vqq,Hqq,Wqq,Ib (66),(v) |
709 | 0c: blendps Vdq,Wdq,Ib (66),(VEX) | 752 | 07: |
710 | 0d: blendpd Vdq,Wdq,Ib (66),(VEX) | 753 | 08: vroundps Vx,Wx,Ib (66) |
711 | 0e: pblendw Vdq,Wdq,Ib (66),(VEX),(o128) | 754 | 09: vroundpd Vx,Wx,Ib (66) |
712 | 0f: palignr Pq,Qq,Ib | palignr Vdq,Wdq,Ib (66),(VEX),(o128) | 755 | 0a: vroundss Vss,Wss,Ib (66),(v1) |
713 | 14: pextrb Rd/Mb,Vdq,Ib (66),(VEX),(o128) | 756 | 0b: vroundsd Vsd,Wsd,Ib (66),(v1) |
714 | 15: pextrw Rd/Mw,Vdq,Ib (66),(VEX),(o128) | 757 | 0c: vblendps Vx,Hx,Wx,Ib (66) |
715 | 16: pextrd/pextrq Ed/q,Vdq,Ib (66),(VEX),(o128) | 758 | 0d: vblendpd Vx,Hx,Wx,Ib (66) |
716 | 17: extractps Ed,Vdq,Ib (66),(VEX),(o128) | 759 | 0e: vpblendw Vx,Hx,Wx,Ib (66),(v1) |
717 | 18: vinsertf128 /r,Ib (66),(oVEX),(o256) | 760 | 0f: palignr Pq,Qq,Ib | vpalignr Vx,Hx,Wx,Ib (66),(v1) |
718 | 19: vextractf128 /r,Ib (66),(oVEX),(o256) | 761 | 14: vpextrb Rd/Mb,Vdq,Ib (66),(v1) |
719 | 20: pinsrb Vdq,Rd/q/Mb,Ib (66),(VEX),(o128) | 762 | 15: vpextrw Rd/Mw,Vdq,Ib (66),(v1) |
720 | 21: insertps Vdq,Udq/Md,Ib (66),(VEX),(o128) | 763 | 16: vpextrd/q Ey,Vdq,Ib (66),(v1) |
721 | 22: pinsrd/pinsrq Vdq,Ed/q,Ib (66),(VEX),(o128) | 764 | 17: vextractps Ed,Vdq,Ib (66),(v1) |
722 | 40: dpps Vdq,Wdq,Ib (66),(VEX) | 765 | 18: vinsertf128 Vqq,Hqq,Wqq,Ib (66),(v) |
723 | 41: dppd Vdq,Wdq,Ib (66),(VEX),(o128) | 766 | 19: vextractf128 Wdq,Vqq,Ib (66),(v) |
724 | 42: mpsadbw Vdq,Wdq,Ib (66),(VEX),(o128) | 767 | 1d: vcvtps2ph Wx,Vx,Ib (66),(v) |
725 | 44: pclmulq Vdq,Wdq,Ib (66),(VEX),(o128) | 768 | 20: vpinsrb Vdq,Hdq,Ry/Mb,Ib (66),(v1) |
726 | 4a: vblendvps /r,Ib (66),(oVEX) | 769 | 21: vinsertps Vdq,Hdq,Udq/Md,Ib (66),(v1) |
727 | 4b: vblendvpd /r,Ib (66),(oVEX) | 770 | 22: vpinsrd/q Vdq,Hdq,Ey,Ib (66),(v1) |
728 | 4c: vpblendvb /r,Ib (66),(oVEX),(o128) | 771 | 38: vinserti128 Vqq,Hqq,Wqq,Ib (66),(v) |
729 | 60: pcmpestrm Vdq,Wdq,Ib (66),(VEX),(o128) | 772 | 39: vextracti128 Wdq,Vqq,Ib (66),(v) |
730 | 61: pcmpestri Vdq,Wdq,Ib (66),(VEX),(o128) | 773 | 40: vdpps Vx,Hx,Wx,Ib (66) |
731 | 62: pcmpistrm Vdq,Wdq,Ib (66),(VEX),(o128) | 774 | 41: vdppd Vdq,Hdq,Wdq,Ib (66),(v1) |
732 | 63: pcmpistri Vdq,Wdq,Ib (66),(VEX),(o128) | 775 | 42: vmpsadbw Vx,Hx,Wx,Ib (66),(v1) |
733 | df: aeskeygenassist Vdq,Wdq,Ib (66),(VEX),(o128) | 776 | 44: vpclmulqdq Vdq,Hdq,Wdq,Ib (66),(v1) |
777 | 46: vperm2i128 Vqq,Hqq,Wqq,Ib (66),(v) | ||
778 | 4a: vblendvps Vx,Hx,Wx,Lx (66),(v) | ||
779 | 4b: vblendvpd Vx,Hx,Wx,Lx (66),(v) | ||
780 | 4c: vpblendvb Vx,Hx,Wx,Lx (66),(v1) | ||
781 | 60: vpcmpestrm Vdq,Wdq,Ib (66),(v1) | ||
782 | 61: vpcmpestri Vdq,Wdq,Ib (66),(v1) | ||
783 | 62: vpcmpistrm Vdq,Wdq,Ib (66),(v1) | ||
784 | 63: vpcmpistri Vdq,Wdq,Ib (66),(v1) | ||
785 | df: VAESKEYGEN Vdq,Wdq,Ib (66),(v1) | ||
786 | f0: RORX Gy,Ey,Ib (F2),(v) | ||
734 | EndTable | 787 | EndTable |
735 | 788 | ||
736 | GrpTable: Grp1 | 789 | GrpTable: Grp1 |
@@ -792,7 +845,7 @@ GrpTable: Grp5 | |||
792 | 2: CALLN Ev (f64) | 845 | 2: CALLN Ev (f64) |
793 | 3: CALLF Ep | 846 | 3: CALLF Ep |
794 | 4: JMPN Ev (f64) | 847 | 4: JMPN Ev (f64) |
795 | 5: JMPF Ep | 848 | 5: JMPF Mp |
796 | 6: PUSH Ev (d64) | 849 | 6: PUSH Ev (d64) |
797 | 7: | 850 | 7: |
798 | EndTable | 851 | EndTable |
@@ -809,7 +862,7 @@ EndTable | |||
809 | GrpTable: Grp7 | 862 | GrpTable: Grp7 |
810 | 0: SGDT Ms | VMCALL (001),(11B) | VMLAUNCH (010),(11B) | VMRESUME (011),(11B) | VMXOFF (100),(11B) | 863 | 0: SGDT Ms | VMCALL (001),(11B) | VMLAUNCH (010),(11B) | VMRESUME (011),(11B) | VMXOFF (100),(11B) |
811 | 1: SIDT Ms | MONITOR (000),(11B) | MWAIT (001) | 864 | 1: SIDT Ms | MONITOR (000),(11B) | MWAIT (001) |
812 | 2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | 865 | 2: LGDT Ms | XGETBV (000),(11B) | XSETBV (001),(11B) | VMFUNC (100),(11B) |
813 | 3: LIDT Ms | 866 | 3: LIDT Ms |
814 | 4: SMSW Mw/Rv | 867 | 4: SMSW Mw/Rv |
815 | 5: | 868 | 5: |
@@ -826,44 +879,45 @@ EndTable | |||
826 | 879 | ||
827 | GrpTable: Grp9 | 880 | GrpTable: Grp9 |
828 | 1: CMPXCHG8B/16B Mq/Mdq | 881 | 1: CMPXCHG8B/16B Mq/Mdq |
829 | 6: VMPTRLD Mq | VMCLEAR Mq (66) | VMXON Mq (F3) | 882 | 6: VMPTRLD Mq | VMCLEAR Mq (66) | VMXON Mq (F3) | RDRAND Rv (11B) |
830 | 7: VMPTRST Mq | 883 | 7: VMPTRST Mq | VMPTRST Mq (F3) |
831 | EndTable | 884 | EndTable |
832 | 885 | ||
833 | GrpTable: Grp10 | 886 | GrpTable: Grp10 |
834 | EndTable | 887 | EndTable |
835 | 888 | ||
836 | GrpTable: Grp11 | 889 | GrpTable: Grp11 |
890 | # Note: the operands are given by group opcode | ||
837 | 0: MOV | 891 | 0: MOV |
838 | EndTable | 892 | EndTable |
839 | 893 | ||
840 | GrpTable: Grp12 | 894 | GrpTable: Grp12 |
841 | 2: psrlw Nq,Ib (11B) | psrlw Udq,Ib (66),(11B),(VEX),(o128) | 895 | 2: psrlw Nq,Ib (11B) | vpsrlw Hx,Ux,Ib (66),(11B),(v1) |
842 | 4: psraw Nq,Ib (11B) | psraw Udq,Ib (66),(11B),(VEX),(o128) | 896 | 4: psraw Nq,Ib (11B) | vpsraw Hx,Ux,Ib (66),(11B),(v1) |
843 | 6: psllw Nq,Ib (11B) | psllw Udq,Ib (66),(11B),(VEX),(o128) | 897 | 6: psllw Nq,Ib (11B) | vpsllw Hx,Ux,Ib (66),(11B),(v1) |
844 | EndTable | 898 | EndTable |
845 | 899 | ||
846 | GrpTable: Grp13 | 900 | GrpTable: Grp13 |
847 | 2: psrld Nq,Ib (11B) | psrld Udq,Ib (66),(11B),(VEX),(o128) | 901 | 2: psrld Nq,Ib (11B) | vpsrld Hx,Ux,Ib (66),(11B),(v1) |
848 | 4: psrad Nq,Ib (11B) | psrad Udq,Ib (66),(11B),(VEX),(o128) | 902 | 4: psrad Nq,Ib (11B) | vpsrad Hx,Ux,Ib (66),(11B),(v1) |
849 | 6: pslld Nq,Ib (11B) | pslld Udq,Ib (66),(11B),(VEX),(o128) | 903 | 6: pslld Nq,Ib (11B) | vpslld Hx,Ux,Ib (66),(11B),(v1) |
850 | EndTable | 904 | EndTable |
851 | 905 | ||
852 | GrpTable: Grp14 | 906 | GrpTable: Grp14 |
853 | 2: psrlq Nq,Ib (11B) | psrlq Udq,Ib (66),(11B),(VEX),(o128) | 907 | 2: psrlq Nq,Ib (11B) | vpsrlq Hx,Ux,Ib (66),(11B),(v1) |
854 | 3: psrldq Udq,Ib (66),(11B),(VEX),(o128) | 908 | 3: vpsrldq Hx,Ux,Ib (66),(11B),(v1) |
855 | 6: psllq Nq,Ib (11B) | psllq Udq,Ib (66),(11B),(VEX),(o128) | 909 | 6: psllq Nq,Ib (11B) | vpsllq Hx,Ux,Ib (66),(11B),(v1) |
856 | 7: pslldq Udq,Ib (66),(11B),(VEX),(o128) | 910 | 7: vpslldq Hx,Ux,Ib (66),(11B),(v1) |
857 | EndTable | 911 | EndTable |
858 | 912 | ||
859 | GrpTable: Grp15 | 913 | GrpTable: Grp15 |
860 | 0: fxsave | 914 | 0: fxsave | RDFSBASE Ry (F3),(11B) |
861 | 1: fxstor | 915 | 1: fxstor | RDGSBASE Ry (F3),(11B) |
862 | 2: ldmxcsr (VEX) | 916 | 2: vldmxcsr Md (v1) | WRFSBASE Ry (F3),(11B) |
863 | 3: stmxcsr (VEX) | 917 | 3: vstmxcsr Md (v1) | WRGSBASE Ry (F3),(11B) |
864 | 4: XSAVE | 918 | 4: XSAVE |
865 | 5: XRSTOR | lfence (11B) | 919 | 5: XRSTOR | lfence (11B) |
866 | 6: mfence (11B) | 920 | 6: XSAVEOPT | mfence (11B) |
867 | 7: clflush | sfence (11B) | 921 | 7: clflush | sfence (11B) |
868 | EndTable | 922 | EndTable |
869 | 923 | ||
@@ -874,6 +928,12 @@ GrpTable: Grp16 | |||
874 | 3: prefetch T2 | 928 | 3: prefetch T2 |
875 | EndTable | 929 | EndTable |
876 | 930 | ||
931 | GrpTable: Grp17 | ||
932 | 1: BLSR By,Ey (v) | ||
933 | 2: BLSMSK By,Ey (v) | ||
934 | 3: BLSI By,Ey (v) | ||
935 | EndTable | ||
936 | |||
877 | # AMD's Prefetch Group | 937 | # AMD's Prefetch Group |
878 | GrpTable: GrpP | 938 | GrpTable: GrpP |
879 | 0: PREFETCH | 939 | 0: PREFETCH |