instrs: Remove redundant IMM_8

This commit is contained in:
Alexis Engelke
2020-07-02 08:58:35 +02:00
parent 854082a156
commit da4ad137d8
3 changed files with 196 additions and 179 deletions

View File

@@ -2,7 +2,7 @@
01 MR GP GP - - ADD LOCK 01 MR GP GP - - ADD LOCK
02 RM GP GP - - ADD SIZE_8 02 RM GP GP - - ADD SIZE_8
03 RM GP GP - - ADD 03 RM GP GP - - ADD
04 IA GP IMM - - ADD SIZE_8 IMM_8 04 IA GP IMM - - ADD SIZE_8
05 IA GP IMM - - ADD 05 IA GP IMM - - ADD
06 NP - - - - PUSH_ES ONLY32 06 NP - - - - PUSH_ES ONLY32
07 NP - - - - POP_ES ONLY32 07 NP - - - - POP_ES ONLY32
@@ -10,7 +10,7 @@
09 MR GP GP - - OR LOCK 09 MR GP GP - - OR LOCK
0a RM GP GP - - OR SIZE_8 0a RM GP GP - - OR SIZE_8
0b RM GP GP - - OR 0b RM GP GP - - OR
0c IA GP IMM - - OR SIZE_8 IMM_8 0c IA GP IMM - - OR SIZE_8
0d IA GP IMM - - OR 0d IA GP IMM - - OR
0e NP - - - - PUSH_CS ONLY32 0e NP - - - - PUSH_CS ONLY32
#0f escape opcode #0f escape opcode
@@ -18,7 +18,7 @@
11 MR GP GP - - ADC LOCK 11 MR GP GP - - ADC LOCK
12 RM GP GP - - ADC SIZE_8 12 RM GP GP - - ADC SIZE_8
13 RM GP GP - - ADC 13 RM GP GP - - ADC
14 IA GP IMM - - ADC SIZE_8 IMM_8 14 IA GP IMM - - ADC SIZE_8
15 IA GP IMM - - ADC 15 IA GP IMM - - ADC
16 NP - - - - PUSH_SS ONLY32 16 NP - - - - PUSH_SS ONLY32
17 NP - - - - POP_SS ONLY32 17 NP - - - - POP_SS ONLY32
@@ -26,7 +26,7 @@
19 MR GP GP - - SBB LOCK 19 MR GP GP - - SBB LOCK
1a RM GP GP - - SBB SIZE_8 1a RM GP GP - - SBB SIZE_8
1b RM GP GP - - SBB 1b RM GP GP - - SBB
1c IA GP IMM - - SBB SIZE_8 IMM_8 1c IA GP IMM - - SBB SIZE_8
1d IA GP IMM - - SBB 1d IA GP IMM - - SBB
1e NP - - - - PUSH_DS ONLY32 1e NP - - - - PUSH_DS ONLY32
1f NP - - - - POP_DS ONLY32 1f NP - - - - POP_DS ONLY32
@@ -34,7 +34,7 @@
21 MR GP GP - - AND LOCK 21 MR GP GP - - AND LOCK
22 RM GP GP - - AND SIZE_8 22 RM GP GP - - AND SIZE_8
23 RM GP GP - - AND 23 RM GP GP - - AND
24 IA GP IMM - - AND SIZE_8 IMM_8 24 IA GP IMM - - AND SIZE_8
25 IA GP IMM - - AND 25 IA GP IMM - - AND
#26 SEG=ES prefix #26 SEG=ES prefix
27 NP - - - - DAA ONLY32 27 NP - - - - DAA ONLY32
@@ -42,7 +42,7 @@
29 MR GP GP - - SUB LOCK 29 MR GP GP - - SUB LOCK
2a RM GP GP - - SUB SIZE_8 2a RM GP GP - - SUB SIZE_8
2b RM GP GP - - SUB 2b RM GP GP - - SUB
2c IA GP IMM - - SUB SIZE_8 IMM_8 2c IA GP IMM - - SUB SIZE_8
2d IA GP IMM - - SUB 2d IA GP IMM - - SUB
#2e SEG=CS prefix #2e SEG=CS prefix
2f NP - - - - DAS ONLY32 2f NP - - - - DAS ONLY32
@@ -50,7 +50,7 @@
31 MR GP GP - - XOR LOCK 31 MR GP GP - - XOR LOCK
32 RM GP GP - - XOR SIZE_8 32 RM GP GP - - XOR SIZE_8
33 RM GP GP - - XOR 33 RM GP GP - - XOR
34 IA GP IMM - - XOR SIZE_8 IMM_8 34 IA GP IMM - - XOR SIZE_8
35 IA GP IMM - - XOR 35 IA GP IMM - - XOR
#36 SEG=SS prefix #36 SEG=SS prefix
37 NP - - - - AAA ONLY32 37 NP - - - - AAA ONLY32
@@ -58,7 +58,7 @@
39 MR GP GP - - CMP 39 MR GP GP - - CMP
3a RM GP GP - - CMP SIZE_8 3a RM GP GP - - CMP SIZE_8
3b RM GP GP - - CMP 3b RM GP GP - - CMP
3c IA GP IMM - - CMP SIZE_8 IMM_8 3c IA GP IMM - - CMP SIZE_8
3d IA GP IMM - - CMP 3d IA GP IMM - - CMP
#3e SEG=DS prefix #3e SEG=DS prefix
3f NP - - - - AAS ONLY32 INSTR_WIDTH 3f NP - - - - AAS ONLY32 INSTR_WIDTH
@@ -99,14 +99,14 @@
7d D IMM - - - JGE DEF64 IMM_8 7d D IMM - - - JGE DEF64 IMM_8
7e D IMM - - - JLE DEF64 IMM_8 7e D IMM - - - JLE DEF64 IMM_8
7f D IMM - - - JG DEF64 IMM_8 7f D IMM - - - JG DEF64 IMM_8
80/0 MI GP IMM - - ADD IMM_8 SIZE_8 LOCK 80/0 MI GP IMM - - ADD SIZE_8 LOCK
80/1 MI GP IMM - - OR IMM_8 SIZE_8 LOCK 80/1 MI GP IMM - - OR SIZE_8 LOCK
80/2 MI GP IMM - - ADC IMM_8 SIZE_8 LOCK 80/2 MI GP IMM - - ADC SIZE_8 LOCK
80/3 MI GP IMM - - SBB IMM_8 SIZE_8 LOCK 80/3 MI GP IMM - - SBB SIZE_8 LOCK
80/4 MI GP IMM - - AND IMM_8 SIZE_8 LOCK 80/4 MI GP IMM - - AND SIZE_8 LOCK
80/5 MI GP IMM - - SUB IMM_8 SIZE_8 LOCK 80/5 MI GP IMM - - SUB SIZE_8 LOCK
80/6 MI GP IMM - - XOR IMM_8 SIZE_8 LOCK 80/6 MI GP IMM - - XOR SIZE_8 LOCK
80/7 MI GP IMM - - CMP IMM_8 SIZE_8 80/7 MI GP IMM - - CMP SIZE_8
81/0 MI GP IMM - - ADD LOCK 81/0 MI GP IMM - - ADD LOCK
81/1 MI GP IMM - - OR LOCK 81/1 MI GP IMM - - OR LOCK
81/2 MI GP IMM - - ADC LOCK 81/2 MI GP IMM - - ADC LOCK
@@ -115,14 +115,14 @@
81/5 MI GP IMM - - SUB LOCK 81/5 MI GP IMM - - SUB LOCK
81/6 MI GP IMM - - XOR LOCK 81/6 MI GP IMM - - XOR LOCK
81/7 MI GP IMM - - CMP 81/7 MI GP IMM - - CMP
82/0 MI GP IMM - - ADD ONLY32 IMM_8 SIZE_8 LOCK 82/0 MI GP IMM - - ADD ONLY32 SIZE_8 LOCK
82/1 MI GP IMM - - OR ONLY32 IMM_8 SIZE_8 LOCK 82/1 MI GP IMM - - OR ONLY32 SIZE_8 LOCK
82/2 MI GP IMM - - ADC ONLY32 IMM_8 SIZE_8 LOCK 82/2 MI GP IMM - - ADC ONLY32 SIZE_8 LOCK
82/3 MI GP IMM - - SBB ONLY32 IMM_8 SIZE_8 LOCK 82/3 MI GP IMM - - SBB ONLY32 SIZE_8 LOCK
82/4 MI GP IMM - - AND ONLY32 IMM_8 SIZE_8 LOCK 82/4 MI GP IMM - - AND ONLY32 SIZE_8 LOCK
82/5 MI GP IMM - - SUB ONLY32 IMM_8 SIZE_8 LOCK 82/5 MI GP IMM - - SUB ONLY32 SIZE_8 LOCK
82/6 MI GP IMM - - XOR ONLY32 IMM_8 SIZE_8 LOCK 82/6 MI GP IMM - - XOR ONLY32 SIZE_8 LOCK
82/7 MI GP IMM - - CMP ONLY32 IMM_8 SIZE_8 82/7 MI GP IMM - - CMP ONLY32 SIZE_8
83/0 MI GP IMM - - ADD IMM_8 LOCK 83/0 MI GP IMM - - ADD IMM_8 LOCK
83/1 MI GP IMM - - OR IMM_8 LOCK 83/1 MI GP IMM - - OR IMM_8 LOCK
83/2 MI GP IMM - - ADC IMM_8 LOCK 83/2 MI GP IMM - - ADC IMM_8 LOCK
@@ -169,7 +169,7 @@ a4 NP - - - - MOVS SIZE_8 INSTR_WIDTH
a5 NP - - - - MOVS INSTR_WIDTH a5 NP - - - - MOVS INSTR_WIDTH
a6 NP - - - - CMPS SIZE_8 INSTR_WIDTH a6 NP - - - - CMPS SIZE_8 INSTR_WIDTH
a7 NP - - - - CMPS INSTR_WIDTH a7 NP - - - - CMPS INSTR_WIDTH
a8 IA GP IMM - - TEST SIZE_8 IMM_8 a8 IA GP IMM - - TEST SIZE_8
a9 IA GP IMM - - TEST a9 IA GP IMM - - TEST
aa NP - - - - STOS SIZE_8 INSTR_WIDTH aa NP - - - - STOS SIZE_8 INSTR_WIDTH
ab NP - - - - STOS INSTR_WIDTH ab NP - - - - STOS INSTR_WIDTH
@@ -177,30 +177,30 @@ ac NP - - - - LODS SIZE_8 INSTR_WIDTH
ad NP - - - - LODS INSTR_WIDTH ad NP - - - - LODS INSTR_WIDTH
ae NP - - - - SCAS SIZE_8 INSTR_WIDTH ae NP - - - - SCAS SIZE_8 INSTR_WIDTH
af NP - - - - SCAS INSTR_WIDTH af NP - - - - SCAS INSTR_WIDTH
b0+ OI GP IMM - - MOVABS SIZE_8 IMM_8 b0+ OI GP IMM8 - - MOVABS SIZE_8
b8+ OI GP IMM - - MOVABS b8+ OI GP IMM - - MOVABS
c0/0 MI GP IMM - - ROL SIZE_8 IMM_8 c0/0 MI GP IMM8 - - ROL SIZE_8
c0/1 MI GP IMM - - ROR SIZE_8 IMM_8 c0/1 MI GP IMM8 - - ROR SIZE_8
c0/2 MI GP IMM - - RCL SIZE_8 IMM_8 c0/2 MI GP IMM8 - - RCL SIZE_8
c0/3 MI GP IMM - - RCR SIZE_8 IMM_8 c0/3 MI GP IMM8 - - RCR SIZE_8
c0/4 MI GP IMM - - SHL SIZE_8 IMM_8 c0/4 MI GP IMM8 - - SHL SIZE_8
c0/5 MI GP IMM - - SHR SIZE_8 IMM_8 c0/5 MI GP IMM8 - - SHR SIZE_8
c0/7 MI GP IMM - - SAR SIZE_8 IMM_8 c0/7 MI GP IMM8 - - SAR SIZE_8
c1/0 MI GP IMM - - ROL IMM_8 c1/0 MI GP IMM8 - - ROL
c1/1 MI GP IMM - - ROR IMM_8 c1/1 MI GP IMM8 - - ROR
c1/2 MI GP IMM - - RCL IMM_8 c1/2 MI GP IMM8 - - RCL
c1/3 MI GP IMM - - RCR IMM_8 c1/3 MI GP IMM8 - - RCR
c1/4 MI GP IMM - - SHL IMM_8 c1/4 MI GP IMM8 - - SHL
c1/5 MI GP IMM - - SHR IMM_8 c1/5 MI GP IMM8 - - SHR
c1/7 MI GP IMM - - SAR IMM_8 c1/7 MI GP IMM8 - - SAR
# RET immediate size handled in code # RET immediate size handled in code
c2 I IMM16 - - - RET DEF64 INSTR_WIDTH c2 I IMM16 - - - RET DEF64 INSTR_WIDTH
c3 NP - - - - RET DEF64 INSTR_WIDTH c3 NP - - - - RET DEF64 INSTR_WIDTH
c4 RM GP MEMZ - - LES ONLY32 MUSTMEM c4 RM GP MEMZ - - LES ONLY32 MUSTMEM
c5 RM GP MEMZ - - LDS ONLY32 MUSTMEM c5 RM GP MEMZ - - LDS ONLY32 MUSTMEM
c6//0 MI GP IMM - - MOV SIZE_8 IMM_8 c6//0 MI GP IMM - - MOV SIZE_8
c6//c0+ OI GP IMM - - MOV SIZE_8 IMM_8 c6//c0+ OI GP IMM - - MOV SIZE_8
c6//f8 I IMM - - - XABORT IMM_8 c6//f8 I IMM8 - - - XABORT
c7//0 MI GP IMM - - MOV c7//0 MI GP IMM - - MOV
c7//c0+ OI GP IMM - - MOV c7//c0+ OI GP IMM - - MOV
c7//f8 D IMM - - - XBEGIN c7//f8 D IMM - - - XBEGIN
@@ -211,7 +211,7 @@ c9 NP - - - - LEAVE DEF64 INSTR_WIDTH
ca I IMM16 - - - RETF INSTR_WIDTH ca I IMM16 - - - RETF INSTR_WIDTH
cb NP - - - - RETF INSTR_WIDTH cb NP - - - - RETF INSTR_WIDTH
cc NP - - - - INT3 cc NP - - - - INT3
cd I IMM8 - - - INT IMM_8 cd I IMM8 - - - INT
ce NP - - - - INTO ONLY32 ce NP - - - - INTO ONLY32
cf NP - - - - IRET INSTR_WIDTH cf NP - - - - IRET INSTR_WIDTH
d0/0 M1 GP IMM8 - - ROL SIZE_8 d0/0 M1 GP IMM8 - - ROL SIZE_8
@@ -242,8 +242,8 @@ d3/3 MC GP GP8 - - RCR
d3/4 MC GP GP8 - - SHL d3/4 MC GP GP8 - - SHL
d3/5 MC GP GP8 - - SHR d3/5 MC GP GP8 - - SHR
d3/7 MC GP GP8 - - SAR d3/7 MC GP GP8 - - SAR
d4 I IMM - - - AAM ONLY32 SIZE_8 IMM_8 d4 I IMM - - - AAM ONLY32 SIZE_8
d5 I IMM - - - AAD ONLY32 SIZE_8 IMM_8 d5 I IMM - - - AAD ONLY32 SIZE_8
#d6 unused #d6 unused
d7 NP - - - - XLATB d7 NP - - - - XLATB
#d8-df FPU Escape #d8-df FPU Escape
@@ -251,10 +251,10 @@ e0 D IMM - - - LOOPNZ DEF64 IMM_8
e1 D IMM - - - LOOPZ DEF64 IMM_8 e1 D IMM - - - LOOPZ DEF64 IMM_8
e2 D IMM - - - LOOP DEF64 IMM_8 e2 D IMM - - - LOOP DEF64 IMM_8
e3 D IMM - - - JCXZ DEF64 IMM_8 e3 D IMM - - - JCXZ DEF64 IMM_8
e4 IA GP IMM - - IN SIZE_8 IMM_8 e4 IA GP IMM8 - - IN SIZE_8
e5 IA GP IMM - - IN IMM_8 e5 IA GP IMM8 - - IN
e6 IA GP IMM - - OUT SIZE_8 IMM_8 e6 IA GP IMM8 - - OUT SIZE_8
e7 IA GP IMM - - OUT IMM_8 e7 IA GP IMM8 - - OUT
e8 D IMM - - - CALL DEF64 e8 D IMM - - - CALL DEF64
e9 D IMM - - - JMP DEF64 e9 D IMM - - - JMP DEF64
#ea JMPf TODO, ONLY32 #ea JMPf TODO, ONLY32
@@ -269,7 +269,7 @@ f1 NP - - - - INT1
#f3 REP/REPZ prefix #f3 REP/REPZ prefix
f4 NP - - - - HLT f4 NP - - - - HLT
f5 NP - - - - CMC f5 NP - - - - CMC
f6/0 MI GP IMM - - TEST SIZE_8 IMM_8 f6/0 MI GP IMM - - TEST SIZE_8
f6/2 M GP - - - NOT SIZE_8 LOCK f6/2 M GP - - - NOT SIZE_8 LOCK
f6/3 M GP - - - NEG SIZE_8 LOCK f6/3 M GP - - - NEG SIZE_8 LOCK
f6/4 M GP - - - MUL SIZE_8 f6/4 M GP - - - MUL SIZE_8
@@ -427,13 +427,13 @@ NP.0f37 NP - - - - GETSEC
0fa1 NP - - - - POP_FS DEF64 INSTR_WIDTH 0fa1 NP - - - - POP_FS DEF64 INSTR_WIDTH
0fa2 NP - - - - CPUID 0fa2 NP - - - - CPUID
0fa3 MR GP GP - - BT 0fa3 MR GP GP - - BT
0fa4 MRI GP GP IMM8 - SHLD IMM_8 0fa4 MRI GP GP IMM8 - SHLD
0fa5 MRC GP GP GP8 - SHLD 0fa5 MRC GP GP GP8 - SHLD
0fa8 NP - - - - PUSH_GS DEF64 INSTR_WIDTH 0fa8 NP - - - - PUSH_GS DEF64 INSTR_WIDTH
0fa9 NP - - - - POP_GS DEF64 INSTR_WIDTH 0fa9 NP - - - - POP_GS DEF64 INSTR_WIDTH
0faa NP - - - - RSM 0faa NP - - - - RSM
0fab MR GP GP - - BTS LOCK 0fab MR GP GP - - BTS LOCK
0fac MRI GP GP IMM8 - SHRD IMM_8 0fac MRI GP GP IMM8 - SHRD
0fad MRC GP GP GP8 - SHRD 0fad MRC GP GP GP8 - SHRD
0faf RM GP GP - - IMUL 0faf RM GP GP - - IMUL
0fb0 MR GP GP - - CMPXCHG SIZE_8 LOCK 0fb0 MR GP GP - - CMPXCHG SIZE_8 LOCK
@@ -446,10 +446,10 @@ NP.0f37 NP - - - - GETSEC
0fb7 RM GP GP16 - - MOVZX 0fb7 RM GP GP16 - - MOVZX
RF3.0fb8 RM GP GP - - POPCNT RF3.0fb8 RM GP GP - - POPCNT
0fb9 RM GP GP - - UD1 0fb9 RM GP GP - - UD1
0fba/4 MI GP IMM8 - - BT IMM_8 0fba/4 MI GP IMM8 - - BT
0fba/5 MI GP IMM8 - - BTS IMM_8 LOCK 0fba/5 MI GP IMM8 - - BTS LOCK
0fba/6 MI GP IMM8 - - BTR IMM_8 LOCK 0fba/6 MI GP IMM8 - - BTR LOCK
0fba/7 MI GP IMM8 - - BTC IMM_8 LOCK 0fba/7 MI GP IMM8 - - BTC LOCK
0fbb MR GP GP - - BTC LOCK 0fbb MR GP GP - - BTC LOCK
RNP.0fbc RM GP GP - - BSF RNP.0fbc RM GP GP - - BSF
RF2.0fbc RM GP GP - - BSF RF2.0fbc RM GP GP - - BSF
@@ -493,14 +493,14 @@ NP.0f6b RM MMX MMX - - MMX_PACKSSDW
NP.W0.0f6e RM MMX GP - - MMX_MOVD NP.W0.0f6e RM MMX GP - - MMX_MOVD
NP.W1.0f6e RM MMX GP - - MMX_MOVQ NP.W1.0f6e RM MMX GP - - MMX_MOVQ
NP.0f6f RM MMX MMX - - MMX_MOVQ NP.0f6f RM MMX MMX - - MMX_MOVQ
NP.0f71/2 MI MMX IMM8 - - MMX_PSRLW IMM_8 NOMEM NP.0f71/2 MI MMX IMM8 - - MMX_PSRLW NOMEM
NP.0f71/4 MI MMX IMM8 - - MMX_PSRAW IMM_8 NOMEM NP.0f71/4 MI MMX IMM8 - - MMX_PSRAW NOMEM
NP.0f71/6 MI MMX IMM8 - - MMX_PSLLW IMM_8 NOMEM NP.0f71/6 MI MMX IMM8 - - MMX_PSLLW NOMEM
NP.0f72/2 MI MMX IMM8 - - MMX_PSRLD IMM_8 NOMEM NP.0f72/2 MI MMX IMM8 - - MMX_PSRLD NOMEM
NP.0f72/4 MI MMX IMM8 - - MMX_PSRAD IMM_8 NOMEM NP.0f72/4 MI MMX IMM8 - - MMX_PSRAD NOMEM
NP.0f72/6 MI MMX IMM8 - - MMX_PSLLD IMM_8 NOMEM NP.0f72/6 MI MMX IMM8 - - MMX_PSLLD NOMEM
NP.0f73/2 MI MMX IMM8 - - MMX_PSRLQ IMM_8 NOMEM NP.0f73/2 MI MMX IMM8 - - MMX_PSRLQ NOMEM
NP.0f73/6 MI MMX IMM8 - - MMX_PSLLQ IMM_8 NOMEM NP.0f73/6 MI MMX IMM8 - - MMX_PSLLQ NOMEM
NP.0f74 RM MMX MMX - - MMX_PCMPEQB NP.0f74 RM MMX MMX - - MMX_PCMPEQB
NP.0f75 RM MMX MMX - - MMX_PCMPEQW NP.0f75 RM MMX MMX - - MMX_PCMPEQW
NP.0f76 RM MMX MMX - - MMX_PCMPEQD NP.0f76 RM MMX MMX - - MMX_PCMPEQD
@@ -508,8 +508,8 @@ NP.0f77 NP - - - - MMX_EMMS
NP.W0.0f7e MR GP MMX - - MMX_MOVD NP.W0.0f7e MR GP MMX - - MMX_MOVD
NP.W1.0f7e MR GP MMX - - MMX_MOVQ NP.W1.0f7e MR GP MMX - - MMX_MOVQ
NP.0f7f MR MMX MMX - - MMX_MOVQ NP.0f7f MR MMX MMX - - MMX_MOVQ
NP.0fc4 RMI MMX GP IMM8 - MMX_PINSRW IMM_8 NP.0fc4 RMI MMX GP IMM8 - MMX_PINSRW
NP.0fc5 RMI GP MMX IMM8 - MMX_PEXTRW IMM_8 NOMEM NP.0fc5 RMI GP MMX IMM8 - MMX_PEXTRW NOMEM
NP.0fd1 RM MMX MMX - - MMX_PSRLW NP.0fd1 RM MMX MMX - - MMX_PSRLW
NP.0fd2 RM MMX MMX - - MMX_PSRLD NP.0fd2 RM MMX MMX - - MMX_PSRLD
NP.0fd3 RM MMX MMX - - MMX_PSRLQ NP.0fd3 RM MMX MMX - - MMX_PSRLQ
@@ -570,7 +570,7 @@ NP.0f380b RM MMX MMX - - MMX_PMULHRSW
NP.0f381c RM MMX MMX - - MMX_PABSB NP.0f381c RM MMX MMX - - MMX_PABSB
NP.0f381d RM MMX MMX - - MMX_PABSW NP.0f381d RM MMX MMX - - MMX_PABSW
NP.0f381e RM MMX MMX - - MMX_PABSD NP.0f381e RM MMX MMX - - MMX_PABSD
NP.0f3a0f RMI MMX MMX IMM8 - MMX_PALIGNR IMM_8 NP.0f3a0f RMI MMX MMX IMM8 - MMX_PALIGNR
# #
# SSE # SSE
@@ -681,19 +681,19 @@ F2.0f5f RM XMM64 XMM64 - - SSE_MAXSD
66.W1.0f6e RM XMM GP - - SSE_MOVQ 66.W1.0f6e RM XMM GP - - SSE_MOVQ
66.0f6f RM XMM XMM - - SSE_MOVDQA 66.0f6f RM XMM XMM - - SSE_MOVDQA
F3.0f6f RM XMM XMM - - SSE_MOVDQU F3.0f6f RM XMM XMM - - SSE_MOVDQU
66.0f70 RMI XMM XMM IMM8 - SSE_PSHUFD IMM_8 66.0f70 RMI XMM XMM IMM8 - SSE_PSHUFD
F3.0f70 RMI XMM XMM IMM8 - SSE_PSHUFHW IMM_8 F3.0f70 RMI XMM XMM IMM8 - SSE_PSHUFHW
F2.0f70 RMI XMM XMM IMM8 - SSE_PSHUFLW IMM_8 F2.0f70 RMI XMM XMM IMM8 - SSE_PSHUFLW
66.0f71/2 MI XMM IMM8 - - SSE_PSRLW IMM_8 NOMEM 66.0f71/2 MI XMM IMM8 - - SSE_PSRLW NOMEM
66.0f71/4 MI XMM IMM8 - - SSE_PSRAW IMM_8 NOMEM 66.0f71/4 MI XMM IMM8 - - SSE_PSRAW NOMEM
66.0f71/6 MI XMM IMM8 - - SSE_PSLLW IMM_8 NOMEM 66.0f71/6 MI XMM IMM8 - - SSE_PSLLW NOMEM
66.0f72/2 MI XMM IMM8 - - SSE_PSRLD IMM_8 NOMEM 66.0f72/2 MI XMM IMM8 - - SSE_PSRLD NOMEM
66.0f72/4 MI XMM IMM8 - - SSE_PSRAD IMM_8 NOMEM 66.0f72/4 MI XMM IMM8 - - SSE_PSRAD NOMEM
66.0f72/6 MI XMM IMM8 - - SSE_PSLLD IMM_8 NOMEM 66.0f72/6 MI XMM IMM8 - - SSE_PSLLD NOMEM
66.0f73/2 MI XMM IMM8 - - SSE_PSRLQ IMM_8 NOMEM 66.0f73/2 MI XMM IMM8 - - SSE_PSRLQ NOMEM
66.0f73/3 MI XMM IMM8 - - SSE_PSRLDQ IMM_8 NOMEM 66.0f73/3 MI XMM IMM8 - - SSE_PSRLDQ NOMEM
66.0f73/6 MI XMM IMM8 - - SSE_PSLLQ IMM_8 NOMEM 66.0f73/6 MI XMM IMM8 - - SSE_PSLLQ NOMEM
66.0f73/7 MI XMM IMM8 - - SSE_PSLLDQ IMM_8 NOMEM 66.0f73/7 MI XMM IMM8 - - SSE_PSLLDQ NOMEM
66.0f74 RM XMM XMM - - SSE_PCMPEQB 66.0f74 RM XMM XMM - - SSE_PCMPEQB
66.0f75 RM XMM XMM - - SSE_PCMPEQW 66.0f75 RM XMM XMM - - SSE_PCMPEQW
66.0f76 RM XMM XMM - - SSE_PCMPEQD 66.0f76 RM XMM XMM - - SSE_PCMPEQD
@@ -713,14 +713,14 @@ NP.0fae//3 M MEM32 - - - STMXCSR
NP.0fae//e8+ NP - - - - LFENCE NP.0fae//e8+ NP - - - - LFENCE
NP.0fae//f0+ NP - - - - MFENCE NP.0fae//f0+ NP - - - - MFENCE
NP.0fae//f8+ NP - - - - SFENCE NP.0fae//f8+ NP - - - - SFENCE
NP.0fc2 RMI XMM XMM IMM8 - SSE_CMPPS IMM_8 NP.0fc2 RMI XMM XMM IMM8 - SSE_CMPPS
66.0fc2 RMI XMM XMM IMM8 - SSE_CMPPD IMM_8 66.0fc2 RMI XMM XMM IMM8 - SSE_CMPPD
F3.0fc2 RMI XMM XMM32 IMM8 - SSE_CMPSS IMM_8 F3.0fc2 RMI XMM XMM32 IMM8 - SSE_CMPSS
F2.0fc2 RMI XMM XMM64 IMM8 - SSE_CMPSD IMM_8 F2.0fc2 RMI XMM XMM64 IMM8 - SSE_CMPSD
66.0fc4 RMI XMM GP IMM8 - SSE_PINSRW IMM_8 66.0fc4 RMI XMM GP IMM8 - SSE_PINSRW
66.0fc5 RMI GP XMM IMM8 - SSE_PEXTRW IMM_8 NOMEM 66.0fc5 RMI GP XMM IMM8 - SSE_PEXTRW NOMEM
NP.0fc6 RMI XMM XMM IMM8 - SSE_SHUFPS IMM_8 NP.0fc6 RMI XMM XMM IMM8 - SSE_SHUFPS
66.0fc6 RMI XMM XMM IMM8 - SSE_SHUFPD IMM_8 66.0fc6 RMI XMM XMM IMM8 - SSE_SHUFPD
66.0fd0 RM XMM XMM - - SSE_ADDSUBPD 66.0fd0 RM XMM XMM - - SSE_ADDSUBPD
F2.0fd0 RM XMM XMM - - SSE_ADDSUBPS F2.0fd0 RM XMM XMM - - SSE_ADDSUBPS
66.0fd1 RM XMM XMM - - SSE_PSRLW 66.0fd1 RM XMM XMM - - SSE_PSRLW
@@ -822,44 +822,44 @@ F2.0ff0 RM XMM XMM - - SSE_LDDQU MUSTMEM
66.0f38f8 RM GP MEMZ - - MOVDIR64B MUSTMEM 66.0f38f8 RM GP MEMZ - - MOVDIR64B MUSTMEM
NP.0f38f9 MR GP GP - - MOVDIRI MUSTMEM NP.0f38f9 MR GP GP - - MOVDIRI MUSTMEM
# #
66.0f3a08 RMI XMM XMM IMM8 - SSE_ROUNDPS IMM_8 66.0f3a08 RMI XMM XMM IMM8 - SSE_ROUNDPS
66.0f3a09 RMI XMM XMM IMM8 - SSE_ROUNDPD IMM_8 66.0f3a09 RMI XMM XMM IMM8 - SSE_ROUNDPD
66.0f3a0a RMI XMM32 XMM32 IMM8 - SSE_ROUNDSS IMM_8 66.0f3a0a RMI XMM32 XMM32 IMM8 - SSE_ROUNDSS
66.0f3a0b RMI XMM64 XMM64 IMM8 - SSE_ROUNDSD IMM_8 66.0f3a0b RMI XMM64 XMM64 IMM8 - SSE_ROUNDSD
66.0f3a0c RMI XMM XMM IMM8 - SSE_BLENDPS IMM_8 66.0f3a0c RMI XMM XMM IMM8 - SSE_BLENDPS
66.0f3a0d RMI XMM XMM IMM8 - SSE_BLENDPD IMM_8 66.0f3a0d RMI XMM XMM IMM8 - SSE_BLENDPD
66.0f3a0e RMI XMM XMM IMM8 - SSE_PBLENDW IMM_8 66.0f3a0e RMI XMM XMM IMM8 - SSE_PBLENDW
66.0f3a0f RMI XMM XMM IMM8 - SSE_PALIGNR IMM_8 66.0f3a0f RMI XMM XMM IMM8 - SSE_PALIGNR
66.0f3a14 MRI GP8 XMM IMM8 - SSE_PEXTRB IMM_8 66.0f3a14 MRI GP8 XMM IMM8 - SSE_PEXTRB
66.0f3a15 MRI GP16 XMM IMM8 - SSE_PEXTRW IMM_8 66.0f3a15 MRI GP16 XMM IMM8 - SSE_PEXTRW
66.W0.0f3a16 MRI GP XMM IMM8 - SSE_PEXTRD IMM_8 66.W0.0f3a16 MRI GP XMM IMM8 - SSE_PEXTRD
66.W1.0f3a16 MRI GP XMM IMM8 - SSE_PEXTRQ IMM_8 66.W1.0f3a16 MRI GP XMM IMM8 - SSE_PEXTRQ
66.0f3a17 MRI GP32 XMM IMM8 - SSE_EXTRACTPS IMM_8 66.0f3a17 MRI GP32 XMM IMM8 - SSE_EXTRACTPS
66.0f3a20 RMI XMM GP8 IMM8 - SSE_PINSRB IMM_8 66.0f3a20 RMI XMM GP8 IMM8 - SSE_PINSRB
66.0f3a21 RMI XMM XMM32 IMM8 - SSE_INSERTPS IMM_8 66.0f3a21 RMI XMM XMM32 IMM8 - SSE_INSERTPS
66.W0.0f3a22 RMI XMM GP IMM8 - SSE_PINSRD IMM_8 66.W0.0f3a22 RMI XMM GP IMM8 - SSE_PINSRD
66.W1.0f3a22 RMI XMM GP IMM8 - SSE_PINSRQ IMM_8 66.W1.0f3a22 RMI XMM GP IMM8 - SSE_PINSRQ
66.0f3a40 RMI XMM XMM IMM8 - SSE_DPPS IMM_8 66.0f3a40 RMI XMM XMM IMM8 - SSE_DPPS
66.0f3a41 RMI XMM XMM IMM8 - SSE_DPPD IMM_8 66.0f3a41 RMI XMM XMM IMM8 - SSE_DPPD
66.0f3a42 RMI XMM XMM IMM8 - SSE_MPSADBW IMM_8 66.0f3a42 RMI XMM XMM IMM8 - SSE_MPSADBW
66.0f3a44 RMI XMM XMM IMM8 - SSE_PCLMULQDQ IMM_8 66.0f3a44 RMI XMM XMM IMM8 - SSE_PCLMULQDQ
66.0f3a60 RMI XMM XMM IMM8 - SSE_PCMPESTRM IMM_8 66.0f3a60 RMI XMM XMM IMM8 - SSE_PCMPESTRM
66.0f3a61 RMI XMM XMM IMM8 - SSE_PCMPESTRI IMM_8 66.0f3a61 RMI XMM XMM IMM8 - SSE_PCMPESTRI
66.0f3a62 RMI XMM XMM IMM8 - SSE_PCMPISTRM IMM_8 66.0f3a62 RMI XMM XMM IMM8 - SSE_PCMPISTRM
66.0f3a63 RMI XMM XMM IMM8 - SSE_PCMPISTRI IMM_8 66.0f3a63 RMI XMM XMM IMM8 - SSE_PCMPISTRI
# #
66.0f38db RM XMM XMM - - AESIMC 66.0f38db RM XMM XMM - - AESIMC
66.0f38dc RM XMM XMM - - AESENC 66.0f38dc RM XMM XMM - - AESENC
66.0f38dd RM XMM XMM - - AESENCLAST 66.0f38dd RM XMM XMM - - AESENCLAST
66.0f38de RM XMM XMM - - AESDEC 66.0f38de RM XMM XMM - - AESDEC
66.0f38df RM XMM XMM - - AESDECLAST 66.0f38df RM XMM XMM - - AESDECLAST
66.0f3adf RMI XMM XMM IMM8 - AESKEYGENASSIST IMM_8 66.0f3adf RMI XMM XMM IMM8 - AESKEYGENASSIST
VEX.66.L0.0f38db RM XMM XMM - - VAESIMC VEX.66.L0.0f38db RM XMM XMM - - VAESIMC
VEX.66.L0.0f38dc RVM XMM XMM XMM - VAESENC VEX.66.L0.0f38dc RVM XMM XMM XMM - VAESENC
VEX.66.L0.0f38dd RVM XMM XMM XMM - VAESENCLAST VEX.66.L0.0f38dd RVM XMM XMM XMM - VAESENCLAST
VEX.66.L0.0f38de RVM XMM XMM XMM - VAESDEC VEX.66.L0.0f38de RVM XMM XMM XMM - VAESDEC
VEX.66.L0.0f38df RVM XMM XMM XMM - VAESDECLAST VEX.66.L0.0f38df RVM XMM XMM XMM - VAESDECLAST
VEX.66.L0.0f3adf RMI XMM XMM IMM8 - VAESKEYGENASSIST IMM_8 VEX.66.L0.0f3adf RMI XMM XMM IMM8 - VAESKEYGENASSIST
# #
# AVX # AVX
VEX.NP.0f10 RM XMM XMM - - VMOVUPS VEX.NP.0f10 RM XMM XMM - - VMOVUPS
@@ -973,19 +973,19 @@ VEX.66.W1.L0.0f6e RM XMM32 GP - - VMOVD ONLY32
VEX.66.W1.L0.0f6e RM XMM64 GP - - VMOVQ ONLY64 VEX.66.W1.L0.0f6e RM XMM64 GP - - VMOVQ ONLY64
VEX.66.0f6f RM XMM XMM - - VMOVDQA VEX.66.0f6f RM XMM XMM - - VMOVDQA
VEX.F3.0f6f RM XMM XMM - - VMOVDQU VEX.F3.0f6f RM XMM XMM - - VMOVDQU
VEX.66.0f70 RMI XMM XMM IMM8 - VPSHUFD IMM_8 VEX.66.0f70 RMI XMM XMM IMM8 - VPSHUFD
VEX.F3.0f70 RMI XMM XMM IMM8 - VPSHUFHW IMM_8 VEX.F3.0f70 RMI XMM XMM IMM8 - VPSHUFHW
VEX.F2.0f70 RMI XMM XMM IMM8 - VPSHUFLW IMM_8 VEX.F2.0f70 RMI XMM XMM IMM8 - VPSHUFLW
VEX.66.0f71/2 VMI XMM XMM IMM8 - VPSRLW IMM_8 NOMEM VEX.66.0f71/2 VMI XMM XMM IMM8 - VPSRLW NOMEM
VEX.66.0f71/4 VMI XMM XMM IMM8 - VPSRAW IMM_8 NOMEM VEX.66.0f71/4 VMI XMM XMM IMM8 - VPSRAW NOMEM
VEX.66.0f71/6 VMI XMM XMM IMM8 - VPSLLW IMM_8 NOMEM VEX.66.0f71/6 VMI XMM XMM IMM8 - VPSLLW NOMEM
VEX.66.0f72/2 VMI XMM XMM IMM8 - VPSRLD IMM_8 NOMEM VEX.66.0f72/2 VMI XMM XMM IMM8 - VPSRLD NOMEM
VEX.66.0f72/4 VMI XMM XMM IMM8 - VPSRAD IMM_8 NOMEM VEX.66.0f72/4 VMI XMM XMM IMM8 - VPSRAD NOMEM
VEX.66.0f72/6 VMI XMM XMM IMM8 - VPSLLD IMM_8 NOMEM VEX.66.0f72/6 VMI XMM XMM IMM8 - VPSLLD NOMEM
VEX.66.0f73/2 VMI XMM XMM IMM8 - VPSRLQ IMM_8 NOMEM VEX.66.0f73/2 VMI XMM XMM IMM8 - VPSRLQ NOMEM
VEX.66.0f73/3 VMI XMM XMM IMM8 - VPSRLDQ IMM_8 NOMEM VEX.66.0f73/3 VMI XMM XMM IMM8 - VPSRLDQ NOMEM
VEX.66.0f73/6 VMI XMM XMM IMM8 - VPSLLQ IMM_8 NOMEM VEX.66.0f73/6 VMI XMM XMM IMM8 - VPSLLQ NOMEM
VEX.66.0f73/7 VMI XMM XMM IMM8 - VPSLLDQ IMM_8 NOMEM VEX.66.0f73/7 VMI XMM XMM IMM8 - VPSLLDQ NOMEM
VEX.66.0f74 RVM XMM XMM XMM - VPCMPEQB VEX.66.0f74 RVM XMM XMM XMM - VPCMPEQB
VEX.66.0f75 RVM XMM XMM XMM - VPCMPEQW VEX.66.0f75 RVM XMM XMM XMM - VPCMPEQW
VEX.66.0f76 RVM XMM XMM XMM - VPCMPEQD VEX.66.0f76 RVM XMM XMM XMM - VPCMPEQD
@@ -1003,14 +1003,14 @@ VEX.66.0f7f MR XMM XMM - - VMOVDQA
VEX.F3.0f7f MR XMM XMM - - VMOVDQU VEX.F3.0f7f MR XMM XMM - - VMOVDQU
VEX.NP.0fae//2 M GP32 - - - VLDMXCSR VEX.NP.0fae//2 M GP32 - - - VLDMXCSR
VEX.NP.0fae//3 M GP32 - - - VSTMXCSR VEX.NP.0fae//3 M GP32 - - - VSTMXCSR
VEX.NP.0fc2 RVMI XMM XMM XMM IMM8 VCMPPS IMM_8 VEX.NP.0fc2 RVMI XMM XMM XMM IMM8 VCMPPS
VEX.66.0fc2 RVMI XMM XMM XMM IMM8 VCMPPD IMM_8 VEX.66.0fc2 RVMI XMM XMM XMM IMM8 VCMPPD
VEX.F3.0fc2 RVMI XMM XMM XMM32 IMM8 VCMPSS IMM_8 VEXLIG VEX.F3.0fc2 RVMI XMM XMM XMM32 IMM8 VCMPSS VEXLIG
VEX.F2.0fc2 RVMI XMM XMM XMM64 IMM8 VCMPSD IMM_8 VEXLIG VEX.F2.0fc2 RVMI XMM XMM XMM64 IMM8 VCMPSD VEXLIG
VEX.66.W0.0fc4 RVMI XMM XMM GP IMM8 VPINSRW IMM_8 VEX.66.W0.0fc4 RVMI XMM XMM GP IMM8 VPINSRW
VEX.66.W0.L0.0fc5 RMI GP XMM IMM8 - VPEXTRW IMM_8 VEX.66.W0.L0.0fc5 RMI GP XMM IMM8 - VPEXTRW
VEX.NP.0fc6 RVMI XMM XMM XMM IMM8 VSHUFPS IMM_8 VEX.NP.0fc6 RVMI XMM XMM XMM IMM8 VSHUFPS
VEX.66.0fc6 RVMI XMM XMM XMM IMM8 VSHUFPD IMM_8 VEX.66.0fc6 RVMI XMM XMM XMM IMM8 VSHUFPD
VEX.NP.0fd0 RVM XMM XMM XMM - VADDSUBPS VEX.NP.0fd0 RVM XMM XMM XMM - VADDSUBPS
VEX.66.0fd0 RVM XMM XMM XMM - VADDSUBPD VEX.66.0fd0 RVM XMM XMM XMM - VADDSUBPD
VEX.66.0fd1 RVM XMM XMM XMM - VPSRLW VEX.66.0fd1 RVM XMM XMM XMM - VPSRLW
@@ -1204,43 +1204,43 @@ VEX.66.W0.0f38be RVM XMM XMM XMM - VFNMSUB231PS
VEX.66.W1.0f38be RVM XMM XMM XMM - VFNMSUB231PD VEX.66.W1.0f38be RVM XMM XMM XMM - VFNMSUB231PD
VEX.66.W0.0f38bf RVM XMM XMM XMM32 - VFNMSUB231SS VEXLIG VEX.66.W0.0f38bf RVM XMM XMM XMM32 - VFNMSUB231SS VEXLIG
VEX.66.W1.0f38bf RVM XMM XMM XMM64 - VFNMSUB231SD VEXLIG VEX.66.W1.0f38bf RVM XMM XMM XMM64 - VFNMSUB231SD VEXLIG
VEX.66.W1.L1.0f3a00 VMI XMM XMM IMM8 - VPERMQ IMM_8 VEX.66.W1.L1.0f3a00 VMI XMM XMM IMM8 - VPERMQ
VEX.66.W1.L1.0f3a01 VMI XMM XMM IMM8 - VPERMPD IMM_8 VEX.66.W1.L1.0f3a01 VMI XMM XMM IMM8 - VPERMPD
VEX.66.W0.0f3a02 RVMI XMM XMM XMM IMM8 VPBLENDD IMM_8 VEX.66.W0.0f3a02 RVMI XMM XMM XMM IMM8 VPBLENDD
VEX.66.W0.0f3a04 RMI XMM XMM IMM8 - VPERMILPS IMM_8 VEX.66.W0.0f3a04 RMI XMM XMM IMM8 - VPERMILPS
VEX.66.W0.0f3a05 RMI XMM XMM IMM8 - VPERMILPD IMM_8 VEX.66.W0.0f3a05 RMI XMM XMM IMM8 - VPERMILPD
VEX.66.W0.L1.0f3a06 RVMI XMM XMM XMM IMM8 VPERM2F128 IMM_8 VEX.66.W0.L1.0f3a06 RVMI XMM XMM XMM IMM8 VPERM2F128
VEX.66.0f3a08 RVMI XMM XMM XMM IMM8 VROUNDPS IMM_8 VEX.66.0f3a08 RVMI XMM XMM XMM IMM8 VROUNDPS
VEX.66.0f3a09 RVMI XMM XMM XMM IMM8 VROUNDPD IMM_8 VEX.66.0f3a09 RVMI XMM XMM XMM IMM8 VROUNDPD
VEX.66.0f3a0a RVMI XMM XMM XMM32 IMM8 VROUNDSS IMM_8 VEXLIG VEX.66.0f3a0a RVMI XMM XMM XMM32 IMM8 VROUNDSS VEXLIG
VEX.66.0f3a0b RVMI XMM XMM XMM64 IMM8 VROUNDSD IMM_8 VEXLIG VEX.66.0f3a0b RVMI XMM XMM XMM64 IMM8 VROUNDSD VEXLIG
VEX.66.0f3a0c RVMI XMM XMM XMM IMM8 VBLENDPS IMM_8 VEX.66.0f3a0c RVMI XMM XMM XMM IMM8 VBLENDPS
VEX.66.0f3a0d RVMI XMM XMM XMM IMM8 VBLENDPD IMM_8 VEX.66.0f3a0d RVMI XMM XMM XMM IMM8 VBLENDPD
VEX.66.0f3a0e RVMI XMM XMM XMM IMM8 VPBLENDW IMM_8 VEX.66.0f3a0e RVMI XMM XMM XMM IMM8 VPBLENDW
VEX.66.0f3a0f RVMI XMM XMM XMM IMM8 VPALIGNR IMM_8 VEX.66.0f3a0f RVMI XMM XMM XMM IMM8 VPALIGNR
VEX.66.W0.L0.0f3a14 MRI GP8 XMM IMM8 - VPEXTRB IMM_8 VEX.66.W0.L0.0f3a14 MRI GP8 XMM IMM8 - VPEXTRB
VEX.66.W0.L0.0f3a15 MRI GP16 XMM IMM8 - VPEXTRW IMM_8 VEX.66.W0.L0.0f3a15 MRI GP16 XMM IMM8 - VPEXTRW
VEX.66.W0.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRD IMM_8 VEX.66.W0.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRD
VEX.66.W1.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRQ IMM_8 VEX.66.W1.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRQ
VEX.66.L0.0f3a17 MRI GP32 XMM IMM8 - VEXTRACTPS IMM_8 VEX.66.L0.0f3a17 MRI GP32 XMM IMM8 - VEXTRACTPS
VEX.66.W0.L1.0f3a18 RVMI XMM XMM XMM IMM8 VINSERTF128 IMM_8 VEX.66.W0.L1.0f3a18 RVMI XMM XMM XMM IMM8 VINSERTF128
VEX.66.W0.L1.0f3a19 MRI XMM XMM IMM8 - VEXTRACTF128 IMM_8 VEX.66.W0.L1.0f3a19 MRI XMM XMM IMM8 - VEXTRACTF128
VEX.66.W0.L1.0f3a1d MRI XMM XMM IMM8 - VCVTPS2PH IMM_8 VEX.66.W0.L1.0f3a1d MRI XMM XMM IMM8 - VCVTPS2PH
VEX.66.W0.L0.0f3a20 RMI XMM GP8 IMM8 - VPINSRB IMM_8 VEX.66.W0.L0.0f3a20 RMI XMM GP8 IMM8 - VPINSRB
VEX.66.L0.0f3a21 RVMI XMM XMM XMM32 IMM8 VINSERTPS IMM_8 VEX.66.L0.0f3a21 RVMI XMM XMM XMM32 IMM8 VINSERTPS
VEX.66.W0.L0.0f3a22 RMI XMM GP IMM8 - VPINSRD IMM_8 VEX.66.W0.L0.0f3a22 RMI XMM GP IMM8 - VPINSRD
VEX.66.W1.L0.0f3a22 RMI XMM GP IMM8 - VPINSRQ IMM_8 VEX.66.W1.L0.0f3a22 RMI XMM GP IMM8 - VPINSRQ
VEX.66.W0.L1.0f3a38 RVMI XMM XMM XMM IMM8 VINSERTI128 IMM_8 VEX.66.W0.L1.0f3a38 RVMI XMM XMM XMM IMM8 VINSERTI128
VEX.66.W0.L1.0f3a39 MRI XMM XMM IMM8 - VEXTRACTI128 IMM_8 VEX.66.W0.L1.0f3a39 MRI XMM XMM IMM8 - VEXTRACTI128
VEX.66.0f3a40 RVMI XMM XMM XMM IMM8 VDPPS IMM_8 VEX.66.0f3a40 RVMI XMM XMM XMM IMM8 VDPPS
VEX.66.0f3a41 RVMI XMM XMM XMM IMM8 VDPPD IMM_8 VEX.66.0f3a41 RVMI XMM XMM XMM IMM8 VDPPD
VEX.66.0f3a42 RVMI XMM XMM XMM IMM8 VMPSADBW IMM_8 VEX.66.0f3a42 RVMI XMM XMM XMM IMM8 VMPSADBW
VEX.66.0f3a44 RVMI XMM XMM XMM IMM8 VPCLMULQDQ IMM_8 VEX.66.0f3a44 RVMI XMM XMM XMM IMM8 VPCLMULQDQ
VEX.66.W0.L1.0f3a46 RVMI XMM XMM XMM IMM8 VPERM2I128 IMM_8 VEX.66.W0.L1.0f3a46 RVMI XMM XMM XMM IMM8 VPERM2I128
VEX.66.0f3a60 RMI XMM XMM IMM8 - VPCMPESTRM IMM_8 VEX.66.0f3a60 RMI XMM XMM IMM8 - VPCMPESTRM
VEX.66.0f3a61 RMI XMM XMM IMM8 - VPCMPESTRI IMM_8 VEX.66.0f3a61 RMI XMM XMM IMM8 - VPCMPESTRI
VEX.66.0f3a62 RMI XMM XMM IMM8 - VPCMPISTRM IMM_8 VEX.66.0f3a62 RMI XMM XMM IMM8 - VPCMPISTRM
VEX.66.0f3a63 RMI XMM XMM IMM8 - VPCMPISTRI IMM_8 VEX.66.0f3a63 RMI XMM XMM IMM8 - VPCMPISTRI
# #
# BMI1 # BMI1
VEX.NP.L0.0f38f2 RVM GP GP GP - ANDN VEX.NP.L0.0f38f2 RVM GP GP GP - ANDN
@@ -1249,7 +1249,7 @@ VEX.NP.L0.0f38f3/2 VM GP GP - - BLSMSK
VEX.NP.L0.0f38f3/3 VM GP GP - - BLSI VEX.NP.L0.0f38f3/3 VM GP GP - - BLSI
VEX.NP.L0.0f38f7 RMV GP GP GP - BEXTR VEX.NP.L0.0f38f7 RMV GP GP GP - BEXTR
# BMI2 # BMI2
VEX.F2.L0.0f3af0 RMI GP GP IMM8 - RORX IMM_8 VEX.F2.L0.0f3af0 RMI GP GP IMM8 - RORX
VEX.NP.L0.0f38f5 RMV GP GP GP - BZHI VEX.NP.L0.0f38f5 RMV GP GP GP - BZHI
VEX.F2.L0.0f38f5 RVM GP GP GP - PDEP VEX.F2.L0.0f38f5 RVM GP GP GP - PDEP
VEX.F3.L0.0f38f5 RVM GP GP GP - PEXT VEX.F3.L0.0f38f5 RVM GP GP GP - PEXT
@@ -1436,8 +1436,8 @@ F3.0fae//e0+ O GP - - - PTWRITE
# GFNI # GFNI
66.0f38cf RM XMM XMM - - GF2P8MULB 66.0f38cf RM XMM XMM - - GF2P8MULB
66.0f3ace RMI XMM XMM IMM8 - GF2P8AFFINEQB IMM_8 66.0f3ace RMI XMM XMM IMM8 - GF2P8AFFINEQB
66.0f3acf RMI XMM XMM IMM8 - GF2P8AFFINEINVQB IMM_8 66.0f3acf RMI XMM XMM IMM8 - GF2P8AFFINEINVQB
# ENQCMD # ENQCMD
F2.0f38f8 RM GP MEMZ - - ENQCMD F2.0f38f8 RM GP MEMZ - - ENQCMD
@@ -1474,7 +1474,7 @@ NP.0f38ca RM XMM XMM - - SHA1MSG2
NP.0f38cb RMA XMM XMM XMM - SHA256RNDS2 NP.0f38cb RMA XMM XMM XMM - SHA256RNDS2
NP.0f38cc RM XMM XMM - - SHA256MSG1 NP.0f38cc RM XMM XMM - - SHA256MSG1
NP.0f38cd RM XMM XMM - - SHA256MSG2 NP.0f38cd RM XMM XMM - - SHA256MSG2
NP.0f3acc RMI XMM XMM IMM8 - SHA1RNDS4 IMM_8 NP.0f3acc RMI XMM XMM IMM8 - SHA1RNDS4
NP.0f1a RM BND MEMZ - - BNDLDX MUSTMEM NP.0f1a RM BND MEMZ - - BNDLDX MUSTMEM
66.0f1a RM BND BND - - BNDMOV DEF64 66.0f1a RM BND BND - - BNDMOV DEF64

View File

@@ -170,11 +170,16 @@ class InstrDesc(NamedTuple):
if "DEF64" in self.flags: flags.sized64 = 1 if "DEF64" in self.flags: flags.sized64 = 1
if "SIZE_8" in self.flags: flags.size8 = 1 if "SIZE_8" in self.flags: flags.size8 = 1
if "INSTR_WIDTH" in self.flags: flags.instr_width = 1 if "INSTR_WIDTH" in self.flags: flags.instr_width = 1
if "IMM_8" in self.flags: flags.imm_control = {4: 5, 6: 7}[flags.imm_control]
if "LOCK" in self.flags: flags.lock = 1 if "LOCK" in self.flags: flags.lock = 1
if "VSIB" in self.flags: flags.vsib = 1 if "VSIB" in self.flags: flags.vsib = 1
if "MUSTMEM" in self.flags: setattr(flags, "op%d_regty"%(flags.modrm_idx^3), 0xf) if "MUSTMEM" in self.flags: setattr(flags, "op%d_regty"%(flags.modrm_idx^3), 0xf)
if flags.imm_control >= 4:
imm_op = next(op for op in self.operands if op.kind == OpKind.K_IMM)
if ("IMM_8" in self.flags or imm_op.size == 1 or
(imm_op.size == OpKind.SZ_OP and flags.size8)):
flags.imm_control |= 1
enc = flags._encode(6) enc = flags._encode(6)
enc = tuple(int.from_bytes(enc[i:i+2], "little") for i in range(0, 6, 2)) enc = tuple(int.from_bytes(enc[i:i+2], "little") for i in range(0, 6, 2))
# First 2 bytes are the mnemonic, last 6 bytes are the encoding. # First 2 bytes are the mnemonic, last 6 bytes are the encoding.

View File

@@ -130,6 +130,18 @@ main(int argc, char** argv)
// [reg+s*reg+disp32] // [reg+s*reg+disp32]
TEST64("\x42\x01\x84\x25\x01\x00\x00\x00", "[ADD mem4:r5+1*r12+0x1 reg4:r0]"); TEST64("\x42\x01\x84\x25\x01\x00\x00\x00", "[ADD mem4:r5+1*r12+0x1 reg4:r0]");
TEST("\x04\x01", "[ADD reg1:r0 imm1:0x1]");
TEST("\x66\x68\xff\xad", "[PUSH imm2:0xadff]");
TEST32("\x68\xff\xad\x90\xbc", "[PUSH imm4:0xbc90adff]");
TEST64("\x68\xff\xad\x90\xbc", "[PUSH imm8:0xffffffffbc90adff]");
TEST("\x66\x6a\xff", "[PUSH imm2:0xffff]");
TEST32("\x6a\xff", "[PUSH imm4:0xffffffff]");
TEST64("\x6a\xff", "[PUSH imm8:0xffffffffffffffff]");
TEST("\xb0\xf0", "[MOVABS reg1:r0 imm1:0xf0]");
TEST("\xb8\xf0\xf0\xab\xff", "[MOVABS reg4:r0 imm4:0xffabf0f0]");
TEST64("\x48\xb8\xf0\xf0\xab\xff\x00\x12\x12\xcd", "[MOVABS reg8:r0 imm8:0xcd121200ffabf0f0]");
TEST64("\xcd\x80", "[INT imm1:0x80]");
TEST("\x66\xc8\x00\x00\x00", "[ENTER_2 imm4:0x0]"); TEST("\x66\xc8\x00\x00\x00", "[ENTER_2 imm4:0x0]");
TEST("\x66\xc8\x00\x0f\x00", "[ENTER_2 imm4:0xf00]"); TEST("\x66\xc8\x00\x0f\x00", "[ENTER_2 imm4:0xf00]");
TEST("\x66\xc8\x00\x00\x01", "[ENTER_2 imm4:0x10000]"); TEST("\x66\xc8\x00\x00\x01", "[ENTER_2 imm4:0x10000]");