diff --git a/instrs.txt b/instrs.txt index 5ea0714..c923770 100644 --- a/instrs.txt +++ b/instrs.txt @@ -1,1611 +1,1627 @@ -00 MR GP GP - - ADD SIZE_8 LOCK -01 MR GP GP - - ADD LOCK -02 RM GP GP - - ADD SIZE_8 -03 RM GP GP - - ADD -04 IA GP IMM - - ADD SIZE_8 -05 IA GP IMM - - ADD -06 S SEG - - - PUSH ONLY32 -07 S SEG - - - POP ONLY32 -08 MR GP GP - - OR SIZE_8 LOCK -09 MR GP GP - - OR LOCK -0a RM GP GP - - OR SIZE_8 -0b RM GP GP - - OR -0c IA GP IMM - - OR SIZE_8 -0d IA GP IMM - - OR -0e S SEG - - - PUSH ONLY32 +# Opcode ENC OP1 OP2 OP3 OP4 MNEM COND SZ? MISC FLAGS +# LOCK SZ8 = op size 1 +# I64 D64 = default 64 +# O64 F64 = force 64 (Intel) +# VSIB U66 = respect 66 prefix +# I66 = ignore 66 prefix +# ------------------- ---- --- --- --- --- ------- ---- --- ---------- +00 MR Eb Gb - - ADD LOCK SZ8 EFL=m--mmmmm +01 MR Ev Gv - - ADD LOCK EFL=m--mmmmm +02 RM Gb Eb - - ADD SZ8 EFL=m--mmmmm +03 RM Gv Ev - - ADD EFL=m--mmmmm +04 IA Rb Ib - - ADD SZ8 EFL=m--mmmmm +05 IA Rv Iz - - ADD EFL=m--mmmmm +06 S Sv - - - PUSH I64 +07 S Sv - - - POP I64 +08 MR Eb Gb - - OR LOCK SZ8 EFL=0--mmum0 +09 MR Ev Gv - - OR LOCK EFL=0--mmum0 +0a RM Gb Eb - - OR SZ8 EFL=0--mmum0 +0b RM Gv Ev - - OR EFL=0--mmum0 +0c IA Rb Ib - - OR SZ8 EFL=0--mmum0 +0d IA Rv Iz - - OR EFL=0--mmum0 +0e S Sv - - - PUSH I64 #0f escape opcode -10 MR GP GP - - ADC SIZE_8 LOCK -11 MR GP GP - - ADC LOCK -12 RM GP GP - - ADC SIZE_8 -13 RM GP GP - - ADC -14 IA GP IMM - - ADC SIZE_8 -15 IA GP IMM - - ADC -16 S SEG - - - PUSH ONLY32 -17 S SEG - - - POP ONLY32 -18 MR GP GP - - SBB SIZE_8 LOCK -19 MR GP GP - - SBB LOCK -1a RM GP GP - - SBB SIZE_8 -1b RM GP GP - - SBB -1c IA GP IMM - - SBB SIZE_8 -1d IA GP IMM - - SBB -1e S SEG - - - PUSH ONLY32 -1f S SEG - - - POP ONLY32 -20 MR GP GP - - AND SIZE_8 LOCK -21 MR GP GP - - AND LOCK -22 RM GP GP - - AND SIZE_8 -23 RM GP GP - - AND -24 IA GP IMM - - AND SIZE_8 -25 IA GP IMM - - AND +10 MR Eb Gb - - ADC LOCK SZ8 EFL=m--mmmmM +11 MR Ev Gv - - ADC LOCK EFL=m--mmmmM +12 RM Gb Eb - - ADC SZ8 EFL=m--mmmmM +13 RM Gv Ev - - ADC EFL=m--mmmmM +14 IA Rb Ib - - ADC SZ8 EFL=m--mmmmM +15 IA Rv Iz - - ADC EFL=m--mmmmM +16 S Sv - - - PUSH I64 +17 S Sv - - - POP I64 +18 MR Eb Gb - - SBB LOCK SZ8 EFL=m--mmmmM +19 MR Ev Gv - - SBB LOCK EFL=m--mmmmM +1a RM Gb Eb - - SBB SZ8 EFL=m--mmmmM +1b RM Gv Ev - - SBB EFL=m--mmmmM +1c IA Rb Ib - - SBB SZ8 EFL=m--mmmmM +1d IA Rv Iz - - SBB EFL=m--mmmmM +1e S Sv - - - PUSH I64 +1f S Sv - - - POP I64 +20 MR Eb Gb - - AND LOCK SZ8 EFL=0--mmum0 +21 MR Ev Gv - - AND LOCK EFL=0--mmum0 +22 RM Gb Eb - - AND SZ8 EFL=0--mmum0 +23 RM Gv Ev - - AND EFL=0--mmum0 +24 IA Rb Ib - - AND SZ8 EFL=0--mmum0 +25 IA Rv Iz - - AND EFL=0--mmum0 #26 SEG=ES prefix -27 NP - - - - DAA ONLY32 -28 MR GP GP - - SUB SIZE_8 LOCK -29 MR GP GP - - SUB LOCK -2a RM GP GP - - SUB SIZE_8 -2b RM GP GP - - SUB -2c IA GP IMM - - SUB SIZE_8 -2d IA GP IMM - - SUB +27 NP - - - - DAA I64 EFL=u--mmMmM +28 MR Eb Gb - - SUB LOCK SZ8 EFL=m--mmmmm +29 MR Ev Gv - - SUB LOCK EFL=m--mmmmm +2a RM Gb Eb - - SUB SZ8 EFL=m--mmmmm +2b RM Gv Ev - - SUB EFL=m--mmmmm +2c IA Rb Ib - - SUB SZ8 EFL=m--mmmmm +2d IA Rv Iz - - SUB EFL=m--mmmmm #2e SEG=CS prefix -2f NP - - - - DAS ONLY32 -30 MR GP GP - - XOR SIZE_8 LOCK -31 MR GP GP - - XOR LOCK -32 RM GP GP - - XOR SIZE_8 -33 RM GP GP - - XOR -34 IA GP IMM - - XOR SIZE_8 -35 IA GP IMM - - XOR +2f NP - - - - DAS I64 EFL=u--mmMmM +30 MR Eb Gb - - XOR LOCK SZ8 EFL=0--mmum0 +31 MR Ev Gv - - XOR LOCK EFL=0--mmum0 +32 RM Gb Eb - - XOR SZ8 EFL=0--mmum0 +33 RM Gv Ev - - XOR EFL=0--mmum0 +34 IA Rb Ib - - XOR SZ8 EFL=0--mmum0 +35 IA Rv Iz - - XOR EFL=0--mmum0 #36 SEG=SS prefix -37 NP - - - - AAA ONLY32 -38 MR GP GP - - CMP SIZE_8 -39 MR GP GP - - CMP -3a RM GP GP - - CMP SIZE_8 -3b RM GP GP - - CMP -3c IA GP IMM - - CMP SIZE_8 -3d IA GP IMM - - CMP +37 NP - - - - AAA I64 EFL=u--uuMum +38 MR Eb Gb - - CMP SZ8 EFL=m--mmmmm +39 MR Ev Gv - - CMP EFL=m--mmmmm +3a RM Gb Eb - - CMP SZ8 EFL=m--mmmmm +3b RM Gv Ev - - CMP EFL=m--mmmmm +3c IA Rb Ib - - CMP SZ8 EFL=m--mmmmm +3d IA Rv Iz - - CMP EFL=m--mmmmm #3e SEG=DS prefix -3f NP - - - - AAS ONLY32 -40+ O GP - - - INC ONLY32 -48+ O GP - - - DEC ONLY32 -50+ O GP - - - PUSH DEF64 -58+ O GP - - - POP DEF64 -60 NP - - - - PUSHA ONLY32 INSTR_WIDTH -61 NP - - - - POPA ONLY32 INSTR_WIDTH -62/m RM GP MEM - - BOUND ONLY32 -63 MR GP16 GP16 - - ARPL ONLY32 -63 RM GP GP32 - - MOVSX ONLY64 ENC_SEPSZ +3f NP - - - - AAS I64 EFL=u--uuMum +40+ O Rv - - - INC I64 EFL=m--mmmm- +48+ O Rv - - - DEC I64 EFL=m--mmmm- +50+ O Rv - - - PUSH D64 +58+ O Rv - - - POP D64 +60 NP - - - - PUSHA+w I64 +61 NP - - - - POPA+w I64 +62/m RM Gv Ma - - BOUND I64 +63 MR Ew Gw - - ARPL I64 EFL=----m--- +63 RM Gv Ed - - MOVSX O64 F=LM ENC_SEPSZ #64 SEG=FS prefix #65 SEG=GS prefix #66 operand size prefix #67 address size prefix -68 I IMM - - - PUSH DEF64 -69 RMI GP GP IMM - IMUL -6a I IMM - - - PUSH DEF64 IMM_8 -6b RMI GP GP IMM - IMUL IMM_8 -6c NP - - - - INS SIZE_8 INSTR_WIDTH ENC_REP -6d NP - - - - INS INSTR_WIDTH ENC_REP -6e NP - - - - OUTS SIZE_8 INSTR_WIDTH ENC_REP -6f NP - - - - OUTS INSTR_WIDTH ENC_REP -70 D IMM - - - JO FORCE64 IMM_8 -71 D IMM - - - JNO FORCE64 IMM_8 -72 D IMM - - - JC FORCE64 IMM_8 -73 D IMM - - - JNC FORCE64 IMM_8 -74 D IMM - - - JZ FORCE64 IMM_8 -75 D IMM - - - JNZ FORCE64 IMM_8 -76 D IMM - - - JBE FORCE64 IMM_8 -77 D IMM - - - JA FORCE64 IMM_8 -78 D IMM - - - JS FORCE64 IMM_8 -79 D IMM - - - JNS FORCE64 IMM_8 -7a D IMM - - - JP FORCE64 IMM_8 -7b D IMM - - - JNP FORCE64 IMM_8 -7c D IMM - - - JL FORCE64 IMM_8 -7d D IMM - - - JGE FORCE64 IMM_8 -7e D IMM - - - JLE FORCE64 IMM_8 -7f D IMM - - - JG FORCE64 IMM_8 -80/0 MI GP IMM - - ADD SIZE_8 LOCK -80/1 MI GP IMM - - OR SIZE_8 LOCK -80/2 MI GP IMM - - ADC SIZE_8 LOCK -80/3 MI GP IMM - - SBB SIZE_8 LOCK -80/4 MI GP IMM - - AND SIZE_8 LOCK -80/5 MI GP IMM - - SUB SIZE_8 LOCK -80/6 MI GP IMM - - XOR SIZE_8 LOCK -80/7 MI GP IMM - - CMP SIZE_8 -81/0 MI GP IMM - - ADD LOCK -81/1 MI GP IMM - - OR LOCK -81/2 MI GP IMM - - ADC LOCK -81/3 MI GP IMM - - SBB LOCK -81/4 MI GP IMM - - AND LOCK -81/5 MI GP IMM - - SUB LOCK -81/6 MI GP IMM - - XOR LOCK -81/7 MI GP IMM - - CMP -82/0 MI GP IMM - - ADD ONLY32 SIZE_8 LOCK -82/1 MI GP IMM - - OR ONLY32 SIZE_8 LOCK -82/2 MI GP IMM - - ADC ONLY32 SIZE_8 LOCK -82/3 MI GP IMM - - SBB ONLY32 SIZE_8 LOCK -82/4 MI GP IMM - - AND ONLY32 SIZE_8 LOCK -82/5 MI GP IMM - - SUB ONLY32 SIZE_8 LOCK -82/6 MI GP IMM - - XOR ONLY32 SIZE_8 LOCK -82/7 MI GP IMM - - CMP ONLY32 SIZE_8 -83/0 MI GP IMM - - ADD IMM_8 LOCK -83/1 MI GP IMM - - OR IMM_8 LOCK -83/2 MI GP IMM - - ADC IMM_8 LOCK -83/3 MI GP IMM - - SBB IMM_8 LOCK -83/4 MI GP IMM - - AND IMM_8 LOCK -83/5 MI GP IMM - - SUB IMM_8 LOCK -83/6 MI GP IMM - - XOR IMM_8 LOCK -83/7 MI GP IMM - - CMP IMM_8 -84 MR GP GP - - TEST SIZE_8 -85 MR GP GP - - TEST -86 MR GP GP - - XCHG SIZE_8 LOCK -87 MR GP GP - - XCHG LOCK -88 MR GP GP - - MOV SIZE_8 -89 MR GP GP - - MOV -8a RM GP GP - - MOV SIZE_8 -8b RM GP GP - - MOV -8c/0 MR GP16 SEG16 - - MOV_S2G -8c/1 MR GP16 SEG16 - - MOV_S2G -8c/2 MR GP16 SEG16 - - MOV_S2G -8c/3 MR GP16 SEG16 - - MOV_S2G -8c/4 MR GP16 SEG16 - - MOV_S2G -8c/5 MR GP16 SEG16 - - MOV_S2G -8d/m RM GP MEMZ - - LEA -8e/0 RM SEG16 GP16 - - MOV_G2S -8e/2 RM SEG16 GP16 - - MOV_G2S -8e/3 RM SEG16 GP16 - - MOV_G2S -8e/4 RM SEG16 GP16 - - MOV_G2S -8e/5 RM SEG16 GP16 - - MOV_G2S -8f/0 M GP - - - POP DEF64 +68 I Iz - - - PUSH D64 +69 RMI Gv Ev Iz - IMUL EFL=m--uuuum +6a I Ibs - - - PUSH D64 +6b RMI Gv Ev Ibs - IMUL EFL=m--uuuum +6c NP - - - - INS+w SZ8 ENC_REP EFL=-t------ +6d NP - - - - INS+w ENC_REP EFL=-t------ +6e NP - - - - OUTS+w SZ8 ENC_REP EFL=-t------ +6f NP - - - - OUTS+w ENC_REP EFL=-t------ +70 D Jbs - - - JO F64 EFL=t------- +71 D Jbs - - - JNO F64 EFL=t------- +72 D Jbs - - - JC F64 EFL=-------t +73 D Jbs - - - JNC F64 EFL=-------t +74 D Jbs - - - JZ F64 EFL=----t--- +75 D Jbs - - - JNZ F64 EFL=----t--- +76 D Jbs - - - JBE F64 EFL=----t--t +77 D Jbs - - - JA F64 EFL=----t--t +78 D Jbs - - - JS F64 EFL=---t---- +79 D Jbs - - - JNS F64 EFL=---t---- +7a D Jbs - - - JP F64 EFL=------t- +7b D Jbs - - - JNP F64 EFL=------t- +7c D Jbs - - - JL F64 EFL=t--t---- +7d D Jbs - - - JGE F64 EFL=t--t---- +7e D Jbs - - - JLE F64 EFL=t--tt--- +7f D Jbs - - - JG F64 EFL=t--tt--- +80/0 MI Eb Ib - - ADD LOCK SZ8 EFL=m--mmmmm +80/1 MI Eb Ib - - OR LOCK SZ8 EFL=0--mmum0 +80/2 MI Eb Ib - - ADC LOCK SZ8 EFL=m--mmmmM +80/3 MI Eb Ib - - SBB LOCK SZ8 EFL=m--mmmmM +80/4 MI Eb Ib - - AND LOCK SZ8 EFL=0--mmum0 +80/5 MI Eb Ib - - SUB LOCK SZ8 EFL=m--mmmmm +80/6 MI Eb Ib - - XOR LOCK SZ8 EFL=0--mmum0 +80/7 MI Eb Ib - - CMP SZ8 EFL=m--mmmmm +81/0 MI Ev Iz - - ADD LOCK EFL=m--mmmmm +81/1 MI Ev Iz - - OR LOCK EFL=0--mmum0 +81/2 MI Ev Iz - - ADC LOCK EFL=m--mmmmM +81/3 MI Ev Iz - - SBB LOCK EFL=m--mmmmM +81/4 MI Ev Iz - - AND LOCK EFL=0--mmum0 +81/5 MI Ev Iz - - SUB LOCK EFL=m--mmmmm +81/6 MI Ev Iz - - XOR LOCK EFL=0--mmum0 +81/7 MI Ev Iz - - CMP EFL=m--mmmmm +82/0 MI Eb Ib - - ADD LOCK I64 SZ8 EFL=m--mmmmm +82/1 MI Eb Ib - - OR LOCK I64 SZ8 EFL=0--mmum0 +82/2 MI Eb Ib - - ADC LOCK I64 SZ8 EFL=m--mmmmM +82/3 MI Eb Ib - - SBB LOCK I64 SZ8 EFL=m--mmmmM +82/4 MI Eb Ib - - AND LOCK I64 SZ8 EFL=0--mmum0 +82/5 MI Eb Ib - - SUB LOCK I64 SZ8 EFL=m--mmmmm +82/6 MI Eb Ib - - XOR LOCK I64 SZ8 EFL=0--mmum0 +82/7 MI Eb Ib - - CMP I64 SZ8 EFL=m--mmmmm +83/0 MI Ev Ibs - - ADD LOCK EFL=m--mmmmm +83/1 MI Ev Ibs - - OR LOCK EFL=0--mmum0 +83/2 MI Ev Ibs - - ADC LOCK EFL=m--mmmmM +83/3 MI Ev Ibs - - SBB LOCK EFL=m--mmmmM +83/4 MI Ev Ibs - - AND LOCK EFL=0--mmum0 +83/5 MI Ev Ibs - - SUB LOCK EFL=m--mmmmm +83/6 MI Ev Ibs - - XOR LOCK EFL=0--mmum0 +83/7 MI Ev Ibs - - CMP EFL=m--mmmmm +84 MR Eb Gb - - TEST SZ8 EFL=0--mmum0 +85 MR Ev Gv - - TEST EFL=0--mmum0 +86 MR Eb Gb - - XCHG LOCK SZ8 +87 MR Ev Gv - - XCHG LOCK +88 MR Eb Gb - - MOV SZ8 +89 MR Ev Gv - - MOV +8a RM Gb Eb - - MOV SZ8 +8b RM Gv Ev - - MOV +# TODO: 8c is actually Ev,Sw; exact semantics are TBD +8c/0 MR Ew Sw - - MOV_S2G +8c/1 MR Ew Sw - - MOV_S2G +8c/2 MR Ew Sw - - MOV_S2G +8c/3 MR Ew Sw - - MOV_S2G +8c/4 MR Ew Sw - - MOV_S2G +8c/5 MR Ew Sw - - MOV_S2G +8d/m RM Gv M - - LEA +8e/0 RM Sw Ew - - MOV_G2S +8e/2 RM Sw Ew - - MOV_G2S +8e/3 RM Sw Ew - - MOV_G2S +8e/4 RM Sw Ew - - MOV_G2S +8e/5 RM Sw Ew - - MOV_G2S +8f/0 M Ev - - - POP D64 # Against frequent belief, only, XCHG (r/e)AX, (r)AX with 90 is NOP. # As a lacking REX.B cannot be specified here, this is hardcoded. -90+ OA GP GP - - XCHG_NOP -98 NP - - - - C_EX INSTR_WIDTH -99 NP - - - - C_SEP INSTR_WIDTH +90+ OA Rv Rv - - XCHG_NOP +98 NP - - - - C_EX+w +99 NP - - - - C_SEP+w # Far jmp/call immediate size adjusted in code -9a I IMM - - - CALLF ONLY32 -9b NP - - - - FWAIT -9c NP - - - - PUSHF DEF64 INSTR_WIDTH -9d NP - - - - POPF DEF64 INSTR_WIDTH -9e NP - - - - SAHF -9f NP - - - - LAHF -a0 FD GP MEM - - MOV SIZE_8 -a1 FD GP MEM - - MOV -a2 TD MEM GP - - MOV SIZE_8 -a3 TD MEM GP - - MOV -a4 NP - - - - MOVS SIZE_8 INSTR_WIDTH ENC_REP -a5 NP - - - - MOVS INSTR_WIDTH ENC_REP -a6 NP - - - - CMPS SIZE_8 INSTR_WIDTH ENC_REPCC -a7 NP - - - - CMPS INSTR_WIDTH ENC_REPCC -a8 IA GP IMM - - TEST SIZE_8 -a9 IA GP IMM - - TEST -aa NP - - - - STOS SIZE_8 INSTR_WIDTH ENC_REP -ab NP - - - - STOS INSTR_WIDTH ENC_REP -ac NP - - - - LODS SIZE_8 INSTR_WIDTH ENC_REP -ad NP - - - - LODS INSTR_WIDTH ENC_REP -ae NP - - - - SCAS SIZE_8 INSTR_WIDTH ENC_REPCC -af NP - - - - SCAS INSTR_WIDTH ENC_REPCC -b0+ OI GP IMM8 - - MOVABS SIZE_8 -b8+ OI GP IMM - - MOVABS -c0/0 MI GP IMM8 - - ROL SIZE_8 -c0/1 MI GP IMM8 - - ROR SIZE_8 -c0/2 MI GP IMM8 - - RCL SIZE_8 -c0/3 MI GP IMM8 - - RCR SIZE_8 -c0/4 MI GP IMM8 - - SHL SIZE_8 -c0/5 MI GP IMM8 - - SHR SIZE_8 -c0/6 MI GP IMM8 - - SHL SIZE_8 -c0/7 MI GP IMM8 - - SAR SIZE_8 -c1/0 MI GP IMM8 - - ROL -c1/1 MI GP IMM8 - - ROR -c1/2 MI GP IMM8 - - RCL -c1/3 MI GP IMM8 - - RCR -c1/4 MI GP IMM8 - - SHL -c1/5 MI GP IMM8 - - SHR -c1/6 MI GP IMM8 - - SHL -c1/7 MI GP IMM8 - - SAR +9a I Ap - - - CALLF I64 +9b NP - - - - FWAIT +9c NP - - - - PUSHF+w D64 EFL=tttttttt +9d NP - - - - POPF+w D64 EFL=mmmmmmmm +9e NP - - - - SAHF EFL=---mmmmm +9f NP - - - - LAHF EFL=---ttttt +a0 FD Rb Ob - - MOV SZ8 +a1 FD Rv Ov - - MOV +a2 TD Ob Rb - - MOV SZ8 +a3 TD Ov Rv - - MOV +a4 NP - - - - MOVS+w SZ8 ENC_REP EFL=-t------ +a5 NP - - - - MOVS+w ENC_REP EFL=-t------ +a6 NP - - - - CMPS+w SZ8 ENC_REPCC EFL=mt-mmmmm +a7 NP - - - - CMPS+w ENC_REPCC EFL=mt-mmmmm +a8 IA Rb Ib - - TEST SZ8 EFL=0--mmum0 +a9 IA Rv Iz - - TEST EFL=0--mmum0 +aa NP - - - - STOS+w SZ8 ENC_REP EFL=-t------ +ab NP - - - - STOS+w ENC_REP EFL=-t------ +ac NP - - - - LODS+w SZ8 ENC_REP EFL=-t------ +ad NP - - - - LODS+w ENC_REP EFL=-t------ +ae NP - - - - SCAS+w SZ8 ENC_REPCC EFL=mt-mmmmm +af NP - - - - SCAS+w ENC_REPCC EFL=mt-mmmmm +b0+ OI Rb Ib - - MOVABS SZ8 +b8+ OI Rv Iv - - MOVABS +c0/0 MI Eb Ib - - ROL SZ8 EFL=m------m +c0/1 MI Eb Ib - - ROR SZ8 EFL=m------m +c0/2 MI Eb Ib - - RCL SZ8 EFL=m------M +c0/3 MI Eb Ib - - RCR SZ8 EFL=m------M +c0/4 MI Eb Ib - - SHL SZ8 EFL=m--mmumm +c0/5 MI Eb Ib - - SHR SZ8 EFL=m--mmumm +c0/6 MI Eb Ib - - SHL SZ8 EFL=m--mmumm +c0/7 MI Eb Ib - - SAR SZ8 EFL=m--mmumm +c1/0 MI Ev Ib - - ROL EFL=m------m +c1/1 MI Ev Ib - - ROR EFL=m------m +c1/2 MI Ev Ib - - RCL EFL=m------M +c1/3 MI Ev Ib - - RCR EFL=m------M +c1/4 MI Ev Ib - - SHL EFL=m--mmumm +c1/5 MI Ev Ib - - SHR EFL=m--mmumm +c1/6 MI Ev Ib - - SHL EFL=m--mmumm +c1/7 MI Ev Ib - - SAR EFL=m--mmumm # RET immediate size handled in code -c2 I IMM16 - - - RET FORCE64 INSTR_WIDTH -c3 NP - - - - RET FORCE64 INSTR_WIDTH -c4/m RM GP MEM - - LES ONLY32 -c5/m RM GP MEM - - LDS ONLY32 -c6/0 MI GP IMM - - MOV SIZE_8 -c6f8 I IMM8 - - - XABORT -c7/0 MI GP IMM - - MOV -c7f8 D IMM32 - - - XBEGIN ONLY32 -c7f8 D IMM64 - - - XBEGIN ONLY64 -# ENTER immediate handled in code -c8 I IMM32 - - - ENTER DEF64 INSTR_WIDTH -c9 NP - - - - LEAVE DEF64 INSTR_WIDTH +c2 I Iw - - - RET+w F64 +c3 NP - - - - RET+w F64 +c4/m RM Gz Mp - - LES I64 +c5/m RM Gz Mp - - LDS I64 +c6/0 MI Eb Ib - - MOV SZ8 +c6f8 I Ib - - - XABORT F=HLERTM +c7/0 MI Ev Iz - - MOV +c7f8 D Jzd - - - XBEGIN I64 F=HLERTM +c7f8 D Jzq - - - XBEGIN O64 F=HLERTM +# ENTER immediate handled in code, actually it is Iw,Ib +c8 I Id - - - ENTER+w D64 +c9 NP - - - - LEAVE+w D64 # RETF immediate size handled in code -ca I IMM16 - - - RETF INSTR_WIDTH -cb NP - - - - RETF INSTR_WIDTH -cc NP - - - - INT3 -cd I IMM8 - - - INT -ce NP - - - - INTO ONLY32 -cf NP - - - - IRET INSTR_WIDTH -d0/0 M1 GP IMM8 - - ROL SIZE_8 -d0/1 M1 GP IMM8 - - ROR SIZE_8 -d0/2 M1 GP IMM8 - - RCL SIZE_8 -d0/3 M1 GP IMM8 - - RCR SIZE_8 -d0/4 M1 GP IMM8 - - SHL SIZE_8 -d0/5 M1 GP IMM8 - - SHR SIZE_8 -d0/6 M1 GP IMM8 - - SHL SIZE_8 -d0/7 M1 GP IMM8 - - SAR SIZE_8 -d1/0 M1 GP IMM8 - - ROL -d1/1 M1 GP IMM8 - - ROR -d1/2 M1 GP IMM8 - - RCL -d1/3 M1 GP IMM8 - - RCR -d1/4 M1 GP IMM8 - - SHL -d1/5 M1 GP IMM8 - - SHR -d1/6 M1 GP IMM8 - - SHL -d1/7 M1 GP IMM8 - - SAR -d2/0 MC GP GP8 - - ROL SIZE_8 -d2/1 MC GP GP8 - - ROR SIZE_8 -d2/2 MC GP GP8 - - RCL SIZE_8 -d2/3 MC GP GP8 - - RCR SIZE_8 -d2/4 MC GP GP8 - - SHL SIZE_8 -d2/5 MC GP GP8 - - SHR SIZE_8 -d2/6 MC GP GP8 - - SHL SIZE_8 -d2/7 MC GP GP8 - - SAR SIZE_8 -d3/0 MC GP GP8 - - ROL -d3/1 MC GP GP8 - - ROR -d3/2 MC GP GP8 - - RCL -d3/3 MC GP GP8 - - RCR -d3/4 MC GP GP8 - - SHL -d3/5 MC GP GP8 - - SHR -d3/6 MC GP GP8 - - SHL -d3/7 MC GP GP8 - - SAR -d4 I IMM - - - AAM ONLY32 SIZE_8 -d5 I IMM - - - AAD ONLY32 SIZE_8 -d6 NP - - - - SALC ONLY32 UNDOC -d7 NP - - - - XLATB +ca I Iw - - - RETF+w +cb NP - - - - RETF+w +cc NP - - - - INT3 EFL=--M----- +cd I Ib - - - INT EFL=--M----- +ce NP - - - - INTO I64 EFL=-tM----- +cf NP - - - - IRET+w EFL=mmmmmmmm +d0/0 M1 Eb Ib - - ROL SZ8 EFL=m------m +d0/1 M1 Eb Ib - - ROR SZ8 EFL=m------m +d0/2 M1 Eb Ib - - RCL SZ8 EFL=m------M +d0/3 M1 Eb Ib - - RCR SZ8 EFL=m------M +d0/4 M1 Eb Ib - - SHL SZ8 EFL=m--mmumm +d0/5 M1 Eb Ib - - SHR SZ8 EFL=m--mmumm +d0/6 M1 Eb Ib - - SHL SZ8 EFL=m--mmumm +d0/7 M1 Eb Ib - - SAR SZ8 EFL=m--mmumm +d1/0 M1 Ev Ib - - ROL EFL=m------m +d1/1 M1 Ev Ib - - ROR EFL=m------m +d1/2 M1 Ev Ib - - RCL EFL=m------M +d1/3 M1 Ev Ib - - RCR EFL=m------M +d1/4 M1 Ev Ib - - SHL EFL=m--mmumm +d1/5 M1 Ev Ib - - SHR EFL=m--mmumm +d1/6 M1 Ev Ib - - SHL EFL=m--mmumm +d1/7 M1 Ev Ib - - SAR EFL=m--mmumm +d2/0 MC Eb Rb - - ROL SZ8 EFL=m------m +d2/1 MC Eb Rb - - ROR SZ8 EFL=m------m +d2/2 MC Eb Rb - - RCL SZ8 EFL=m------M +d2/3 MC Eb Rb - - RCR SZ8 EFL=m------M +d2/4 MC Eb Rb - - SHL SZ8 EFL=m--mmumm +d2/5 MC Eb Rb - - SHR SZ8 EFL=m--mmumm +d2/6 MC Eb Rb - - SHL SZ8 EFL=m--mmumm +d2/7 MC Eb Rb - - SAR SZ8 EFL=m--mmumm +d3/0 MC Ev Rb - - ROL EFL=m------m +d3/1 MC Ev Rb - - ROR EFL=m------m +d3/2 MC Ev Rb - - RCL EFL=m------M +d3/3 MC Ev Rb - - RCR EFL=m------M +d3/4 MC Ev Rb - - SHL EFL=m--mmumm +d3/5 MC Ev Rb - - SHR EFL=m--mmumm +d3/6 MC Ev Rb - - SHL EFL=m--mmumm +d3/7 MC Ev Rb - - SAR EFL=m--mmumm +d4 I Ib - - - AAM I64 SZ8 EFL=u--mmumu +d5 I Ib - - - AAD I64 SZ8 EFL=u--mmumu +d6 NP - - - - SALC I64 UNDOC +d7 NP - - - - XLATB #d8-df FPU Escape -e0 D IMM - - - LOOPNZ FORCE64 IMM_8 -e1 D IMM - - - LOOPZ FORCE64 IMM_8 -e2 D IMM - - - LOOP FORCE64 IMM_8 -e3 D IMM - - - JCXZ FORCE64 IMM_8 -e4 IA GP IMM8 - - IN SIZE_8 -e5 IA GP IMM8 - - IN -e6 IA GP IMM8 - - OUT SIZE_8 -e7 IA GP IMM8 - - OUT -e8 D IMM - - - CALL FORCE64 -e9 D IMM - - - JMP FORCE64 +e0 D Jbs - - - LOOPNZ F64 EFL=----t--- +e1 D Jbs - - - LOOPZ F64 EFL=----t--- +e2 D Jbs - - - LOOP F64 +e3 D Jbs - - - JCXZ F64 +e4 IA Rb Ib - - IN SZ8 +e5 IA Rz Ib - - IN +e6 IA Rb Ib - - OUT SZ8 +e7 IA Rz Ib - - OUT +e8 D Jz - - - CALL F64 +e9 D Jz - - - JMP F64 # Far jmp/call immediate size adjusted in code -ea I IMM - - - JMPF ONLY32 -eb D IMM - - - JMP FORCE64 IMM_8 -ec NP - - - - IN SIZE_8 INSTR_WIDTH -ed NP - - - - IN INSTR_WIDTH -ee NP - - - - OUT SIZE_8 INSTR_WIDTH -ef NP - - - - OUT INSTR_WIDTH -#f0 LOCK prefix -f1 NP - - - - INT1 +ea I Ap - - - JMPF I64 +eb D Jbs - - - JMP F64 +ec NP - - - - IN+w SZ8 +ed NP - - - - IN+w +ee NP - - - - OUT+w SZ8 +ef NP - - - - OUT+w +#f0 prefix +f1 NP - - - - INT1 EFL=--M----- #f2 REPNZ prefix #f3 REP/REPZ prefix -f4 NP - - - - HLT -f5 NP - - - - CMC -f6/0 MI GP IMM - - TEST SIZE_8 -f6/1 MI GP IMM - - TEST SIZE_8 -f6/2 M GP - - - NOT SIZE_8 LOCK -f6/3 M GP - - - NEG SIZE_8 LOCK -f6/4 M GP - - - MUL SIZE_8 -f6/5 M GP - - - IMUL SIZE_8 -f6/6 M GP - - - DIV SIZE_8 -f6/7 M GP - - - IDIV SIZE_8 -f7/0 MI GP IMM - - TEST -f7/1 MI GP IMM - - TEST -f7/2 M GP - - - NOT LOCK -f7/3 M GP - - - NEG LOCK -f7/4 M GP - - - MUL -f7/5 M GP - - - IMUL -f7/6 M GP - - - DIV -f7/7 M GP - - - IDIV -f8 NP - - - - CLC -f9 NP - - - - STC -fa NP - - - - CLI -fb NP - - - - STI -fc NP - - - - CLD -fd NP - - - - STD -fe/0 M GP - - - INC SIZE_8 LOCK -fe/1 M GP - - - DEC SIZE_8 LOCK -ff/0 M GP - - - INC LOCK -ff/1 M GP - - - DEC LOCK -ff/2 M GP - - - CALL FORCE64 -ff/3m M MEM - - - CALLF -ff/4 M GP - - - JMP FORCE64 -ff/5m M MEM - - - JMPF -ff/6 M GP - - - PUSH DEF64 -0f00/0 M GP16 - - - SLDT -0f00/1 M GP16 - - - STR -0f00/2 M GP16 - - - LLDT -0f00/3 M GP16 - - - LTR -0f00/4 M GP16 - - - VERR -0f00/5 M GP16 - - - VERW -0f01/0m M MEMZ - - - SGDT -0f01/1m M MEMZ - - - SIDT -0f01/2m M MEMZ - - - LGDT -0f01/3m M MEMZ - - - LIDT -0f01/4m M GP16 - - - SMSW -0f01/4r M GP - - - SMSW -0f01/6 M GP16 - - - LMSW -0f01/7m M GP - - - INVLPG SIZE_8 -NP.0f01c0 NP - - - - ENCLV -NP.0f01c8 NP - - - - MONITOR -NP.0f01c9 NP - - - - MWAIT -NP.0f01ca NP - - - - CLAC -NP.0f01cb NP - - - - STAC -NP.0f01cf NP - - - - ENCLS -NP.0f01d0 NP - - - - XGETBV -NP.0f01d1 NP - - - - XSETBV -NP.0f01d5 NP - - - - XEND -NP.0f01d6 NP - - - - XTEST -NP.0f01d7 NP - - - - ENCLU -0f01f8 NP - - - - SWAPGS ONLY64 -0f01f9 NP - - - - RDTSCP -0f02 RM GP GP16 - - LAR -0f03 RM GP GP16 - - LSL -0f05 NP - - - - SYSCALL ONLY64 -0f06 NP - - - - CLTS -0f07 NP - - - - SYSRET ONLY64 -0f08 NP - - - - INVD -*0f09 NP - - - - WBINVD -0f0b NP - - - - UD2 -0f0d/0m M MEM8 - - - PREFETCH -0f0d/1m M MEM8 - - - PREFETCHW -0f0d/2m M MEM8 - - - PREFETCHWT1 +f4 NP - - - - HLT CPL0 +f5 NP - - - - CMC EFL=-------M +f6/0 MI Eb Ib - - TEST SZ8 EFL=0--mmum0 +f6/1 MI Eb Ib - - TEST SZ8 EFL=0--mmum0 +f6/2 M Eb - - - NOT LOCK SZ8 +f6/3 M Eb - - - NEG LOCK SZ8 EFL=m--mmmmm +f6/4 M Eb - - - MUL SZ8 EFL=m--uuuum +f6/5 M Eb - - - IMUL SZ8 EFL=m--uuuum +f6/6 M Eb - - - DIV SZ8 EFL=u--uuuuu +f6/7 M Eb - - - IDIV SZ8 EFL=u--uuuuu +f7/0 MI Ev Iz - - TEST EFL=0--mmum0 +f7/1 MI Ev Iz - - TEST EFL=0--mmum0 +f7/2 M Ev - - - NOT LOCK +f7/3 M Ev - - - NEG LOCK EFL=m--mmmmm +f7/4 M Ev - - - MUL EFL=m--uuuum +f7/5 M Ev - - - IMUL EFL=m--uuuum +f7/6 M Ev - - - DIV EFL=u--uuuuu +f7/7 M Ev - - - IDIV EFL=u--uuuuu +f8 NP - - - - CLC EFL=-------0 +f9 NP - - - - STC EFL=-------1 +fa NP - - - - CLI EFL=--0----- +fb NP - - - - STI EFL=--1----- +fc NP - - - - CLD EFL=-0------ +fd NP - - - - STD EFL=-1------ +fe/0 M Eb - - - INC LOCK SZ8 EFL=m--mmmm- +fe/1 M Eb - - - DEC LOCK SZ8 EFL=m--mmmm- +ff/0 M Ev - - - INC LOCK EFL=m--mmmm- +ff/1 M Ev - - - DEC LOCK EFL=m--mmmm- +ff/2 M Ev - - - CALL F64 +ff/3m M Mp - - - CALLF +ff/4 M Ev - - - JMP F64 +ff/5m M Mp - - - JMPF +ff/6 M Ev - - - PUSH D64 +# TODO: SDM states taht SLDT/STR are Rv/Mw (like SMSW), but semantics not verified +0f00/0 M Ew - - - SLDT +0f00/1 M Ew - - - STR +0f00/2 M Ew - - - LLDT CPL0 +0f00/3 M Ew - - - LTR CPL0 +0f00/4 M Ew - - - VERR EFL=----m--- +0f00/5 M Ew - - - VERW EFL=----m--- +0f01/0m M M - - - SGDT +0f01/1m M M - - - SIDT +0f01/2m M M - - - LGDT CPL0 +0f01/3m M M - - - LIDT CPL0 +0f01/4m M Mw - - - SMSW +0f01/4r M Rv - - - SMSW +0f01/6 M Ew - - - LMSW CPL0 +0f01/7m M Mb - - - INVLPG SZ8 F=486 CPL0 +NP.0f01c0 NP - - - - ENCLV F=SGX +NP.0f01c8 NP - - - - MONITOR F=MONITOR +NP.0f01c9 NP - - - - MWAIT F=MONITOR +NP.0f01ca NP - - - - CLAC F=SMAP CPL0 +NP.0f01cb NP - - - - STAC F=SMAP CPL0 +NP.0f01cf NP - - - - ENCLS F=SGX +NP.0f01d0 NP - - - - XGETBV F=XSAVE +NP.0f01d1 NP - - - - XSETBV F=XSAVE +NP.0f01d5 NP - - - - XEND F=HLERTM +NP.0f01d6 NP - - - - XTEST F=HLERTM EFL=0--0m000 +NP.0f01d7 NP - - - - ENCLU F=SGX +0f01f8 NP - - - - SWAPGS O64 F=LM +0f01f9 NP - - - - RDTSCP F=RDTSCP +0f02 RM Gv Ew - - LAR EFL=----m--- +0f03 RM Gv Ew - - LSL EFL=----m--- +0f05 NP - - - - SYSCALL O64 F=LM EFL=MMMMMMMM +0f06 NP - - - - CLTS CPL0 +0f07 NP - - - - SYSRET O64 F=LM CPL0 EFL=mmmmmmmm +0f08 NP - - - - INVD F=486 CPL0 +*0f09 NP - - - - WBINVD F=486 CPL0 +0f0b NP - - - - UD2 +0f0d/0m M Mb - - - PREFETCH F=PREFETCH +0f0d/1m M Mb - - - PREFETCHW F=PREFETCHW +0f0d/2m M Mb - - - PREFETCHWT1 F=PREFETCHWT1 # All other slots are reserved, AMD maps them to /0 -*0f0d/m M MEM8 - - - RESERVED_PREFETCH ONLYAMD -*0f0d/r MR GP GP - - RESERVED_NOP -0f0e NP - - - - FEMMS ONLYAMD +*0f0d/m M Mb - - - RESERVED_PREFETCH ONLYAMD F=PREFETCH +*0f0d/r MR Ev Gv - - RESERVED_NOP +0f0e NP - - - - FEMMS ONLYAMD F=3DNOW # TODO: actually decode 3DNow! instructions. Given that 3DNow! no longer exists, # this is unlikely to happen, though. -0f0f RMI MMX MMX IMM8 - 3DNOW ONLYAMD -0f18/0m M MEM8 - - - PREFETCHNTA -0f18/1m M MEM8 - - - PREFETCHT0 -0f18/2m M MEM8 - - - PREFETCHT1 -0f18/3m M MEM8 - - - PREFETCHT2 +0f0f RMI Pq Qq Ib - 3DNOW ONLYAMD F=3DNOW +0f18/0m M Mb - - - PREFETCHNTA F=SSE +0f18/1m M Mb - - - PREFETCHT0 F=SSE +0f18/2m M Mb - - - PREFETCHT1 F=SSE +0f18/3m M Mb - - - PREFETCHT2 F=SSE # Reserved NOPs are weak, they can be overridden by other instructions. -*0f18 MR GP GP - - RESERVED_NOP -*0f19 MR GP GP - - RESERVED_NOP -*0f1a MR GP GP - - RESERVED_NOP -*0f1b MR GP GP - - RESERVED_NOP -*0f1c MR GP GP - - RESERVED_NOP -*0f1d MR GP GP - - RESERVED_NOP -*0f1e MR GP GP - - RESERVED_NOP -*0f1f MR GP GP - - RESERVED_NOP -0f1f/0 M GP - - - NOP -0f20 MR GP CR - - MOV_CR DEF64 IGN66 -0f21 MR GP DR - - MOV_DR DEF64 IGN66 -0f22 RM CR GP - - MOV_CR DEF64 IGN66 -0f23 RM DR GP - - MOV_DR DEF64 IGN66 -0f30 NP - - - - WRMSR -0f31 NP - - - - RDTSC -0f32 NP - - - - RDMSR -0f33 NP - - - - RDPMC -0f34 NP - - - - SYSENTER -0f35 NP - - - - SYSEXIT -NP.0f37 NP - - - - GETSEC +*0f18 MR Ev Gv - - RESERVED_NOP +*0f19 MR Ev Gv - - RESERVED_NOP +*0f1a MR Ev Gv - - RESERVED_NOP +*0f1b MR Ev Gv - - RESERVED_NOP +*0f1c MR Ev Gv - - RESERVED_NOP +*0f1d MR Ev Gv - - RESERVED_NOP +*0f1e MR Ev Gv - - RESERVED_NOP +*0f1f MR Ev Gv - - RESERVED_NOP +0f1f/0 M Ev - - - NOP +0f20 MR Ry Cy - - MOV_CR I66 D64 CPL0 EFL=u--uuuuu +0f21 MR Ry Dy - - MOV_DR I66 D64 CPL0 EFL=u--uuuuu +0f22 RM Cy Ry - - MOV_CR I66 D64 CPL0 EFL=u--uuuuu +0f23 RM Dy Ry - - MOV_DR I66 D64 CPL0 EFL=u--uuuuu +0f30 NP - - - - WRMSR F=586 CPL0 +0f31 NP - - - - RDTSC F=586 +0f32 NP - - - - RDMSR F=586 CPL0 +0f33 NP - - - - RDPMC F=686 +0f34 NP - - - - SYSENTER F=686 EFL=--m----- +0f35 NP - - - - SYSEXIT F=686 CPL0 +NP.0f37 NP - - - - GETSEC F=SMX EFL=MMMMMMMM # 0f38, 0f3a are escape opcodes -0f40 RM GP GP - - CMOVO -0f41 RM GP GP - - CMOVNO -0f42 RM GP GP - - CMOVC -0f43 RM GP GP - - CMOVNC -0f44 RM GP GP - - CMOVZ -0f45 RM GP GP - - CMOVNZ -0f46 RM GP GP - - CMOVBE -0f47 RM GP GP - - CMOVA -0f48 RM GP GP - - CMOVS -0f49 RM GP GP - - CMOVNS -0f4a RM GP GP - - CMOVP -0f4b RM GP GP - - CMOVNP -0f4c RM GP GP - - CMOVL -0f4d RM GP GP - - CMOVGE -0f4e RM GP GP - - CMOVLE -0f4f RM GP GP - - CMOVG -0f80 D IMM - - - JO FORCE64 -0f81 D IMM - - - JNO FORCE64 -0f82 D IMM - - - JC FORCE64 -0f83 D IMM - - - JNC FORCE64 -0f84 D IMM - - - JZ FORCE64 -0f85 D IMM - - - JNZ FORCE64 -0f86 D IMM - - - JBE FORCE64 -0f87 D IMM - - - JA FORCE64 -0f88 D IMM - - - JS FORCE64 -0f89 D IMM - - - JNS FORCE64 -0f8a D IMM - - - JP FORCE64 -0f8b D IMM - - - JNP FORCE64 -0f8c D IMM - - - JL FORCE64 -0f8d D IMM - - - JGE FORCE64 -0f8e D IMM - - - JLE FORCE64 -0f8f D IMM - - - JG FORCE64 -0f90 M GP - - - SETO SIZE_8 -0f91 M GP - - - SETNO SIZE_8 -0f92 M GP - - - SETC SIZE_8 -0f93 M GP - - - SETNC SIZE_8 -0f94 M GP - - - SETZ SIZE_8 -0f95 M GP - - - SETNZ SIZE_8 -0f96 M GP - - - SETBE SIZE_8 -0f97 M GP - - - SETA SIZE_8 -0f98 M GP - - - SETS SIZE_8 -0f99 M GP - - - SETNS SIZE_8 -0f9a M GP - - - SETP SIZE_8 -0f9b M GP - - - SETNP SIZE_8 -0f9c M GP - - - SETL SIZE_8 -0f9d M GP - - - SETGE SIZE_8 -0f9e M GP - - - SETLE SIZE_8 -0f9f M GP - - - SETG SIZE_8 -0fa0 S SEG - - - PUSH DEF64 -0fa1 S SEG - - - POP DEF64 -0fa2 NP - - - - CPUID -0fa3 MR GP GP - - BT -0fa4 MRI GP GP IMM8 - SHLD -0fa5 MRC GP GP GP8 - SHLD -0fa8 S SEG - - - PUSH DEF64 -0fa9 S SEG - - - POP DEF64 -0faa NP - - - - RSM -0fab MR GP GP - - BTS LOCK -0fac MRI GP GP IMM8 - SHRD -0fad MRC GP GP GP8 - SHRD -0faf RM GP GP - - IMUL -0fb0 MR GP GP - - CMPXCHG SIZE_8 LOCK -0fb1 MR GP GP - - CMPXCHG LOCK -0fb2/m RM GP MEM - - LSS -0fb3 MR GP GP - - BTR LOCK -0fb4/m RM GP MEM - - LFS -0fb5/m RM GP MEM - - LGS -0fb6 RM GP GP8 - - MOVZX ENC_SEPSZ -0fb7 RM GP GP16 - - MOVZX ENC_SEPSZ -F3.0fb8 RM GP GP - - POPCNT USE66 -0fb9 RM GP GP - - UD1 -0fba/4 MI GP IMM8 - - BT -0fba/5 MI GP IMM8 - - BTS LOCK -0fba/6 MI GP IMM8 - - BTR LOCK -0fba/7 MI GP IMM8 - - BTC LOCK -0fbb MR GP GP - - BTC LOCK -*0fbc RM GP GP - - BSF -F3.0fbc RM GP GP - - TZCNT USE66 -*0fbd RM GP GP - - BSR -F3.0fbd RM GP GP - - LZCNT USE66 -0fbe RM GP GP8 - - MOVSX ENC_SEPSZ -0fbf RM GP GP16 - - MOVSX ENC_SEPSZ -0fc0 MR GP GP - - XADD SIZE_8 LOCK -0fc1 MR GP GP - - XADD LOCK -NP.0fc3/m MR MEM GP - - MOVNTI -0fc7/1m M MEMZ - - - CMPXCHGD LOCK IGN66 INSTR_WIDTH -0fc8+ O GP - - - BSWAP -0fff RM GP GP - - UD0 +0f40 RM Gv Ev - - CMOVO F=CMOV EFL=t------- +0f41 RM Gv Ev - - CMOVNO F=CMOV EFL=t------- +0f42 RM Gv Ev - - CMOVC F=CMOV EFL=-------t +0f43 RM Gv Ev - - CMOVNC F=CMOV EFL=-------t +0f44 RM Gv Ev - - CMOVZ F=CMOV EFL=----t--- +0f45 RM Gv Ev - - CMOVNZ F=CMOV EFL=----t--- +0f46 RM Gv Ev - - CMOVBE F=CMOV EFL=----t--t +0f47 RM Gv Ev - - CMOVA F=CMOV EFL=----t--t +0f48 RM Gv Ev - - CMOVS F=CMOV EFL=---t---- +0f49 RM Gv Ev - - CMOVNS F=CMOV EFL=---t---- +0f4a RM Gv Ev - - CMOVP F=CMOV EFL=------t- +0f4b RM Gv Ev - - CMOVNP F=CMOV EFL=------t- +0f4c RM Gv Ev - - CMOVL F=CMOV EFL=t--t---- +0f4d RM Gv Ev - - CMOVGE F=CMOV EFL=t--t---- +0f4e RM Gv Ev - - CMOVLE F=CMOV EFL=t--tt--- +0f4f RM Gv Ev - - CMOVG F=CMOV EFL=t--tt--- +0f80 D Jz - - - JO F64 EFL=t------- +0f81 D Jz - - - JNO F64 EFL=t------- +0f82 D Jz - - - JC F64 EFL=-------t +0f83 D Jz - - - JNC F64 EFL=-------t +0f84 D Jz - - - JZ F64 EFL=----t--- +0f85 D Jz - - - JNZ F64 EFL=----t--- +0f86 D Jz - - - JBE F64 EFL=----t--t +0f87 D Jz - - - JA F64 EFL=----t--t +0f88 D Jz - - - JS F64 EFL=---t---- +0f89 D Jz - - - JNS F64 EFL=---t---- +0f8a D Jz - - - JP F64 EFL=------t- +0f8b D Jz - - - JNP F64 EFL=------t- +0f8c D Jz - - - JL F64 EFL=t--t---- +0f8d D Jz - - - JGE F64 EFL=t--t---- +0f8e D Jz - - - JLE F64 EFL=t--tt--- +0f8f D Jz - - - JG F64 EFL=t--tt--- +0f90 M Eb - - - SETO SZ8 EFL=t------- +0f91 M Eb - - - SETNO SZ8 EFL=t------- +0f92 M Eb - - - SETC SZ8 EFL=-------t +0f93 M Eb - - - SETNC SZ8 EFL=-------t +0f94 M Eb - - - SETZ SZ8 EFL=----t--- +0f95 M Eb - - - SETNZ SZ8 EFL=----t--- +0f96 M Eb - - - SETBE SZ8 EFL=----t--t +0f97 M Eb - - - SETA SZ8 EFL=----t--t +0f98 M Eb - - - SETS SZ8 EFL=---t---- +0f99 M Eb - - - SETNS SZ8 EFL=---t---- +0f9a M Eb - - - SETP SZ8 EFL=------t- +0f9b M Eb - - - SETNP SZ8 EFL=------t- +0f9c M Eb - - - SETL SZ8 EFL=t--t---- +0f9d M Eb - - - SETGE SZ8 EFL=t--t---- +0f9e M Eb - - - SETLE SZ8 EFL=t--tt--- +0f9f M Eb - - - SETG SZ8 EFL=t--tt--- +0fa0 S Sv - - - PUSH D64 +0fa1 S Sv - - - POP D64 +0fa2 NP - - - - CPUID F=586 +0fa3 MR Ev Gv - - BT EFL=u--u-uum +0fa4 MRI Ev Gv Ib - SHLD EFL=u--mmumm +0fa5 MRC Ev Gv Rb - SHLD EFL=u--mmumm +0fa8 S Sv - - - PUSH D64 +0fa9 S Sv - - - POP D64 +0faa NP - - - - RSM F=586 +0fab MR Ev Gv - - BTS LOCK EFL=u--u-uum +0fac MRI Ev Gv Ib - SHRD EFL=u--mmumm +0fad MRC Ev Gv Rb - SHRD EFL=u--mmumm +0faf RM Gv Ev - - IMUL EFL=m--uuuum +0fb0 MR Eb Gb - - CMPXCHG LOCK SZ8 F=486 EFL=m--mmmmm +0fb1 MR Ev Gv - - CMPXCHG LOCK F=486 EFL=m--mmmmm +0fb2/m RM Gv Mp - - LSS +0fb3 MR Ev Gv - - BTR LOCK EFL=u--u-uum +0fb4/m RM Gv Mp - - LFS +0fb5/m RM Gv Mp - - LGS +0fb6 RM Gv Eb - - MOVZX ENC_SEPSZ +0fb7 RM Gv Ew - - MOVZX ENC_SEPSZ +F3.0fb8 RM Gv Ev - - POPCNT U66 F=POPCNT EFL=0--0m000 +0fb9 RM Gv Ev - - UD1 +0fba/4 MI Ev Ib - - BT EFL=u--u-uum +0fba/5 MI Ev Ib - - BTS LOCK EFL=u--u-uum +0fba/6 MI Ev Ib - - BTR LOCK EFL=u--u-uum +0fba/7 MI Ev Ib - - BTC LOCK EFL=u--u-uum +0fbb MR Ev Gv - - BTC LOCK EFL=u--u-uum +*0fbc RM Gv Ev - - BSF EFL=u--umuuu +F3.0fbc RM Gv Ev - - TZCNT U66 F=BMI1 EFL=u--umuum +*0fbd RM Gv Ev - - BSR EFL=u--umuuu +F3.0fbd RM Gv Ev - - LZCNT U66 F=LZCNT EFL=u--umuum +0fbe RM Gv Eb - - MOVSX ENC_SEPSZ +0fbf RM Gv Ew - - MOVSX ENC_SEPSZ +0fc0 MR Eb Gb - - XADD LOCK SZ8 F=486 EFL=m--mmmmm +0fc1 MR Ev Gv - - XADD LOCK F=486 EFL=m--mmmmm +NP.0fc3/m MR My Gy - - MOVNTI F=SSE2 +0fc7/1m M M - - - CMPXCHGD+w LOCK I66 F=586 EFL=----m--- +0fc8+ O Rv - - - BSWAP F=486 +0fff RM Gv Ev - - UD0 # -NFx.0f38f0/m RM GP MEM - - MOVBE -F2.0f38f0 RM GP32 GP - - CRC32 SIZE_8 -NFx.0f38f1/m MR MEM GP - - MOVBE -F2.0f38f1 RM GP32 GP - - CRC32 USE66 +NFx.0f38f0/m RM Gv Mv - - MOVBE F=MOVBE +F2.0f38f0 RM Gd Eb - - CRC32 SZ8 F=SSE42 +NFx.0f38f1/m MR Mv Gv - - MOVBE F=MOVBE +F2.0f38f1 RM Gd Ev - - CRC32 U66 F=SSE42 # # MMX -NP.0f2a RM XMM64 MMX - - MMX_CVTPI2PS -66.0f2a RM XMM MMX - - MMX_CVTPI2PD -NP.0f2c RM MMX XMM64 - - MMX_CVTTPS2PI -66.0f2c RM MMX XMM - - MMX_CVTTPD2PI -NP.0f2d RM MMX XMM64 - - MMX_CVTPS2PI -66.0f2d RM MMX XMM - - MMX_CVTPD2PI -NP.0f60 RM MMX MMX - - MMX_PUNPCKLBW -NP.0f61 RM MMX MMX - - MMX_PUNPCKLWD -NP.0f62 RM MMX MMX - - MMX_PUNPCKLDQ -NP.0f63 RM MMX MMX - - MMX_PACKSSWB -NP.0f64 RM MMX MMX - - MMX_PCMPGTB -NP.0f65 RM MMX MMX - - MMX_PCMPGTW -NP.0f66 RM MMX MMX - - MMX_PCMPGTD -NP.0f67 RM MMX MMX - - MMX_PACKUSWB -NP.0f68 RM MMX MMX - - MMX_PUNPCKHBW -NP.0f69 RM MMX MMX - - MMX_PUNPCKHWD -NP.0f6a RM MMX MMX - - MMX_PUNPCKHDQ -NP.0f6b RM MMX MMX - - MMX_PACKSSDW -NP.W0.0f6e RM MMX GP32 - - MMX_MOVD -NP.W1.0f6e RM MMX GP64 - - MMX_MOVQ -NP.0f6f RM MMX MMX - - MMX_MOVQ -NP.0f70 RMI MMX MMX IMM8 - MMX_PSHUFW -NP.0f71/2r MI MMX IMM8 - - MMX_PSRLW -NP.0f71/4r MI MMX IMM8 - - MMX_PSRAW -NP.0f71/6r MI MMX IMM8 - - MMX_PSLLW -NP.0f72/2r MI MMX IMM8 - - MMX_PSRLD -NP.0f72/4r MI MMX IMM8 - - MMX_PSRAD -NP.0f72/6r MI MMX IMM8 - - MMX_PSLLD -NP.0f73/2r MI MMX IMM8 - - MMX_PSRLQ -NP.0f73/6r MI MMX IMM8 - - MMX_PSLLQ -NP.0f74 RM MMX MMX - - MMX_PCMPEQB -NP.0f75 RM MMX MMX - - MMX_PCMPEQW -NP.0f76 RM MMX MMX - - MMX_PCMPEQD -NP.0f77 NP - - - - MMX_EMMS -NP.W0.0f7e MR GP32 MMX - - MMX_MOVD -NP.W1.0f7e MR GP64 MMX - - MMX_MOVQ -NP.0f7f MR MMX MMX - - MMX_MOVQ -# TODO: GP operand is actually GP16 -NP.0fc4 RMI MMX GP IMM8 - MMX_PINSRW ENC_NOSZ -NP.0fc5/r RMI GP MMX IMM8 - MMX_PEXTRW DEF64 -NP.0fd1 RM MMX MMX - - MMX_PSRLW -NP.0fd2 RM MMX MMX - - MMX_PSRLD -NP.0fd3 RM MMX MMX - - MMX_PSRLQ -NP.0fd4 RM MMX MMX - - MMX_PADDQ -NP.0fd5 RM MMX MMX - - MMX_PMULLW -F2.0fd6/r RM MMX XMM64 - - MMX_MOVDQ2Q -F3.0fd6/r RM XMM MMX - - MMX_MOVQ2DQ -NP.0fd7/r RM GP MMX - - MMX_PMOVMSKB DEF64 -NP.0fd8 RM MMX MMX - - MMX_PSUBUSB -NP.0fd9 RM MMX MMX - - MMX_PSUBUSW -NP.0fda RM MMX MMX - - MMX_PMINUB -NP.0fdb RM MMX MMX - - MMX_PAND -NP.0fdc RM MMX MMX - - MMX_PADDUSB -NP.0fdd RM MMX MMX - - MMX_PADDUSW -NP.0fde RM MMX MMX - - MMX_PMAXUB -NP.0fdf RM MMX MMX - - MMX_PANDN -NP.0fe0 RM MMX MMX - - MMX_PAVGB -NP.0fe1 RM MMX MMX - - MMX_PSRAW -NP.0fe2 RM MMX MMX - - MMX_PSRAD -NP.0fe3 RM MMX MMX - - MMX_PAVGW -NP.0fe4 RM MMX MMX - - MMX_PMULHUW -NP.0fe5 RM MMX MMX - - MMX_PMULHW -NP.0fe7/m MR MEM64 MMX - - MMX_MOVNTQ -NP.0fe8 RM MMX MMX - - MMX_PSUBSB -NP.0fe9 RM MMX MMX - - MMX_PSUBSW -NP.0feb RM MMX MMX - - MMX_POR -NP.0fec RM MMX MMX - - MMX_PADDSB -NP.0fea RM MMX MMX - - MMX_PMINSW -NP.0fee RM MMX MMX - - MMX_PMAXSW -NP.0fed RM MMX MMX - - MMX_PADDSW -NP.0fef RM MMX MMX - - MMX_PXOR -NP.0ff1 RM MMX MMX - - MMX_PSLLW -NP.0ff2 RM MMX MMX - - MMX_PSLLD -NP.0ff3 RM MMX MMX - - MMX_PSLLQ -NP.0ff4 RM MMX MMX - - MMX_PMULUDQ -NP.0ff5 RM MMX MMX - - MMX_PMADDWD -NP.0ff6 RM MMX MMX - - MMX_PSADBW -NP.0ff7/r RM MMX MMX - - MMX_MASKMOVQ -NP.0ff8 RM MMX MMX - - MMX_PSUBB -NP.0ff9 RM MMX MMX - - MMX_PSUBW -NP.0ffa RM MMX MMX - - MMX_PSUBD -NP.0ffb RM MMX MMX - - MMX_PSUBQ -NP.0ffc RM MMX MMX - - MMX_PADDB -NP.0ffd RM MMX MMX - - MMX_PADDW -NP.0ffe RM MMX MMX - - MMX_PADDD -NP.0f3800 RM MMX MMX - - MMX_PSHUFB -NP.0f3801 RM MMX MMX - - MMX_PHADDW -NP.0f3802 RM MMX MMX - - MMX_PHADDD -NP.0f3803 RM MMX MMX - - MMX_PHADDSW -NP.0f3804 RM MMX MMX - - MMX_PMADDUBSW -NP.0f3805 RM MMX MMX - - MMX_PHSUBW -NP.0f3806 RM MMX MMX - - MMX_PHSUBD -NP.0f3807 RM MMX MMX - - MMX_PHSUBSW -NP.0f3808 RM MMX MMX - - MMX_PSIGNB -NP.0f3809 RM MMX MMX - - MMX_PSIGNW -NP.0f380a RM MMX MMX - - MMX_PSIGND -NP.0f380b RM MMX MMX - - MMX_PMULHRSW -NP.0f381c RM MMX MMX - - MMX_PABSB -NP.0f381d RM MMX MMX - - MMX_PABSW -NP.0f381e RM MMX MMX - - MMX_PABSD -NP.0f3a0f RMI MMX MMX IMM8 - MMX_PALIGNR - +NP.0f2a RM Vps Qq - - MMX_CVTPI2PS F=SSE2 +66.0f2a RM Vpd Qq - - MMX_CVTPI2PD F=SSE2 +NP.0f2c RM Pq Wps - - MMX_CVTTPS2PI F=SSE2 +66.0f2c RM Pq Wpd - - MMX_CVTTPD2PI F=SSE2 +NP.0f2d RM Pq Wps - - MMX_CVTPS2PI F=SSE2 +66.0f2d RM Pq Wpd - - MMX_CVTPD2PI F=SSE2 +NP.0f60 RM Pq Qd - - MMX_PUNPCKLBW F=MMX +NP.0f61 RM Pq Qd - - MMX_PUNPCKLWD F=MMX +NP.0f62 RM Pq Qd - - MMX_PUNPCKLDQ F=MMX +NP.0f63 RM Pq Qq - - MMX_PACKSSWB F=MMX +NP.0f64 RM Pq Qq - - MMX_PCMPGTB F=MMX +NP.0f65 RM Pq Qq - - MMX_PCMPGTW F=MMX +NP.0f66 RM Pq Qq - - MMX_PCMPGTD F=MMX +NP.0f67 RM Pq Qq - - MMX_PACKUSWB F=MMX +NP.0f68 RM Pq Qd - - MMX_PUNPCKHBW F=MMX +NP.0f69 RM Pq Qd - - MMX_PUNPCKHWD F=MMX +NP.0f6a RM Pq Qd - - MMX_PUNPCKHDQ F=MMX +NP.0f6b RM Pq Qd - - MMX_PACKSSDW F=MMX +NP.W0.0f6e RM Pq Ey - - MMX_MOVD F=MMX ENC_NOSZ +NP.W1.0f6e RM Pq Ey - - MMX_MOVQ F=MMX ENC_NOSZ +NP.0f6f RM Pq Qq - - MMX_MOVQ F=MMX +NP.0f70 RMI Qq Pq Ib - MMX_PSHUFW F=SSE +NP.0f71/2r MI Nq Ib - - MMX_PSRLW F=MMX +NP.0f71/4r MI Nq Ib - - MMX_PSRAW F=MMX +NP.0f71/6r MI Nq Ib - - MMX_PSLLW F=MMX +NP.0f72/2r MI Nq Ib - - MMX_PSRLD F=MMX +NP.0f72/4r MI Nq Ib - - MMX_PSRAD F=MMX +NP.0f72/6r MI Nq Ib - - MMX_PSLLD F=MMX +NP.0f73/2r MI Nq Ib - - MMX_PSRLQ F=MMX +NP.0f73/6r MI Nq Ib - - MMX_PSLLQ F=MMX +NP.0f74 RM Pq Qq - - MMX_PCMPEQB F=MMX +NP.0f75 RM Pq Qq - - MMX_PCMPEQW F=MMX +NP.0f76 RM Pq Qq - - MMX_PCMPEQD F=MMX +NP.0f77 NP - - - - MMX_EMMS F=MMX +NP.W0.0f7e MR Ey Py - - MMX_MOVD F=MMX ENC_NOSZ +NP.W1.0f7e MR Ey Py - - MMX_MOVQ F=MMX ENC_NOSZ +NP.0f7f MR Qq Pq - - MMX_MOVQ F=MMX +# TODO: Ey operand is actually Ry/Mw +NP.0fc4 RMI Pq Ey Ib - MMX_PINSRW F=SSE ENC_NOSZ +NP.0fc5/r RMI Gy Nq Ib - MMX_PEXTRW D64 F=SSE +NP.0fd1 RM Pq Qq - - MMX_PSRLW F=MMX +NP.0fd2 RM Pq Qq - - MMX_PSRLD F=MMX +NP.0fd3 RM Pq Qq - - MMX_PSRLQ F=MMX +NP.0fd4 RM Pq Qq - - MMX_PADDQ F=MMX +NP.0fd5 RM Pq Qq - - MMX_PMULLW F=MMX +F2.0fd6/r RM Pq Uq - - MMX_MOVDQ2Q F=SSE +F3.0fd6/r RM Vdq Nq - - MMX_MOVQ2DQ F=SSE +NP.0fd7/r RM Gv Nq - - MMX_PMOVMSKB D64 F=SSE +NP.0fd8 RM Pq Qq - - MMX_PSUBUSB F=MMX +NP.0fd9 RM Pq Qq - - MMX_PSUBUSW F=MMX +NP.0fda RM Pq Qq - - MMX_PMINUB F=SSE +NP.0fdb RM Pq Qq - - MMX_PAND F=MMX +NP.0fdc RM Pq Qq - - MMX_PADDUSB F=MMX +NP.0fdd RM Pq Qq - - MMX_PADDUSW F=MMX +NP.0fde RM Pq Qq - - MMX_PMAXUB F=SSE +NP.0fdf RM Pq Qq - - MMX_PANDN F=MMX +NP.0fe0 RM Pq Qq - - MMX_PAVGB F=SSE +NP.0fe1 RM Pq Qq - - MMX_PSRAW F=MMX +NP.0fe2 RM Pq Qq - - MMX_PSRAD F=MMX +NP.0fe3 RM Pq Qq - - MMX_PAVGW F=SSE +NP.0fe4 RM Pq Qq - - MMX_PMULHUW F=SSE +NP.0fe5 RM Pq Qq - - MMX_PMULHW F=MMX +NP.0fe7/m MR Mq Pq - - MMX_MOVNTQ F=SSE +NP.0fe8 RM Pq Qq - - MMX_PSUBSB F=MMX +NP.0fe9 RM Pq Qq - - MMX_PSUBSW F=MMX +NP.0feb RM Pq Qq - - MMX_POR F=MMX +NP.0fec RM Pq Qq - - MMX_PADDSB F=MMX +NP.0fea RM Pq Qq - - MMX_PMINSW F=SSE +NP.0fee RM Pq Qq - - MMX_PMAXSW F=SSE +NP.0fed RM Pq Qq - - MMX_PADDSW F=MMX +NP.0fef RM Pq Qq - - MMX_PXOR F=MMX +NP.0ff1 RM Pq Qq - - MMX_PSLLW F=MMX +NP.0ff2 RM Pq Qq - - MMX_PSLLD F=MMX +NP.0ff3 RM Pq Qq - - MMX_PSLLQ F=MMX +NP.0ff4 RM Pq Qq - - MMX_PMULUDQ F=MMX +NP.0ff5 RM Pq Qq - - MMX_PMADDWD F=MMX +NP.0ff6 RM Pq Qq - - MMX_PSADBW F=SSE +NP.0ff7/r RM Pq Nq - - MMX_MASKMOVQ F=SSE +NP.0ff8 RM Pq Qq - - MMX_PSUBB F=MMX +NP.0ff9 RM Pq Qq - - MMX_PSUBW F=MMX +NP.0ffa RM Pq Qq - - MMX_PSUBD F=MMX +NP.0ffb RM Pq Qq - - MMX_PSUBQ F=MMX +NP.0ffc RM Pq Qq - - MMX_PADDB F=MMX +NP.0ffd RM Pq Qq - - MMX_PADDW F=MMX +NP.0ffe RM Pq Qq - - MMX_PADDD F=MMX +NP.0f3800 RM Pq Qq - - MMX_PSHUFB F=SSSE3 +NP.0f3801 RM Pq Qq - - MMX_PHADDW F=SSSE3 +NP.0f3802 RM Pq Qq - - MMX_PHADDD F=SSSE3 +NP.0f3803 RM Pq Qq - - MMX_PHADDSW F=SSSE3 +NP.0f3804 RM Pq Qq - - MMX_PMADDUBSW F=SSSE3 +NP.0f3805 RM Pq Qq - - MMX_PHSUBW F=SSSE3 +NP.0f3806 RM Pq Qq - - MMX_PHSUBD F=SSSE3 +NP.0f3807 RM Pq Qq - - MMX_PHSUBSW F=SSSE3 +NP.0f3808 RM Pq Qq - - MMX_PSIGNB F=SSSE3 +NP.0f3809 RM Pq Qq - - MMX_PSIGNW F=SSSE3 +NP.0f380a RM Pq Qq - - MMX_PSIGND F=SSSE3 +NP.0f380b RM Pq Qq - - MMX_PMULHRSW F=SSSE3 +NP.0f381c RM Pq Qq - - MMX_PABSB F=SSSE3 +NP.0f381d RM Pq Qq - - MMX_PABSW F=SSSE3 +NP.0f381e RM Pq Qq - - MMX_PABSD F=SSSE3 +NP.0f3a0f RMI Pq Qq Ib - MMX_PALIGNR F=SSSE3 # # SSE -NP.0f10 RM XMM XMM - - SSE_MOVUPS -66.0f10 RM XMM XMM - - SSE_MOVUPD +NP.0f10 RM Vps Wps - - SSE_MOVUPS F=SSE +66.0f10 RM Vpd Wpd - - SSE_MOVUPD F=SSE2 # MOVSS/MOVSD reg,mem set the full XMM register -F3.0f10 RM XMM XMM32 - - SSE_MOVSS -F2.0f10 RM XMM XMM64 - - SSE_MOVSD -NP.0f11 MR XMM XMM - - SSE_MOVUPS -66.0f11 MR XMM XMM - - SSE_MOVUPD -F3.0f11 MR XMM32 XMM32 - - SSE_MOVSS -F2.0f11 MR XMM64 XMM64 - - SSE_MOVSD -NP.0f12/m RM XMM XMM64 - - SSE_MOVLPS -NP.0f12/r RM XMM XMM - - SSE_MOVHLPS -66.0f12/m RM XMM XMM64 - - SSE_MOVLPD -F3.0f12 RM XMM XMM - - SSE_MOVSLDUP -F2.0f12 RM XMM XMM64 - - SSE_MOVDDUP -NP.0f13/m MR MEM64 XMM - - SSE_MOVLPS -66.0f13/m MR MEM64 XMM - - SSE_MOVLPD -NP.0f14 RM XMM XMM - - SSE_UNPCKLPS -66.0f14 RM XMM XMM - - SSE_UNPCKLPD -NP.0f15 RM XMM XMM - - SSE_UNPCKHPS -66.0f15 RM XMM XMM - - SSE_UNPCKHPD -NP.0f16/m RM XMM XMM64 - - SSE_MOVHPS -NP.0f16/r RM XMM XMM64 - - SSE_MOVLHPS -66.0f16/m RM XMM XMM64 - - SSE_MOVHPD -F3.0f16 RM XMM XMM - - SSE_MOVSHDUP -NP.0f17/m MR MEM64 XMM - - SSE_MOVHPS -66.0f17/m MR MEM64 XMM - - SSE_MOVHPD -NP.0f28 RM XMM XMM - - SSE_MOVAPS -66.0f28 RM XMM XMM - - SSE_MOVAPD -NP.0f29 MR XMM XMM - - SSE_MOVAPS -66.0f29 MR XMM XMM - - SSE_MOVAPD -F3.0f2a RM XMM32 GP - - SSE_CVTSI2SS -F2.0f2a RM XMM64 GP - - SSE_CVTSI2SD -NP.0f2b/m MR MEMV XMM - - SSE_MOVNTPS -66.0f2b/m MR MEMV XMM - - SSE_MOVNTPD -F3.0f2b/m MR MEM32 XMM32 - - SSE_MOVNTSS ONLYAMD -F2.0f2b/m MR MEM64 XMM64 - - SSE_MOVNTSD ONLYAMD -F3.0f2c RM GP XMM32 - - SSE_CVTTSS2SI -F2.0f2c RM GP XMM64 - - SSE_CVTTSD2SI -F3.0f2d RM GP XMM32 - - SSE_CVTSS2SI -F2.0f2d RM GP XMM64 - - SSE_CVTSD2SI -NP.0f2e RM XMM32 XMM32 - - SSE_UCOMISS -66.0f2e RM XMM64 XMM64 - - SSE_UCOMISD -NP.0f2f RM XMM32 XMM32 - - SSE_COMISS -66.0f2f RM XMM64 XMM64 - - SSE_COMISD -NP.0f50/r RM GP XMM - - SSE_MOVMSKPS DEF64 -66.0f50/r RM GP XMM - - SSE_MOVMSKPD DEF64 -NP.0f51 RM XMM XMM - - SSE_SQRTPS -66.0f51 RM XMM XMM - - SSE_SQRTPD -F3.0f51 RM XMM32 XMM32 - - SSE_SQRTSS -F2.0f51 RM XMM64 XMM64 - - SSE_SQRTSD -NP.0f52 RM XMM XMM - - SSE_RSQRTPS -F3.0f52 RM XMM32 XMM32 - - SSE_RSQRTSS -NP.0f53 RM XMM XMM - - SSE_RCPPS -F3.0f53 RM XMM32 XMM32 - - SSE_RCPSS -NP.0f54 RM XMM XMM - - SSE_ANDPS -66.0f54 RM XMM XMM - - SSE_ANDPD -NP.0f55 RM XMM XMM - - SSE_ANDNPS -66.0f55 RM XMM XMM - - SSE_ANDNPD -NP.0f56 RM XMM XMM - - SSE_ORPS -66.0f56 RM XMM XMM - - SSE_ORPD -NP.0f57 RM XMM XMM - - SSE_XORPS -66.0f57 RM XMM XMM - - SSE_XORPD -NP.0f58 RM XMM XMM - - SSE_ADDPS -66.0f58 RM XMM XMM - - SSE_ADDPD -F3.0f58 RM XMM32 XMM32 - - SSE_ADDSS -F2.0f58 RM XMM64 XMM64 - - SSE_ADDSD -NP.0f59 RM XMM XMM - - SSE_MULPS -66.0f59 RM XMM XMM - - SSE_MULPD -F3.0f59 RM XMM32 XMM32 - - SSE_MULSS -F2.0f59 RM XMM64 XMM64 - - SSE_MULSD -NP.0f5a RM XMM XMM64 - - SSE_CVTPS2PD -66.0f5a RM XMM XMM - - SSE_CVTPD2PS -F3.0f5a RM XMM XMM32 - - SSE_CVTSS2SD -F2.0f5a RM XMM XMM64 - - SSE_CVTSD2SS -NP.0f5b RM XMM XMM - - SSE_CVTDQ2PS -66.0f5b RM XMM XMM - - SSE_CVTPS2DQ -F3.0f5b RM XMM XMM - - SSE_CVTTPS2DQ -NP.0f5c RM XMM XMM - - SSE_SUBPS -66.0f5c RM XMM XMM - - SSE_SUBPD -F3.0f5c RM XMM32 XMM32 - - SSE_SUBSS -F2.0f5c RM XMM64 XMM64 - - SSE_SUBSD -NP.0f5d RM XMM XMM - - SSE_MINPS -66.0f5d RM XMM XMM - - SSE_MINPD -F3.0f5d RM XMM32 XMM32 - - SSE_MINSS -F2.0f5d RM XMM64 XMM64 - - SSE_MINSD -NP.0f5e RM XMM XMM - - SSE_DIVPS -66.0f5e RM XMM XMM - - SSE_DIVPD -F3.0f5e RM XMM32 XMM32 - - SSE_DIVSS -F2.0f5e RM XMM64 XMM64 - - SSE_DIVSD -NP.0f5f RM XMM XMM - - SSE_MAXPS -66.0f5f RM XMM XMM - - SSE_MAXPD -F3.0f5f RM XMM32 XMM32 - - SSE_MAXSS -F2.0f5f RM XMM64 XMM64 - - SSE_MAXSD -66.0f60 RM XMM XMM - - SSE_PUNPCKLBW -66.0f61 RM XMM XMM - - SSE_PUNPCKLWD -66.0f62 RM XMM XMM - - SSE_PUNPCKLDQ -66.0f63 RM XMM XMM - - SSE_PACKSSWB -66.0f64 RM XMM XMM - - SSE_PCMPGTB -66.0f65 RM XMM XMM - - SSE_PCMPGTW -66.0f66 RM XMM XMM - - SSE_PCMPGTD -66.0f67 RM XMM XMM - - SSE_PACKUSWB -66.0f68 RM XMM XMM - - SSE_PUNPCKHBW -66.0f69 RM XMM XMM - - SSE_PUNPCKHWD -66.0f6a RM XMM XMM - - SSE_PUNPCKHDQ -66.0f6b RM XMM XMM - - SSE_PACKSSDW -66.0f6c RM XMM XMM - - SSE_PUNPCKLQDQ -66.0f6d RM XMM XMM - - SSE_PUNPCKHQDQ -66.W0.0f6e RM XMM GP32 - - SSE_MOVD -66.W1.0f6e RM XMM GP64 - - SSE_MOVQ -66.0f6f RM XMM XMM - - SSE_MOVDQA -F3.0f6f RM XMM XMM - - SSE_MOVDQU -66.0f70 RMI XMM XMM IMM8 - SSE_PSHUFD -F3.0f70 RMI XMM XMM IMM8 - SSE_PSHUFHW -F2.0f70 RMI XMM XMM IMM8 - SSE_PSHUFLW -66.0f71/2r MI XMM IMM8 - - SSE_PSRLW -66.0f71/4r MI XMM IMM8 - - SSE_PSRAW -66.0f71/6r MI XMM IMM8 - - SSE_PSLLW -66.0f72/2r MI XMM IMM8 - - SSE_PSRLD -66.0f72/4r MI XMM IMM8 - - SSE_PSRAD -66.0f72/6r MI XMM IMM8 - - SSE_PSLLD -66.0f73/2r MI XMM IMM8 - - SSE_PSRLQ -66.0f73/3r MI XMM IMM8 - - SSE_PSRLDQ -66.0f73/6r MI XMM IMM8 - - SSE_PSLLQ -66.0f73/7r MI XMM IMM8 - - SSE_PSLLDQ -66.0f74 RM XMM XMM - - SSE_PCMPEQB -66.0f75 RM XMM XMM - - SSE_PCMPEQW -66.0f76 RM XMM XMM - - SSE_PCMPEQD +F3.0f10 RM Vx Wss - - SSE_MOVSS F=SSE +F2.0f10 RM Vx Wsd - - SSE_MOVSD F=SSE2 +NP.0f11 MR Wps Vps - - SSE_MOVUPS F=SSE +66.0f11 MR Wpd Vpd - - SSE_MOVUPD F=SSE2 +F3.0f11 MR Wss Vss - - SSE_MOVSS F=SSE +F2.0f11 MR Wsd Vsd - - SSE_MOVSD F=SSE2 +NP.0f12/m RM Vx Mq - - SSE_MOVLPS F=SSE +NP.0f12/r RM Vx Ux - - SSE_MOVHLPS F=SSE +66.0f12/m RM Vx Mq - - SSE_MOVLPD F=SSE2 +F3.0f12 RM Vx Wx - - SSE_MOVSLDUP F=SSE3 +F2.0f12 RM Vx Wq - - SSE_MOVDDUP F=SSE3 +NP.0f13/m MR Mq Vq - - SSE_MOVLPS F=SSE +66.0f13/m MR Mq Vq - - SSE_MOVLPD F=SSE2 +NP.0f14 RM Vps Wps - - SSE_UNPCKLPS F=SSE +66.0f14 RM Vpd Wpd - - SSE_UNPCKLPD F=SSE2 +NP.0f15 RM Vps Wps - - SSE_UNPCKHPS F=SSE +66.0f15 RM Vpd Wpd - - SSE_UNPCKHPD F=SSE2 +NP.0f16/m RM Vx Wq - - SSE_MOVHPS F=SSE +NP.0f16/r RM Vx Wq - - SSE_MOVLHPS F=SSE +66.0f16/m RM Vdq Mq - - SSE_MOVHPD F=SSE2 +F3.0f16 RM Vx Wx - - SSE_MOVSHDUP F=SSE3 +NP.0f17/m MR Mq Vx - - SSE_MOVHPS F=SSE +66.0f17/m MR Mq Vx - - SSE_MOVHPD F=SSE2 +NP.0f28 RM Vps Wps - - SSE_MOVAPS F=SSE +66.0f28 RM Vpd Wpd - - SSE_MOVAPD F=SSE2 +NP.0f29 MR Vps Wps - - SSE_MOVAPS F=SSE +66.0f29 MR Vpd Wpd - - SSE_MOVAPD F=SSE2 +F3.0f2a RM Vss Ey - - SSE_CVTSI2SS F=SSE +F2.0f2a RM Vsd Ey - - SSE_CVTSI2SD F=SSE2 +NP.0f2b/m MR Mps Vps - - SSE_MOVNTPS F=SSE +66.0f2b/m MR Mpd Vpd - - SSE_MOVNTPD F=SSE2 +F3.0f2b/m MR Mss Vss - - SSE_MOVNTSS F=SSE ONLYAMD +F2.0f2b/m MR Msd Vsd - - SSE_MOVNTSD F=SSE2 ONLYAMD +F3.0f2c RM Gy Wss - - SSE_CVTTSS2SI F=SSE +F2.0f2c RM Gy Wsd - - SSE_CVTTSD2SI F=SSE2 +F3.0f2d RM Gy Wss - - SSE_CVTSS2SI F=SSE +F2.0f2d RM Gy Wsd - - SSE_CVTSD2SI F=SSE2 +NP.0f2e RM Vss Wss - - SSE_UCOMISS F=SSE EFL=0--0m0mm +66.0f2e RM Vsd Wsd - - SSE_UCOMISD F=SSE2 EFL=0--0m0mm +NP.0f2f RM Vss Wss - - SSE_COMISS F=SSE EFL=0--0m0mm +66.0f2f RM Vsd Wsd - - SSE_COMISD F=SSE2 EFL=0--0m0mm +NP.0f50/r RM Gy Ups - - SSE_MOVMSKPS D64 F=SSE +66.0f50/r RM Gy Upd - - SSE_MOVMSKPD D64 F=SSE2 +NP.0f51 RM Vps Wps - - SSE_SQRTPS F=SSE +66.0f51 RM Vpd Wpd - - SSE_SQRTPD F=SSE2 +F3.0f51 RM Vss Wss - - SSE_SQRTSS F=SSE +F2.0f51 RM Vsd Wsd - - SSE_SQRTSD F=SSE2 +NP.0f52 RM Vps Wps - - SSE_RSQRTPS F=SSE +F3.0f52 RM Vss Wss - - SSE_RSQRTSS F=SSE +NP.0f53 RM Vps Wps - - SSE_RCPPS F=SSE +F3.0f53 RM Vss Wss - - SSE_RCPSS F=SSE +NP.0f54 RM Vps Wps - - SSE_ANDPS F=SSE +66.0f54 RM Vpd Wpd - - SSE_ANDPD F=SSE2 +NP.0f55 RM Vps Wps - - SSE_ANDNPS F=SSE +66.0f55 RM Vpd Wpd - - SSE_ANDNPD F=SSE2 +NP.0f56 RM Vps Wps - - SSE_ORPS F=SSE +66.0f56 RM Vpd Wpd - - SSE_ORPD F=SSE2 +NP.0f57 RM Vps Wps - - SSE_XORPS F=SSE +66.0f57 RM Vpd Wpd - - SSE_XORPD F=SSE2 +NP.0f58 RM Vps Wps - - SSE_ADDPS F=SSE +66.0f58 RM Vpd Wpd - - SSE_ADDPD F=SSE2 +F3.0f58 RM Vss Wss - - SSE_ADDSS F=SSE +F2.0f58 RM Vsd Wsd - - SSE_ADDSD F=SSE2 +NP.0f59 RM Vps Wps - - SSE_MULPS F=SSE +66.0f59 RM Vpd Wpd - - SSE_MULPD F=SSE2 +F3.0f59 RM Vss Wss - - SSE_MULSS F=SSE +F2.0f59 RM Vsd Wsd - - SSE_MULSD F=SSE2 +NP.0f5a RM Vpd Wq - - SSE_CVTPS2PD F=SSE2 +66.0f5a RM Vps Wpd - - SSE_CVTPD2PS F=SSE2 +F3.0f5a RM Vsd Vss - - SSE_CVTSS2SD F=SSE2 +F2.0f5a RM Vss Vsd - - SSE_CVTSD2SS F=SSE2 +NP.0f5b RM Vps Wdq - - SSE_CVTDQ2PS F=SSE2 +66.0f5b RM Vdq Wps - - SSE_CVTPS2DQ F=SSE2 +F3.0f5b RM Vdq Wps - - SSE_CVTTPS2DQ F=SSE2 +NP.0f5c RM Vps Wps - - SSE_SUBPS F=SSE +66.0f5c RM Vpd Wpd - - SSE_SUBPD F=SSE2 +F3.0f5c RM Vss Wss - - SSE_SUBSS F=SSE +F2.0f5c RM Vsd Wsd - - SSE_SUBSD F=SSE2 +NP.0f5d RM Vps Wps - - SSE_MINPS F=SSE +66.0f5d RM Vpd Wpd - - SSE_MINPD F=SSE2 +F3.0f5d RM Vss Wss - - SSE_MINSS F=SSE +F2.0f5d RM Vsd Wsd - - SSE_MINSD F=SSE2 +NP.0f5e RM Vps Wps - - SSE_DIVPS F=SSE +66.0f5e RM Vpd Wpd - - SSE_DIVPD F=SSE2 +F3.0f5e RM Vss Wss - - SSE_DIVSS F=SSE +F2.0f5e RM Vsd Wsd - - SSE_DIVSD F=SSE2 +NP.0f5f RM Vps Wps - - SSE_MAXPS F=SSE +66.0f5f RM Vpd Wpd - - SSE_MAXPD F=SSE2 +F3.0f5f RM Vss Wss - - SSE_MAXSS F=SSE +F2.0f5f RM Vsd Wsd - - SSE_MAXSD F=SSE2 +66.0f60 RM Vx Wx - - SSE_PUNPCKLBW F=SSE2 +66.0f61 RM Vx Wx - - SSE_PUNPCKLWD F=SSE2 +66.0f62 RM Vx Wx - - SSE_PUNPCKLDQ F=SSE2 +66.0f63 RM Vx Wx - - SSE_PACKSSWB F=SSE2 +66.0f64 RM Vx Wx - - SSE_PCMPGTB F=SSE2 +66.0f65 RM Vx Wx - - SSE_PCMPGTW F=SSE2 +66.0f66 RM Vx Wx - - SSE_PCMPGTD F=SSE2 +66.0f67 RM Vx Wx - - SSE_PACKUSWB F=SSE2 +66.0f68 RM Vx Wx - - SSE_PUNPCKHBW F=SSE2 +66.0f69 RM Vx Wx - - SSE_PUNPCKHWD F=SSE2 +66.0f6a RM Vx Wx - - SSE_PUNPCKHDQ F=SSE2 +66.0f6b RM Vx Wx - - SSE_PACKSSDW F=SSE2 +66.0f6c RM Vx Wx - - SSE_PUNPCKLQDQ F=SSE2 +66.0f6d RM Vx Wx - - SSE_PUNPCKHQDQ F=SSE2 +66.W0.0f6e RM Vx Ey - - SSE_MOVD F=SSE2 ENC_NOSZ +66.W1.0f6e RM Vx Ey - - SSE_MOVQ F=SSE2 ENC_NOSZ +66.0f6f RM Vx Wx - - SSE_MOVDQA F=SSE2 +F3.0f6f RM Vx Wx - - SSE_MOVDQU F=SSE2 +66.0f70 RMI Vx Wx Ib - SSE_PSHUFD F=SSE2 +F3.0f70 RMI Vx Wx Ib - SSE_PSHUFHW F=SSE2 +F2.0f70 RMI Vx Wx Ib - SSE_PSHUFLW F=SSE2 +66.0f71/2r MI Ux Ib - - SSE_PSRLW F=SSE2 +66.0f71/4r MI Ux Ib - - SSE_PSRAW F=SSE2 +66.0f71/6r MI Ux Ib - - SSE_PSLLW F=SSE2 +66.0f72/2r MI Ux Ib - - SSE_PSRLD F=SSE2 +66.0f72/4r MI Ux Ib - - SSE_PSRAD F=SSE2 +66.0f72/6r MI Ux Ib - - SSE_PSLLD F=SSE2 +66.0f73/2r MI Ux Ib - - SSE_PSRLQ F=SSE2 +66.0f73/3r MI Ux Ib - - SSE_PSRLDQ F=SSE2 +66.0f73/6r MI Ux Ib - - SSE_PSLLQ F=SSE2 +66.0f73/7r MI Ux Ib - - SSE_PSLLDQ F=SSE2 +66.0f74 RM Vx Wx - - SSE_PCMPEQB F=SSE2 +66.0f75 RM Vx Wx - - SSE_PCMPEQW F=SSE2 +66.0f76 RM Vx Wx - - SSE_PCMPEQD F=SSE2 # EXTRQ/INSERTQ immediate size handled in code. -66.0f78/0r MI XMM IMM16 - - SSE_EXTRQ ONLYAMD -F2.0f78/r RMI XMM XMM IMM16 - SSE_INSERTQ ONLYAMD -66.0f79/r RM XMM XMM - - SSE_EXTRQ ONLYAMD -F2.0f79/r RM XMM XMM - - SSE_INSERTQ ONLYAMD -66.0f7c RM XMM XMM - - SSE_HADDPD -F2.0f7c RM XMM XMM - - SSE_HADDPS -66.0f7d RM XMM XMM - - SSE_HSUBPD -F2.0f7d RM XMM XMM - - SSE_HSUBPS -66.W0.0f7e MR GP32 XMM32 - - SSE_MOVD -66.W1.0f7e MR GP64 XMM64 - - SSE_MOVQ -F3.0f7e RM XMM XMM64 - - SSE_MOVQ -66.0f7f MR XMM XMM - - SSE_MOVDQA -F3.0f7f MR XMM XMM - - SSE_MOVDQU -NP.0fae/0m M MEMZ - - - FXSAVE INSTR_WIDTH -NP.0fae/1m M MEMZ - - - FXRSTOR INSTR_WIDTH -NP.0fae/2m M MEM32 - - - LDMXCSR -NP.0fae/3m M MEM32 - - - STMXCSR -NP.0fae/5r NP - - - - LFENCE -NP.0fae/6r NP - - - - MFENCE -NP.0fae/7r NP - - - - SFENCE -NP.0fc2 RMI XMM XMM IMM8 - SSE_CMPPS -66.0fc2 RMI XMM XMM IMM8 - SSE_CMPPD -F3.0fc2 RMI XMM XMM32 IMM8 - SSE_CMPSS -F2.0fc2 RMI XMM XMM64 IMM8 - SSE_CMPSD -66.0fc4 RMI XMM GP16 IMM8 - SSE_PINSRW -66.0fc5/r RMI GP XMM IMM8 - SSE_PEXTRW DEF64 -NP.0fc6 RMI XMM XMM IMM8 - SSE_SHUFPS -66.0fc6 RMI XMM XMM IMM8 - SSE_SHUFPD -66.0fd0 RM XMM XMM - - SSE_ADDSUBPD -F2.0fd0 RM XMM XMM - - SSE_ADDSUBPS -66.0fd1 RM XMM XMM - - SSE_PSRLW -66.0fd2 RM XMM XMM - - SSE_PSRLD -66.0fd3 RM XMM XMM - - SSE_PSRLQ -66.0fd4 RM XMM XMM - - SSE_PADDQ -66.0fd5 RM XMM XMM - - SSE_PMULLW +66.0f78/0r MI Ux Iw - - SSE_EXTRQ F=SSE4A ONLYAMD +F2.0f78/r RMI Vx Wx Iw - SSE_INSERTQ F=SSE4A ONLYAMD +66.0f79/r RM Vx Wx - - SSE_EXTRQ F=SSE4A ONLYAMD +F2.0f79/r RM Vx Wx - - SSE_INSERTQ F=SSE4A ONLYAMD +66.0f7c RM Vx Wx - - SSE_HADDPD F=SSE3 +F2.0f7c RM Vx Wx - - SSE_HADDPS F=SSE3 +66.0f7d RM Vx Wx - - SSE_HSUBPD F=SSE3 +F2.0f7d RM Vx Wx - - SSE_HSUBPS F=SSE3 +66.W0.0f7e MR Ey Vy - - SSE_MOVD F=SSE2 ENC_NOSZ +66.W1.0f7e MR Ey Vy - - SSE_MOVQ F=SSE2 ENC_NOSZ +F3.0f7e RM Vx Wq - - SSE_MOVQ F=SSE2 +66.0f7f MR Wx Vx - - SSE_MOVDQA F=SSE2 +F3.0f7f MR Wx Vx - - SSE_MOVDQU F=SSE2 +NP.0fae/0m M M - - - FXSAVE+w F=FXSR +NP.0fae/1m M M - - - FXRSTOR+w F=FXSR +NP.0fae/2m M Md - - - LDMXCSR F=SSE +NP.0fae/3m M Md - - - STMXCSR F=SSE +NP.0fae/5r NP - - - - LFENCE F=SSE2 +NP.0fae/6r NP - - - - MFENCE F=SSE2 +NP.0fae/7r NP - - - - SFENCE F=SSE +NP.0fc2 RMI Vps Wps Ib - SSE_CMPPS F=SSE +66.0fc2 RMI Vpd Wpd Ib - SSE_CMPPD F=SSE2 +F3.0fc2 RMI Vss Wss Ib - SSE_CMPSS F=SSE +F2.0fc2 RMI Vsd Wsd Ib - SSE_CMPSD F=SSE2 +66.0fc4 RMI Vdq Ey Ib - SSE_PINSRW F=SSE2 ENC_NOSZ +66.0fc5/r RMI Gy Udq Ib - SSE_PEXTRW D64 F=SSE2 ENC_NOSZ +NP.0fc6 RMI Vps Wps Ib - SSE_SHUFPS F=SSE +66.0fc6 RMI Vpd Wpd Ib - SSE_SHUFPD F=SSE2 +66.0fd0 RM Vps Wps - - SSE_ADDSUBPD F=SSE3 +F2.0fd0 RM Vpd Wpd - - SSE_ADDSUBPS F=SSE3 +66.0fd1 RM Vx Wx - - SSE_PSRLW F=SSE2 +66.0fd2 RM Vx Wx - - SSE_PSRLD F=SSE2 +66.0fd3 RM Vx Wx - - SSE_PSRLQ F=SSE2 +66.0fd4 RM Vx Wx - - SSE_PADDQ F=SSE2 +66.0fd5 RM Vx Wx - - SSE_PMULLW F=SSE2 # This is tricky, MOVQ to mem writes 64 bits, MOVQ to reg writes 128 bits -66.0fd6 MR XMM64 XMM64 - - SSE_MOVQ -66.0fd7/r RM GP XMM - - SSE_PMOVMSKB DEF64 -66.0fd8 RM XMM XMM - - SSE_PSUBUSB -66.0fd9 RM XMM XMM - - SSE_PSUBUSW -66.0fda RM XMM XMM - - SSE_PMINUB -66.0fdb RM XMM XMM - - SSE_PAND -66.0fdc RM XMM XMM - - SSE_PADDUSB -66.0fdd RM XMM XMM - - SSE_PADDUSW -66.0fde RM XMM XMM - - SSE_PMAXUB -66.0fdf RM XMM XMM - - SSE_PANDN -66.0fe0 RM XMM XMM - - SSE_PAVGB -66.0fe1 RM XMM XMM - - SSE_PSRAW -66.0fe2 RM XMM XMM - - SSE_PSRAD -66.0fe3 RM XMM XMM - - SSE_PAVGW -66.0fe4 RM XMM XMM - - SSE_PMULHUW -66.0fe5 RM XMM XMM - - SSE_PMULHW -66.0fe6 RM XMM XMM - - SSE_CVTTPD2DQ -F3.0fe6 RM XMM XMM64 - - SSE_CVTDQ2PD -F2.0fe6 RM XMM XMM - - SSE_CVTPD2DQ -66.0fe7/m MR MEMV XMM - - SSE_MOVNTDQ -66.0fe8 RM XMM XMM - - SSE_PSUBSB -66.0fe9 RM XMM XMM - - SSE_PSUBSW -66.0feb RM XMM XMM - - SSE_POR -66.0fec RM XMM XMM - - SSE_PADDSB -66.0fea RM XMM XMM - - SSE_PMINSW -66.0fee RM XMM XMM - - SSE_PMAXSW -66.0fed RM XMM XMM - - SSE_PADDSW -66.0fef RM XMM XMM - - SSE_PXOR -F2.0ff0/m RM XMM MEMV - - SSE_LDDQU -66.0ff1 RM XMM XMM - - SSE_PSLLW -66.0ff2 RM XMM XMM - - SSE_PSLLD -66.0ff3 RM XMM XMM - - SSE_PSLLQ -66.0ff4 RM XMM XMM - - SSE_PMULUDQ -66.0ff5 RM XMM XMM - - SSE_PMADDWD -66.0ff6 RM XMM XMM - - SSE_PSADBW -66.0ff7/r RM XMM XMM - - SSE_MASKMOVDQU -66.0ff8 RM XMM XMM - - SSE_PSUBB -66.0ff9 RM XMM XMM - - SSE_PSUBW -66.0ffa RM XMM XMM - - SSE_PSUBD -66.0ffb RM XMM XMM - - SSE_PSUBQ -66.0ffc RM XMM XMM - - SSE_PADDB -66.0ffd RM XMM XMM - - SSE_PADDW -66.0ffe RM XMM XMM - - SSE_PADDD +66.0fd6 MR Wq Vq - - SSE_MOVQ F=SSE2 +66.0fd7/r RM Gy Ux - - SSE_PMOVMSKB D64 F=SSE2 +66.0fd8 RM Vx Wx - - SSE_PSUBUSB F=SSE2 +66.0fd9 RM Vx Wx - - SSE_PSUBUSW F=SSE2 +66.0fda RM Vx Wx - - SSE_PMINUB F=SSE2 +66.0fdb RM Vx Wx - - SSE_PAND F=SSE2 +66.0fdc RM Vx Wx - - SSE_PADDUSB F=SSE2 +66.0fdd RM Vx Wx - - SSE_PADDUSW F=SSE2 +66.0fde RM Vx Wx - - SSE_PMAXUB F=SSE2 +66.0fdf RM Vx Wx - - SSE_PANDN F=SSE2 +66.0fe0 RM Vx Wx - - SSE_PAVGB F=SSE2 +66.0fe1 RM Vx Wx - - SSE_PSRAW F=SSE2 +66.0fe2 RM Vx Wx - - SSE_PSRAD F=SSE2 +66.0fe3 RM Vx Wx - - SSE_PAVGW F=SSE2 +66.0fe4 RM Vx Wx - - SSE_PMULHUW F=SSE2 +66.0fe5 RM Vx Wx - - SSE_PMULHW F=SSE2 +66.0fe6 RM Vx Wpd - - SSE_CVTTPD2DQ F=SSE2 +F3.0fe6 RM Vpd Wq - - SSE_CVTDQ2PD F=SSE2 +F2.0fe6 RM Vx Wpd - - SSE_CVTPD2DQ F=SSE2 +66.0fe7/m MR Mx Vx - - SSE_MOVNTDQ F=SSE2 +66.0fe8 RM Vx Wx - - SSE_PSUBSB F=SSE2 +66.0fe9 RM Vx Wx - - SSE_PSUBSW F=SSE2 +66.0feb RM Vx Wx - - SSE_POR F=SSE2 +66.0fec RM Vx Wx - - SSE_PADDSB F=SSE2 +66.0fea RM Vx Wx - - SSE_PMINSW F=SSE2 +66.0fee RM Vx Wx - - SSE_PMAXSW F=SSE2 +66.0fed RM Vx Wx - - SSE_PADDSW F=SSE2 +66.0fef RM Vx Wx - - SSE_PXOR F=SSE2 +F2.0ff0/m RM Vx Mx - - SSE_LDDQU F=SSE3 +66.0ff1 RM Vx Wx - - SSE_PSLLW F=SSE2 +66.0ff2 RM Vx Wx - - SSE_PSLLD F=SSE2 +66.0ff3 RM Vx Wx - - SSE_PSLLQ F=SSE2 +66.0ff4 RM Vx Wx - - SSE_PMULUDQ F=SSE2 +66.0ff5 RM Vx Wx - - SSE_PMADDWD F=SSE2 +66.0ff6 RM Vx Wx - - SSE_PSADBW F=SSE2 +66.0ff7/r RM Vx Wx - - SSE_MASKMOVDQU F=SSE2 +66.0ff8 RM Vx Wx - - SSE_PSUBB F=SSE2 +66.0ff9 RM Vx Wx - - SSE_PSUBW F=SSE2 +66.0ffa RM Vx Wx - - SSE_PSUBD F=SSE2 +66.0ffb RM Vx Wx - - SSE_PSUBQ F=SSE2 +66.0ffc RM Vx Wx - - SSE_PADDB F=SSE2 +66.0ffd RM Vx Wx - - SSE_PADDW F=SSE2 +66.0ffe RM Vx Wx - - SSE_PADDD F=SSE2 # -66.0f3800 RM XMM XMM - - SSE_PSHUFB -66.0f3801 RM XMM XMM - - SSE_PHADDW -66.0f3802 RM XMM XMM - - SSE_PHADDD -66.0f3803 RM XMM XMM - - SSE_PHADDSW -66.0f3804 RM XMM XMM - - SSE_PMADDUBSW -66.0f3805 RM XMM XMM - - SSE_PHSUBW -66.0f3806 RM XMM XMM - - SSE_PHSUBD -66.0f3807 RM XMM XMM - - SSE_PHSUBSW -66.0f3808 RM XMM XMM - - SSE_PSIGNB -66.0f3809 RM XMM XMM - - SSE_PSIGNW -66.0f380a RM XMM XMM - - SSE_PSIGND -66.0f380b RM XMM XMM - - SSE_PMULHRSW -66.0f3810 RM XMM XMM - - SSE_PBLENDVB -66.0f3814 RMA XMM XMM XMM - SSE_BLENDVPS -66.0f3815 RMA XMM XMM XMM - SSE_BLENDVPD -66.0f3817 RM XMM XMM - - SSE_PTEST -66.0f381c RM XMM XMM - - SSE_PABSB -66.0f381d RM XMM XMM - - SSE_PABSW -66.0f381e RM XMM XMM - - SSE_PABSD -66.0f3820 RM XMM XMM - - SSE_PMOVSXBW -66.0f3821 RM XMM XMM - - SSE_PMOVSXBD -66.0f3822 RM XMM XMM - - SSE_PMOVSXBQ -66.0f3823 RM XMM XMM - - SSE_PMOVSXWD -66.0f3824 RM XMM XMM - - SSE_PMOVSXWQ -66.0f3825 RM XMM XMM - - SSE_PMOVSXDQ -66.0f3828 RM XMM XMM - - SSE_PMULDQ -66.0f3829 RM XMM XMM - - SSE_PCMPEQQ -66.0f382a/m RM XMM MEMV - - SSE_MOVNTDQA -66.0f382b RM XMM XMM - - SSE_PACKUSDW -66.0f3830 RM XMM XMM - - SSE_PMOVZXBW -66.0f3831 RM XMM XMM - - SSE_PMOVZXBD -66.0f3832 RM XMM XMM - - SSE_PMOVZXBQ -66.0f3833 RM XMM XMM - - SSE_PMOVZXWD -66.0f3834 RM XMM XMM - - SSE_PMOVZXWQ -66.0f3835 RM XMM XMM - - SSE_PMOVZXDQ -66.0f3837 RM XMM XMM - - SSE_PCMPGTQ -66.0f3838 RM XMM XMM - - SSE_PMINSB -66.0f3839 RM XMM XMM - - SSE_PMINSD -66.0f383a RM XMM XMM - - SSE_PMINUW -66.0f383b RM XMM XMM - - SSE_PMINUD -66.0f383c RM XMM XMM - - SSE_PMAXSB -66.0f383d RM XMM XMM - - SSE_PMAXSD -66.0f383e RM XMM XMM - - SSE_PMAXUW -66.0f383f RM XMM XMM - - SSE_PMAXUD -66.0f3840 RM XMM XMM - - SSE_PMULLD -66.0f3841 RM XMM XMM - - SSE_PHMINPOSUW +66.0f3800 RM Vx Wx - - SSE_PSHUFB F=SSSE3 +66.0f3801 RM Vx Wx - - SSE_PHADDW F=SSSE3 +66.0f3802 RM Vx Wx - - SSE_PHADDD F=SSSE3 +66.0f3803 RM Vx Wx - - SSE_PHADDSW F=SSSE3 +66.0f3804 RM Vx Wx - - SSE_PMADDUBSW F=SSSE3 +66.0f3805 RM Vx Wx - - SSE_PHSUBW F=SSSE3 +66.0f3806 RM Vx Wx - - SSE_PHSUBD F=SSSE3 +66.0f3807 RM Vx Wx - - SSE_PHSUBSW F=SSSE3 +66.0f3808 RM Vx Wx - - SSE_PSIGNB F=SSSE3 +66.0f3809 RM Vx Wx - - SSE_PSIGNW F=SSSE3 +66.0f380a RM Vx Wx - - SSE_PSIGND F=SSSE3 +66.0f380b RM Vx Wx - - SSE_PMULHRSW F=SSSE3 +66.0f3810 RM Vdq Wdq - - SSE_PBLENDVB F=SSE41 +66.0f3814 RMA Vdq Wdq Udq - SSE_BLENDVPS F=SSE41 +66.0f3815 RMA Vdq Wdq Udq - SSE_BLENDVPD F=SSE41 +66.0f3817 RM Vx Wx - - SSE_PTEST F=SSE41 EFL=0--0m00m +66.0f381c RM Vx Wx - - SSE_PABSB F=SSSE3 +66.0f381d RM Vx Wx - - SSE_PABSW F=SSSE3 +66.0f381e RM Vx Wx - - SSE_PABSD F=SSSE3 +66.0f3820 RM Vx Wx - - SSE_PMOVSXBW F=SSE41 +66.0f3821 RM Vx Wx - - SSE_PMOVSXBD F=SSE41 +66.0f3822 RM Vx Wx - - SSE_PMOVSXBQ F=SSE41 +66.0f3823 RM Vx Wx - - SSE_PMOVSXWD F=SSE41 +66.0f3824 RM Vx Wx - - SSE_PMOVSXWQ F=SSE41 +66.0f3825 RM Vx Wx - - SSE_PMOVSXDQ F=SSE41 +66.0f3828 RM Vx Wx - - SSE_PMULDQ F=SSE41 +66.0f3829 RM Vx Wx - - SSE_PCMPEQQ F=SSE41 +66.0f382a/m RM Vx Mx - - SSE_MOVNTDQA F=SSE41 +66.0f382b RM Vx Wx - - SSE_PACKUSDW F=SSE41 +66.0f3830 RM Vx Wx - - SSE_PMOVZXBW F=SSE41 +66.0f3831 RM Vx Wx - - SSE_PMOVZXBD F=SSE41 +66.0f3832 RM Vx Wx - - SSE_PMOVZXBQ F=SSE41 +66.0f3833 RM Vx Wx - - SSE_PMOVZXWD F=SSE41 +66.0f3834 RM Vx Wx - - SSE_PMOVZXWQ F=SSE41 +66.0f3835 RM Vx Wx - - SSE_PMOVZXDQ F=SSE41 +66.0f3837 RM Vx Wx - - SSE_PCMPGTQ F=SSE41 +66.0f3838 RM Vx Wx - - SSE_PMINSB F=SSE41 +66.0f3839 RM Vx Wx - - SSE_PMINSD F=SSE41 +66.0f383a RM Vx Wx - - SSE_PMINUW F=SSE41 +66.0f383b RM Vx Wx - - SSE_PMINUD F=SSE41 +66.0f383c RM Vx Wx - - SSE_PMAXSB F=SSE41 +66.0f383d RM Vx Wx - - SSE_PMAXSD F=SSE41 +66.0f383e RM Vx Wx - - SSE_PMAXUW F=SSE41 +66.0f383f RM Vx Wx - - SSE_PMAXUD F=SSE41 +66.0f3840 RM Vx Wx - - SSE_PMULLD F=SSE41 +66.0f3841 RM Vx Wx - - SSE_PHMINPOSUW F=SSE41 # TODO: GP operand has address size -66.0f38f8/m RM GP MEM512 - - MOVDIR64B DEF64 -NP.0f38f9/m MR MEM GP - - MOVDIRI +66.0f38f8/m RM Gy Moq - - MOVDIR64B D64 F=MOVDIR64B +NP.0f38f9/m MR My Gy - - MOVDIRI F=MOVDIRI # -66.0f3a08 RMI XMM XMM IMM8 - SSE_ROUNDPS -66.0f3a09 RMI XMM XMM IMM8 - SSE_ROUNDPD -66.0f3a0a RMI XMM32 XMM32 IMM8 - SSE_ROUNDSS -66.0f3a0b RMI XMM64 XMM64 IMM8 - SSE_ROUNDSD -66.0f3a0c RMI XMM XMM IMM8 - SSE_BLENDPS -66.0f3a0d RMI XMM XMM IMM8 - SSE_BLENDPD -66.0f3a0e RMI XMM XMM IMM8 - SSE_PBLENDW -66.0f3a0f RMI XMM XMM IMM8 - SSE_PALIGNR -66.0f3a14/m MRI GP8 XMM IMM8 - SSE_PEXTRB -66.0f3a14/r MRI GP32 XMM IMM8 - SSE_PEXTRB -66.0f3a15/m MRI GP16 XMM IMM8 - SSE_PEXTRW -66.0f3a15/r MRI GP32 XMM IMM8 - SSE_PEXTRW -66.W0.0f3a16 MRI GP32 XMM IMM8 - SSE_PEXTRD -66.W1.0f3a16 MRI GP64 XMM IMM8 - SSE_PEXTRQ -66.0f3a17 MRI GP32 XMM IMM8 - SSE_EXTRACTPS -66.0f3a20 RMI XMM GP8 IMM8 - SSE_PINSRB -66.0f3a21 RMI XMM XMM32 IMM8 - SSE_INSERTPS -66.W0.0f3a22 RMI XMM GP32 IMM8 - SSE_PINSRD -66.W1.0f3a22 RMI XMM GP64 IMM8 - SSE_PINSRQ -66.0f3a40 RMI XMM XMM IMM8 - SSE_DPPS -66.0f3a41 RMI XMM XMM IMM8 - SSE_DPPD -66.0f3a42 RMI XMM XMM IMM8 - SSE_MPSADBW -66.0f3a44 RMI XMM XMM IMM8 - SSE_PCLMULQDQ -66.0f3a60 RMI XMM XMM IMM8 - SSE_PCMPESTRM -66.0f3a61 RMI XMM XMM IMM8 - SSE_PCMPESTRI -66.0f3a62 RMI XMM XMM IMM8 - SSE_PCMPISTRM -66.0f3a63 RMI XMM XMM IMM8 - SSE_PCMPISTRI +66.0f3a08 RMI Vps Wps Ib - SSE_ROUNDPS F=SSE41 +66.0f3a09 RMI Vpd Wpd Ib - SSE_ROUNDPD F=SSE41 +66.0f3a0a RMI Vss Wss Ib - SSE_ROUNDSS F=SSE41 +66.0f3a0b RMI Vsd Wsd Ib - SSE_ROUNDSD F=SSE41 +66.0f3a0c RMI Vps Wps Ib - SSE_BLENDPS F=SSE41 +66.0f3a0d RMI Vpd Wpd Ib - SSE_BLENDPD F=SSE41 +66.0f3a0e RMI Vx Wx Ib - SSE_PBLENDW F=SSE41 +66.0f3a0f RMI Vx Wx Ib - SSE_PALIGNR F=SSSE3 +66.0f3a14/m MRI Mb Vx Ib - SSE_PEXTRB F=SSE41 +66.0f3a14/r MRI Ry Vx Ib - SSE_PEXTRB F=SSE41 ENC_NOSZ +66.0f3a15/m MRI Mw Vx Ib - SSE_PEXTRW F=SSE41 +66.0f3a15/r MRI Ry Vx Ib - SSE_PEXTRW F=SSE41 ENC_NOSZ +66.W0.0f3a16 MRI Ey Vx Ib - SSE_PEXTRD F=SSE41 ENC_NOSZ +66.W1.0f3a16 MRI Ey Vx Ib - SSE_PEXTRQ F=SSE41 ENC_NOSZ +66.0f3a17 MRI Ed Vx Ib - SSE_EXTRACTPS F=SSE41 +66.0f3a20 RMI Vx Eb Ib - SSE_PINSRB F=SSE41 +66.0f3a21 RMI Vps Wss Ib - SSE_INSERTPS F=SSE41 +66.W0.0f3a22 RMI Vx Ey Ib - SSE_PINSRD F=SSE41 ENC_NOSZ +66.W1.0f3a22 RMI Vx Ey Ib - SSE_PINSRQ F=SSE41 ENC_NOSZ +66.0f3a40 RMI Vps Wps Ib - SSE_DPPS F=SSE41 +66.0f3a41 RMI Vpd Wpd Ib - SSE_DPPD F=SSE41 +66.0f3a42 RMI Vx Wx Ib - SSE_MPSADBW F=SSE41 +66.0f3a44 RMI Vdq Wdq Ib - SSE_PCLMULQDQ F=PCLMULQDQ +66.0f3a60 RMI Vdq Wdq Ib - SSE_PCMPESTRM F=SSE42 EFL=m--mm00m +66.0f3a61 RMI Vdq Wdq Ib - SSE_PCMPESTRI F=SSE42 EFL=m--mm00m +66.0f3a62 RMI Vdq Wdq Ib - SSE_PCMPISTRM F=SSE42 EFL=m--mm00m +66.0f3a63 RMI Vdq Wdq Ib - SSE_PCMPISTRI F=SSE42 EFL=m--mm00m # -66.0f38db RM XMM XMM - - AESIMC -66.0f38dc RM XMM XMM - - AESENC -66.0f38dd RM XMM XMM - - AESENCLAST -66.0f38de RM XMM XMM - - AESDEC -66.0f38df RM XMM XMM - - AESDECLAST -66.0f3adf RMI XMM XMM IMM8 - AESKEYGENASSIST -VEX.66.L0.0f38db RM XMM XMM - - VAESIMC -VEX.66.L0.0f38dc RVM XMM XMM XMM - VAESENC -VEX.66.L0.0f38dd RVM XMM XMM XMM - VAESENCLAST -VEX.66.L0.0f38de RVM XMM XMM XMM - VAESDEC -VEX.66.L0.0f38df RVM XMM XMM XMM - VAESDECLAST -VEX.66.L0.0f3adf RMI XMM XMM IMM8 - VAESKEYGENASSIST +66.0f38db RM Vdq Wdq - - AESIMC F=AESNI +66.0f38dc RM Vdq Wdq - - AESENC F=AESNI +66.0f38dd RM Vdq Wdq - - AESENCLAST F=AESNI +66.0f38de RM Vdq Wdq - - AESDEC F=AESNI +66.0f38df RM Vdq Wdq - - AESDECLAST F=AESNI +66.0f3adf RMI Vdq Wdq Ib - AESKEYGENASSIST F=AESNI +VEX.66.L0.0f38db RM Vdq Wdq - - VAESIMC F=AESNI,AVX +VEX.66.L0.0f38dc RVM Vdq Hdq Wdq - VAESENC F=AESNI,AVX +VEX.66.L0.0f38dd RVM Vdq Hdq Wdq - VAESENCLAST F=AESNI,AVX +VEX.66.L0.0f38de RVM Vdq Hdq Wdq - VAESDEC F=AESNI,AVX +VEX.66.L0.0f38df RVM Vdq Hdq Wdq - VAESDECLAST F=AESNI,AVX +VEX.66.L0.0f3adf RMI Vdq Wdq Ib - VAESKEYGENASSIST F=AESNI,AVX # # AVX -VEX.NP.0f10 RM XMM XMM - - VMOVUPS -VEX.66.0f10 RM XMM XMM - - VMOVUPD -VEX.F3.LIG.0f10/m RM XMM128 XMM32 - - VMOVSS -VEX.F3.LIG.0f10/r RVM XMM128 XMM128 XMM32 - VMOVSS -VEX.F2.LIG.0f10/m RM XMM128 XMM64 - - VMOVSD -VEX.F2.LIG.0f10/r RVM XMM128 XMM128 XMM64 - VMOVSD -VEX.NP.0f11 MR XMM XMM - - VMOVUPS -VEX.66.0f11 MR XMM XMM - - VMOVUPD -VEX.F3.LIG.0f11/m MR XMM32 XMM32 - - VMOVSS -VEX.F3.LIG.0f11/r MVR XMM128 XMM128 XMM32 - VMOVSS -VEX.F2.LIG.0f11/m MR XMM64 XMM64 - - VMOVSD -VEX.F2.LIG.0f11/r MVR XMM128 XMM XMM64 - VMOVSD -VEX.NP.L0.0f12/m RVM XMM XMM XMM64 - VMOVLPS -VEX.NP.L0.0f12/r RVM XMM XMM XMM - VMOVHLPS -VEX.66.L0.0f12/m RVM XMM XMM XMM64 - VMOVLPD -VEX.F2.L0.0f12 RM XMM XMM64 - - VMOVDDUP -VEX.F2.L1.0f12 RM XMM XMM - - VMOVDDUP -VEX.F3.0f12 RM XMM XMM - - VMOVSLDUP -VEX.NP.L0.0f13/m MR MEM64 XMM - - VMOVLPS -VEX.66.L0.0f13/m MR MEM64 XMM - - VMOVLPD -VEX.NP.0f14 RVM XMM XMM XMM - VUNPCKLPS -VEX.66.0f14 RVM XMM XMM XMM - VUNPCKLPD -VEX.NP.0f15 RVM XMM XMM XMM - VUNPCKHPS -VEX.66.0f15 RVM XMM XMM XMM - VUNPCKHPD -VEX.NP.L0.0f16/m RVM XMM XMM64 XMM64 - VMOVHPS -VEX.NP.L0.0f16/r RVM XMM XMM64 XMM64 - VMOVLHPS -VEX.66.L0.0f16/m RVM XMM XMM64 XMM64 - VMOVHPD -VEX.F3.0f16 RM XMM XMM - - VMOVSHDUP -VEX.NP.L0.0f17/m MR MEM64 XMM - - VMOVHPS -VEX.66.L0.0f17/m MR MEM64 XMM - - VMOVHPD -VEX.NP.0f28 RM XMM XMM - - VMOVAPS -VEX.66.0f28 RM XMM XMM - - VMOVAPD -VEX.NP.0f29 MR XMM XMM - - VMOVAPS -VEX.66.0f29 MR XMM XMM - - VMOVAPD -VEX.F3.LIG.0f2a RVM XMM128 XMM128 GP - VCVTSI2SS -VEX.F2.LIG.0f2a RVM XMM128 XMM128 GP - VCVTSI2SD -VEX.NP.0f2b/m MR MEMV XMM - - VMOVNTPS -VEX.66.0f2b/m MR MEMV XMM - - VMOVNTPD -VEX.F3.LIG.0f2c RM GP XMM32 - - VCVTTSS2SI -VEX.F2.LIG.0f2c RM GP XMM64 - - VCVTTSD2SI -VEX.F3.LIG.0f2d RM GP XMM32 - - VCVTSS2SI -VEX.F2.LIG.0f2d RM GP XMM64 - - VCVTSD2SI -VEX.NP.LIG.0f2e RM XMM32 XMM32 - - VUCOMISS -VEX.66.LIG.0f2e RM XMM64 XMM64 - - VUCOMISD -VEX.NP.LIG.0f2f RM XMM32 XMM32 - - VCOMISS -VEX.66.LIG.0f2f RM XMM64 XMM64 - - VCOMISD -VEX.NP.0f50/r RM GP XMM - - VMOVMSKPS DEF64 -VEX.66.0f50/r RM GP XMM - - VMOVMSKPD DEF64 -VEX.NP.0f51 RM XMM XMM - - VSQRTPS -VEX.66.0f51 RM XMM XMM - - VSQRTPD -VEX.F3.LIG.0f51 RVM XMM128 XMM128 XMM32 - VSQRTSS -VEX.F2.LIG.0f51 RVM XMM128 XMM128 XMM64 - VSQRTSD -VEX.NP.0f52 RM XMM XMM - - VRSQRTPS -VEX.F3.LIG.0f52 RVM XMM128 XMM128 XMM32 - VRSQRTSS -VEX.NP.0f53 RM XMM XMM - - VRCPPS -VEX.F3.LIG.0f53 RVM XMM128 XMM128 XMM32 - VRCPSS -VEX.NP.0f54 RVM XMM XMM XMM - VANDPS -VEX.66.0f54 RVM XMM XMM XMM - VANDPD -VEX.NP.0f55 RVM XMM XMM XMM - VANDNPS -VEX.66.0f55 RVM XMM XMM XMM - VANDNPD -VEX.NP.0f56 RVM XMM XMM XMM - VORPS -VEX.66.0f56 RVM XMM XMM XMM - VORPD -VEX.NP.0f57 RVM XMM XMM XMM - VXORPS -VEX.66.0f57 RVM XMM XMM XMM - VXORPD -VEX.NP.0f58 RVM XMM XMM XMM - VADDPS -VEX.66.0f58 RVM XMM XMM XMM - VADDPD -VEX.F3.LIG.0f58 RVM XMM128 XMM128 XMM32 - VADDSS -VEX.F2.LIG.0f58 RVM XMM128 XMM128 XMM64 - VADDSD -VEX.NP.0f59 RVM XMM XMM XMM - VMULPS -VEX.66.0f59 RVM XMM XMM XMM - VMULPD -VEX.F3.LIG.0f59 RVM XMM128 XMM128 XMM32 - VMULSS -VEX.F2.LIG.0f59 RVM XMM128 XMM128 XMM64 - VMULSD -VEX.NP.L0.0f5a RM XMM XMM64 - - VCVTPS2PD -VEX.NP.L1.0f5a RM XMM XMM128 - - VCVTPS2PD -VEX.66.0f5a RM XMM128 XMM - - VCVTPD2PS -VEX.F3.LIG.0f5a RVM XMM128 XMM128 XMM32 - VCVTSS2SD -VEX.F2.LIG.0f5a RVM XMM128 XMM128 XMM64 - VCVTSD2SS -VEX.NP.0f5b RM XMM XMM - - VCVTDQ2PS -VEX.66.0f5b RM XMM XMM - - VCVTPS2DQ -VEX.F3.0f5b RM XMM XMM - - VCVTTPS2DQ -VEX.NP.0f5c RVM XMM XMM XMM - VSUBPS -VEX.66.0f5c RVM XMM XMM XMM - VSUBPD -VEX.F3.LIG.0f5c RVM XMM128 XMM128 XMM32 - VSUBSS -VEX.F2.LIG.0f5c RVM XMM128 XMM128 XMM64 - VSUBSD -VEX.NP.0f5d RVM XMM XMM XMM - VMINPS -VEX.66.0f5d RVM XMM XMM XMM - VMINPD -VEX.F3.LIG.0f5d RVM XMM128 XMM128 XMM32 - VMINSS -VEX.F2.LIG.0f5d RVM XMM128 XMM128 XMM64 - VMINSD -VEX.NP.0f5e RVM XMM XMM XMM - VDIVPS -VEX.66.0f5e RVM XMM XMM XMM - VDIVPD -VEX.F3.LIG.0f5e RVM XMM128 XMM128 XMM32 - VDIVSS -VEX.F2.LIG.0f5e RVM XMM128 XMM128 XMM64 - VDIVSD -VEX.NP.0f5f RVM XMM XMM XMM - VMAXPS -VEX.66.0f5f RVM XMM XMM XMM - VMAXPD -VEX.F3.LIG.0f5f RVM XMM128 XMM128 XMM32 - VMAXSS -VEX.F2.LIG.0f5f RVM XMM128 XMM128 XMM64 - VMAXSD -VEX.66.0f60 RVM XMM XMM XMM - VPUNPCKLBW -VEX.66.0f61 RVM XMM XMM XMM - VPUNPCKLWD -VEX.66.0f62 RVM XMM XMM XMM - VPUNPCKLDQ -VEX.66.0f63 RVM XMM XMM XMM - VPACKSSWB -VEX.66.0f64 RVM XMM XMM XMM - VPCMPGTB -VEX.66.0f65 RVM XMM XMM XMM - VPCMPGTW -VEX.66.0f66 RVM XMM XMM XMM - VPCMPGTD -VEX.66.0f67 RVM XMM XMM XMM - VPACKUSWB -VEX.66.0f68 RVM XMM XMM XMM - VPUNPCKHBW -VEX.66.0f69 RVM XMM XMM XMM - VPUNPCKHWD -VEX.66.0f6a RVM XMM XMM XMM - VPUNPCKHDQ -VEX.66.0f6b RVM XMM XMM XMM - VPACKSSDW -VEX.66.0f6c RVM XMM XMM XMM - VPUNPCKLQDQ -VEX.66.0f6d RVM XMM XMM XMM - VPUNPCKHQDQ -VEX.66.W0.L0.0f6e RM XMM32 GP - - VMOVD ENC_NOSZ -VEX.66.W1.L0.0f6e RM XMM32 GP - - VMOVD ONLY32 ENC_NOSZ -VEX.66.W1.L0.0f6e RM XMM64 GP - - VMOVQ ONLY64 ENC_NOSZ -VEX.66.0f6f RM XMM XMM - - VMOVDQA -VEX.F3.0f6f RM XMM XMM - - VMOVDQU -VEX.66.0f70 RMI XMM XMM IMM8 - VPSHUFD -VEX.F3.0f70 RMI XMM XMM IMM8 - VPSHUFHW -VEX.F2.0f70 RMI XMM XMM IMM8 - VPSHUFLW -VEX.66.0f71/2r VMI XMM XMM IMM8 - VPSRLW -VEX.66.0f71/4r VMI XMM XMM IMM8 - VPSRAW -VEX.66.0f71/6r VMI XMM XMM IMM8 - VPSLLW -VEX.66.0f72/2r VMI XMM XMM IMM8 - VPSRLD -VEX.66.0f72/4r VMI XMM XMM IMM8 - VPSRAD -VEX.66.0f72/6r VMI XMM XMM IMM8 - VPSLLD -VEX.66.0f73/2r VMI XMM XMM IMM8 - VPSRLQ -VEX.66.0f73/3r VMI XMM XMM IMM8 - VPSRLDQ -VEX.66.0f73/6r VMI XMM XMM IMM8 - VPSLLQ -VEX.66.0f73/7r VMI XMM XMM IMM8 - VPSLLDQ -VEX.66.0f74 RVM XMM XMM XMM - VPCMPEQB -VEX.66.0f75 RVM XMM XMM XMM - VPCMPEQW -VEX.66.0f76 RVM XMM XMM XMM - VPCMPEQD -VEX.NP.L0.0f77 NP - - - - VZEROUPPER -VEX.NP.L1.0f77 NP - - - - VZEROALL -VEX.66.0f7c RVM XMM XMM XMM - VHADDPD -VEX.F2.0f7c RVM XMM XMM XMM - VHADDPS -VEX.66.0f7d RVM XMM XMM XMM - VHSUBPD -VEX.F2.0f7d RVM XMM XMM XMM - VHSUBPS -VEX.66.W0.L0.0f7e MR GP XMM32 - - VMOVD ENC_NOSZ -VEX.66.W1.L0.0f7e MR GP XMM32 - - VMOVQ ONLY32 ENC_NOSZ -VEX.66.W1.L0.0f7e MR GP XMM64 - - VMOVQ ONLY64 ENC_NOSZ -VEX.F3.L0.0f7e RM XMM64 XMM64 - - VMOVQ ENC_NOSZ -VEX.66.0f7f MR XMM XMM - - VMOVDQA -VEX.F3.0f7f MR XMM XMM - - VMOVDQU -VEX.NP.L0.0fae/2m M GP32 - - - VLDMXCSR -VEX.NP.L0.0fae/3m M GP32 - - - VSTMXCSR -VEX.NP.0fc2 RVMI XMM XMM XMM IMM8 VCMPPS -VEX.66.0fc2 RVMI XMM XMM XMM IMM8 VCMPPD -# TODO: XMM is actually XMM128 -VEX.F3.LIG.0fc2 RVMI XMM XMM XMM32 IMM8 VCMPSS -VEX.F2.LIG.0fc2 RVMI XMM XMM XMM64 IMM8 VCMPSD -VEX.66.WIG.L0.0fc4 RVMI XMM XMM GP16 IMM8 VPINSRW ENC_NOSZ -VEX.66.WIG.L0.0fc5/r RMI GP XMM IMM8 - VPEXTRW DEF64 ENC_NOSZ -VEX.NP.0fc6 RVMI XMM XMM XMM IMM8 VSHUFPS -VEX.66.0fc6 RVMI XMM XMM XMM IMM8 VSHUFPD -VEX.NP.0fd0 RVM XMM XMM XMM - VADDSUBPS -VEX.66.0fd0 RVM XMM XMM XMM - VADDSUBPD -VEX.66.0fd1 RVM XMM XMM XMM - VPSRLW -VEX.66.0fd2 RVM XMM XMM XMM - VPSRLD -VEX.66.0fd3 RVM XMM XMM XMM - VPSRLQ -VEX.66.0fd4 RVM XMM XMM XMM - VPADDQ -VEX.66.0fd5 RVM XMM XMM XMM - VPMULLW -VEX.66.L0.0fd6 MR XMM64 XMM64 - - VMOVQ -VEX.66.0fd7/r RM GP XMM - - VPMOVMSKB DEF64 -VEX.66.0fd8 RVM XMM XMM XMM - VPSUBUSB -VEX.66.0fd9 RVM XMM XMM XMM - VPSUBUSW -VEX.66.0fda RVM XMM XMM XMM - VPMINUB -VEX.66.0fdb RVM XMM XMM XMM - VPAND -VEX.66.0fdc RVM XMM XMM XMM - VPADDUSB -VEX.66.0fdd RVM XMM XMM XMM - VPADDUSW -VEX.66.0fde RVM XMM XMM XMM - VPMAXUB -VEX.66.0fdf RVM XMM XMM XMM - VPANDN -VEX.66.0fe0 RVM XMM XMM XMM - VPAVGB -VEX.66.0fe1 RVM XMM XMM XMM - VPSRAW -VEX.66.0fe2 RVM XMM XMM XMM - VPSRAD -VEX.66.0fe3 RVM XMM XMM XMM - VPAVGW -VEX.66.0fe4 RVM XMM XMM XMM - VPMULHUW -VEX.66.0fe5 RVM XMM XMM XMM - VPMULHW -VEX.66.0fe6 RM XMM128 XMM - - VCVTTPD2DQ -VEX.F3.L0.0fe6 RM XMM XMM64 - - VCVTDQ2PD -VEX.F3.L1.0fe6 RM XMM XMM128 - - VCVTDQ2PD -VEX.F2.0fe6 RM XMM128 XMM - - VCVTPD2DQ -VEX.66.0fe7/m MR MEMV XMM - - VMOVNTDQ -VEX.66.0fe8 RVM XMM XMM XMM - VPSUBSB -VEX.66.0fe9 RVM XMM XMM XMM - VPSUBSW -VEX.66.0feb RVM XMM XMM XMM - VPOR -VEX.66.0fec RVM XMM XMM XMM - VPADDSB -VEX.66.0fea RVM XMM XMM XMM - VPMINSW -VEX.66.0fed RVM XMM XMM XMM - VPADDSW -VEX.66.0fee RVM XMM XMM XMM - VPMAXSW -VEX.66.0fef RVM XMM XMM XMM - VPXOR -VEX.F2.0ff0 RM XMM XMM - - VLDDQU -VEX.66.0ff1 RVM XMM XMM XMM - VPSLLW -VEX.66.0ff2 RVM XMM XMM XMM - VPSLLD -VEX.66.0ff3 RVM XMM XMM XMM - VPSLLQ -VEX.66.0ff4 RVM XMM XMM XMM - VPMULUDQ -VEX.66.0ff5 RVM XMM XMM XMM - VPMADDWD -VEX.66.0ff6 RVM XMM XMM XMM - VPSADBW -VEX.NP.L0.0ff7 RM XMM XMM - - VMASKMOVDQU -VEX.66.0ff8 RVM XMM XMM XMM - VPSUBB -VEX.66.0ff9 RVM XMM XMM XMM - VPSUBW -VEX.66.0ffa RVM XMM XMM XMM - VPSUBD -VEX.66.0ffb RVM XMM XMM XMM - VPSUBQ -VEX.66.0ffc RVM XMM XMM XMM - VPADDB -VEX.66.0ffd RVM XMM XMM XMM - VPADDW -VEX.66.0ffe RVM XMM XMM XMM - VPADDD -VEX.66.0f3800 RVM XMM XMM XMM - VPSHUFB -VEX.66.0f3801 RVM XMM XMM XMM - VPHADDW -VEX.66.0f3802 RVM XMM XMM XMM - VPHADDD -VEX.66.0f3803 RVM XMM XMM XMM - VPHADDSW -VEX.66.0f3804 RVM XMM XMM XMM - VPMADDUBSW -VEX.66.0f3805 RVM XMM XMM XMM - VPHSUBW -VEX.66.0f3806 RVM XMM XMM XMM - VPHSUBD -VEX.66.0f3807 RVM XMM XMM XMM - VPHSUBSW -VEX.66.0f3808 RVM XMM XMM XMM - VPSIGNB -VEX.66.0f3809 RVM XMM XMM XMM - VPSIGNW -VEX.66.0f380a RVM XMM XMM XMM - VPSIGND -VEX.66.0f380b RVM XMM XMM XMM - VPMULHRSW -VEX.66.W0.0f380c RVM XMM XMM XMM - VPERMILPS -VEX.66.W0.0f380d RVM XMM XMM XMM - VPERMILPD -VEX.66.W0.0f380e RM XMM XMM - - VTESTPS -VEX.66.W0.0f380f RM XMM XMM - - VTESTPD -VEX.66.W0.0f3813 RM XMM XMM - - VCVTPH2PS -VEX.66.W0.L1.0f3816 RVM XMM XMM XMM - VPERMPS -VEX.66.0f3817 RM XMM XMM - - VPTEST -VEX.66.W0.0f3818 RM XMM XMM32 - - VBROADCASTSS -VEX.66.W0.L1.0f3819 RM XMM XMM64 - - VBROADCASTSD -VEX.66.W0.L1.0f381a RM XMM XMM128 - - VBROADCASTF128 -VEX.66.0f381c RM XMM XMM - - VPABSB -VEX.66.0f381d RM XMM XMM - - VPABSW -VEX.66.0f381e RM XMM XMM - - VPABSD -VEX.66.0f3820 RM XMM XMM - - VPMOVSXBW -VEX.66.0f3821 RM XMM XMM - - VPMOVSXBD -VEX.66.0f3822 RM XMM XMM - - VPMOVSXBQ -VEX.66.0f3823 RM XMM XMM - - VPMOVSXWD -VEX.66.0f3824 RM XMM XMM - - VPMOVSXWQ -VEX.66.0f3825 RM XMM XMM - - VPMOVSXDQ -VEX.66.0f3828 RVM XMM XMM XMM - VPMULDQ -VEX.66.0f3829 RVM XMM XMM XMM - VPCMPEQQ -VEX.66.0f382a/m RM XMM MEMV - - VMOVNTDQA -VEX.66.0f382b RVM XMM XMM XMM - VPACKUSDW -VEX.66.W0.0f382c RVM XMM XMM XMM - VMASKMOVPS -VEX.66.W0.0f382d RVM XMM XMM XMM - VMASKMOVPD -VEX.66.W0.0f382e MVR XMM XMM XMM - VMASKMOVPS -VEX.66.W0.0f382f MVR XMM XMM XMM - VMASKMOVPD -VEX.66.0f3830 RM XMM XMM - - VPMOVZXBW -VEX.66.0f3831 RM XMM XMM - - VPMOVZXBD -VEX.66.0f3832 RM XMM XMM - - VPMOVZXBQ -VEX.66.0f3833 RM XMM XMM - - VPMOVZXWD -VEX.66.0f3834 RM XMM XMM - - VPMOVZXWQ -VEX.66.0f3835 RM XMM XMM - - VPMOVZXDQ -VEX.66.W0.L1.0f3836 RVM XMM XMM XMM - VPERMD -VEX.66.0f3837 RVM XMM XMM XMM - VPCMPGTQ -VEX.66.0f3838 RVM XMM XMM XMM - VPMINSB -VEX.66.0f3839 RVM XMM XMM XMM - VPMINSD -VEX.66.0f383a RVM XMM XMM XMM - VPMINUW -VEX.66.0f383b RVM XMM XMM XMM - VPMINUD -VEX.66.0f383c RVM XMM XMM XMM - VPMAXSB -VEX.66.0f383d RVM XMM XMM XMM - VPMAXSD -VEX.66.0f383e RVM XMM XMM XMM - VPMAXUW -VEX.66.0f383f RVM XMM XMM XMM - VPMAXUD -VEX.66.0f3840 RVM XMM XMM XMM - VPMULLD -VEX.66.L0.0f3841 RM XMM XMM - - VPHMINPOSUW -VEX.66.W0.0f3845 RVM XMM XMM XMM - VPSRLVD -VEX.66.W1.0f3845 RVM XMM XMM XMM - VPSRLVQ -VEX.66.W0.0f3846 RVM XMM XMM XMM - VPSRAVD -VEX.66.W1.0f3846 RVM XMM XMM XMM - VPSRAVQ -VEX.66.W0.0f3847 RVM XMM XMM XMM - VPSLLVD -VEX.66.W1.0f3847 RVM XMM XMM XMM - VPSLLVQ -VEX.66.W0.0f3858 RM XMM XMM32 - - VPBROADCASTD -VEX.66.W0.0f3859 RM XMM XMM64 - - VPBROADCASTQ -VEX.66.W0.L1.0f385a/m RM XMM MEM128 - - VBROADCASTI128 ENC_NOSZ -VEX.66.W0.0f3878 RM XMM XMM8 - - VPBROADCASTB -VEX.66.W0.0f3879 RM XMM XMM16 - - VPBROADCASTW -VEX.66.W0.0f388c RVM XMM XMM XMM - VPMASKMOVD -VEX.66.W1.0f388c RVM XMM XMM XMM - VPMASKMOVQ -VEX.66.W0.0f388e MVR XMM XMM XMM - VPMASKMOVD -VEX.66.W1.0f388e MVR XMM XMM XMM - VPMASKMOVQ -VEX.66.W0.0f3890/m RMV XMM MEM32 XMM - VPGATHERDD VSIB -VEX.66.W1.0f3890/m RMV XMM MEM64 XMM - VPGATHERDQ VSIB -VEX.66.W0.L0.0f3891/m RMV XMM64 MEM32 XMM64 - VPGATHERQD VSIB -VEX.66.W0.L1.0f3891/m RMV XMM128 MEM32 XMM128 - VPGATHERQD VSIB -VEX.66.W1.0f3891/m RMV XMM MEM64 XMM - VPGATHERQQ VSIB -VEX.66.W0.0f3892/m RMV XMM MEM32 XMM - VGATHERDPS VSIB -VEX.66.W1.0f3892/m RMV XMM MEM64 XMM - VGATHERDPD VSIB -VEX.66.W0.L0.0f3893/m RMV XMM64 MEM32 XMM64 - VGATHERQPS VSIB -VEX.66.W0.L1.0f3893/m RMV XMM128 MEM32 XMM128 - VGATHERQPS VSIB -VEX.66.W1.0f3893/m RMV XMM MEM64 XMM - VGATHERQPD VSIB -VEX.66.W0.0f3896 RVM XMM XMM XMM - VFMADDSUB132PS -VEX.66.W1.0f3896 RVM XMM XMM XMM - VFMADDSUB132PD -VEX.66.W0.0f3897 RVM XMM XMM XMM - VFMSUBADD132PS -VEX.66.W1.0f3897 RVM XMM XMM XMM - VFMSUBADD132PD -VEX.66.W0.0f3898 RVM XMM XMM XMM - VFMADD132PS -VEX.66.W1.0f3898 RVM XMM XMM XMM - VFMADD132PD -VEX.66.W0.LIG.0f3899 RVM XMM128 XMM128 XMM32 - VFMADD132SS -VEX.66.W1.LIG.0f3899 RVM XMM128 XMM128 XMM64 - VFMADD132SD -VEX.66.W0.0f389a RVM XMM XMM XMM - VFMSUB132PS -VEX.66.W1.0f389a RVM XMM XMM XMM - VFMSUB132PD -VEX.66.W0.LIG.0f389b RVM XMM128 XMM128 XMM32 - VFMSUB132SS -VEX.66.W1.LIG.0f389b RVM XMM128 XMM128 XMM64 - VFMSUB132SD -VEX.66.W0.0f389c RVM XMM XMM XMM - VFNMADD132PS -VEX.66.W1.0f389c RVM XMM XMM XMM - VFNMADD132PD -VEX.66.W0.LIG.0f389d RVM XMM128 XMM128 XMM32 - VFNMADD132SS -VEX.66.W1.LIG.0f389d RVM XMM128 XMM128 XMM64 - VFNMADD132SD -VEX.66.W0.0f389e RVM XMM XMM XMM - VFNMSUB132PS -VEX.66.W1.0f389e RVM XMM XMM XMM - VFNMSUB132PD -VEX.66.W0.LIG.0f389f RVM XMM128 XMM128 XMM32 - VFNMSUB132SS -VEX.66.W1.LIG.0f389f RVM XMM128 XMM128 XMM64 - VFNMSUB132SD -VEX.66.W0.0f38a6 RVM XMM XMM XMM - VFMADDSUB213PS -VEX.66.W1.0f38a6 RVM XMM XMM XMM - VFMADDSUB213PD -VEX.66.W0.0f38a7 RVM XMM XMM XMM - VFMSUBADD213PS -VEX.66.W1.0f38a7 RVM XMM XMM XMM - VFMSUBADD213PD -VEX.66.W0.0f38a8 RVM XMM XMM XMM - VFMADD213PS -VEX.66.W1.0f38a8 RVM XMM XMM XMM - VFMADD213PD -VEX.66.W0.LIG.0f38a9 RVM XMM128 XMM128 XMM32 - VFMADD213SS -VEX.66.W1.LIG.0f38a9 RVM XMM128 XMM128 XMM64 - VFMADD213SD -VEX.66.W0.0f38aa RVM XMM XMM XMM - VFMSUB213PS -VEX.66.W1.0f38aa RVM XMM XMM XMM - VFMSUB213PD -VEX.66.W0.LIG.0f38ab RVM XMM128 XMM128 XMM32 - VFMSUB213SS -VEX.66.W1.LIG.0f38ab RVM XMM128 XMM128 XMM64 - VFMSUB213SD -VEX.66.W0.0f38ac RVM XMM XMM XMM - VFNMADD213PS -VEX.66.W1.0f38ac RVM XMM XMM XMM - VFNMADD213PD -VEX.66.W0.LIG.0f38ad RVM XMM128 XMM128 XMM32 - VFNMADD213SS -VEX.66.W1.LIG.0f38ad RVM XMM128 XMM128 XMM64 - VFNMADD213SD -VEX.66.W0.0f38ae RVM XMM XMM XMM - VFNMSUB213PS -VEX.66.W1.0f38ae RVM XMM XMM XMM - VFNMSUB213PD -VEX.66.W0.LIG.0f38af RVM XMM128 XMM128 XMM32 - VFNMSUB213SS -VEX.66.W1.LIG.0f38af RVM XMM128 XMM128 XMM64 - VFNMSUB213SD -VEX.66.W0.0f38b6 RVM XMM XMM XMM - VFMADDSUB231PS -VEX.66.W1.0f38b6 RVM XMM XMM XMM - VFMADDSUB231PD -VEX.66.W0.0f38b7 RVM XMM XMM XMM - VFMSUBADD231PS -VEX.66.W1.0f38b7 RVM XMM XMM XMM - VFMSUBADD231PD -VEX.66.W0.0f38b8 RVM XMM XMM XMM - VFMADD231PS -VEX.66.W1.0f38b8 RVM XMM XMM XMM - VFMADD231PD -VEX.66.W0.LIG.0f38b9 RVM XMM128 XMM128 XMM32 - VFMADD231SS -VEX.66.W1.LIG.0f38b9 RVM XMM128 XMM128 XMM64 - VFMADD231SD -VEX.66.W0.0f38ba RVM XMM XMM XMM - VFMSUB231PS -VEX.66.W1.0f38ba RVM XMM XMM XMM - VFMSUB231PD -VEX.66.W0.LIG.0f38bb RVM XMM128 XMM128 XMM32 - VFMSUB231SS -VEX.66.W1.LIG.0f38bb RVM XMM128 XMM128 XMM64 - VFMSUB231SD -VEX.66.W0.0f38bc RVM XMM XMM XMM - VFNMADD231PS -VEX.66.W1.0f38bc RVM XMM XMM XMM - VFNMADD231PD -VEX.66.W0.LIG.0f38bd RVM XMM128 XMM128 XMM32 - VFNMADD231SS -VEX.66.W1.LIG.0f38bd RVM XMM128 XMM128 XMM64 - VFNMADD231SD -VEX.66.W0.0f38be RVM XMM XMM XMM - VFNMSUB231PS -VEX.66.W1.0f38be RVM XMM XMM XMM - VFNMSUB231PD -VEX.66.W0.LIG.0f38bf RVM XMM128 XMM128 XMM32 - VFNMSUB231SS -VEX.66.W1.LIG.0f38bf RVM XMM128 XMM128 XMM64 - VFNMSUB231SD -VEX.66.W1.L1.0f3a00 VMI XMM XMM IMM8 - VPERMQ -VEX.66.W1.L1.0f3a01 VMI XMM XMM IMM8 - VPERMPD -VEX.66.W0.0f3a02 RVMI XMM XMM XMM IMM8 VPBLENDD -VEX.66.W0.0f3a04 RMI XMM XMM IMM8 - VPERMILPS -VEX.66.W0.0f3a05 RMI XMM XMM IMM8 - VPERMILPD -VEX.66.W0.L1.0f3a06 RVMI XMM XMM XMM IMM8 VPERM2F128 -VEX.66.0f3a08 RVMI XMM XMM XMM IMM8 VROUNDPS -VEX.66.0f3a09 RVMI XMM XMM XMM IMM8 VROUNDPD -# TODO: XMM is actually XMM128 -VEX.66.LIG.0f3a0a RVMI XMM XMM XMM32 IMM8 VROUNDSS -VEX.66.LIG.0f3a0b RVMI XMM XMM XMM64 IMM8 VROUNDSD -VEX.66.0f3a0c RVMI XMM XMM XMM IMM8 VBLENDPS -VEX.66.0f3a0d RVMI XMM XMM XMM IMM8 VBLENDPD -VEX.66.0f3a0e RVMI XMM XMM XMM IMM8 VPBLENDW -VEX.66.0f3a0f RVMI XMM XMM XMM IMM8 VPALIGNR -VEX.66.WIG.L0.0f3a14/m MRI GP8 XMM IMM8 - VPEXTRB ENC_NOSZ -VEX.66.WIG.L0.0f3a14/r MRI GP32 XMM IMM8 - VPEXTRB ENC_NOSZ -VEX.66.WIG.L0.0f3a15/m MRI GP16 XMM IMM8 - VPEXTRW ENC_NOSZ -VEX.66.WIG.L0.0f3a15/r MRI GP32 XMM IMM8 - VPEXTRW ENC_NOSZ -VEX.66.W0.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRD ENC_NOSZ -VEX.66.W1.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRD ONLY32 ENC_NOSZ -VEX.66.W1.L0.0f3a16 MRI GP XMM IMM8 - VPEXTRQ ONLY64 ENC_NOSZ -VEX.66.L0.0f3a17 MRI GP32 XMM IMM8 - VEXTRACTPS ENC_NOSZ -VEX.66.W0.L1.0f3a18 RVMI XMM XMM XMM128 IMM8 VINSERTF128 ENC_NOSZ -VEX.66.W0.L1.0f3a19 MRI XMM128 XMM IMM8 - VEXTRACTF128 ENC_NOSZ -VEX.66.W0.L1.0f3a1d MRI XMM XMM IMM8 - VCVTPS2PH -VEX.66.WIG.L0.0f3a20 RVMI XMM XMM GP8 IMM8 VPINSRB ENC_NOSZ -VEX.66.L0.0f3a21 RVMI XMM XMM XMM32 IMM8 VINSERTPS ENC_NOSZ -VEX.66.W0.L0.0f3a22 RVMI XMM XMM GP IMM8 VPINSRD ENC_NOSZ -VEX.66.W1.L0.0f3a22 RVMI XMM XMM GP IMM8 VPINSRD ONLY32 ENC_NOSZ -VEX.66.W1.L0.0f3a22 RVMI XMM XMM GP IMM8 VPINSRQ ONLY64 ENC_NOSZ -VEX.66.W0.L1.0f3a38 RVMI XMM XMM XMM128 IMM8 VINSERTI128 ENC_NOSZ -VEX.66.W0.L1.0f3a39 MRI XMM128 XMM IMM8 - VEXTRACTI128 ENC_NOSZ -VEX.66.0f3a40 RVMI XMM XMM XMM IMM8 VDPPS -VEX.66.0f3a41 RVMI XMM XMM XMM IMM8 VDPPD -VEX.66.0f3a42 RVMI XMM XMM XMM IMM8 VMPSADBW -VEX.66.0f3a44 RVMI XMM XMM XMM IMM8 VPCLMULQDQ -VEX.66.W0.L1.0f3a46 RVMI XMM XMM XMM IMM8 VPERM2I128 -VEX.66.W0.0f3a4a RVMR XMM XMM XMM XMM VBLENDVPS -VEX.66.W0.0f3a4b RVMR XMM XMM XMM XMM VBLENDVPD -VEX.66.L0.0f3a60 RMI XMM XMM IMM8 - VPCMPESTRM ENC_NOSZ -VEX.66.L0.0f3a61 RMI XMM XMM IMM8 - VPCMPESTRI ENC_NOSZ -VEX.66.L0.0f3a62 RMI XMM XMM IMM8 - VPCMPISTRM ENC_NOSZ -VEX.66.L0.0f3a63 RMI XMM XMM IMM8 - VPCMPISTRI ENC_NOSZ +VEX.NP.0f10 RM Vps Wps - - VMOVUPS F=AVX +VEX.66.0f10 RM Vpd Wpd - - VMOVUPD F=AVX +VEX.F3.LIG.0f10/m RM Vdq Mss - - VMOVSS F=AVX +VEX.F3.LIG.0f10/r RVM Vdq Hdq Uss - VMOVSS F=AVX +VEX.F2.LIG.0f10/m RM Vdq Msd - - VMOVSD F=AVX +VEX.F2.LIG.0f10/r RVM Vdq Hdq Usd - VMOVSD F=AVX +VEX.NP.0f11 MR Wps Vps - - VMOVUPS F=AVX +VEX.66.0f11 MR Wpd Vpd - - VMOVUPD F=AVX +VEX.F3.LIG.0f11/m MR Mss Vss - - VMOVSS F=AVX +VEX.F3.LIG.0f11/r MVR Udq Hdq Vss - VMOVSS F=AVX +VEX.F2.LIG.0f11/m MR Msd Vsd - - VMOVSD F=AVX +VEX.F2.LIG.0f11/r MVR Udq Hdq Vsd - VMOVSD F=AVX +VEX.NP.L0.0f12/m RVM Vdq Hdq Mq - VMOVLPS F=AVX +VEX.NP.L0.0f12/r RVM Vdq Hdq Udq - VMOVHLPS F=AVX +VEX.66.L0.0f12/m RVM Vdq Hdq Mq - VMOVLPD F=AVX +VEX.F2.L0.0f12 RM Vx Wq - - VMOVDDUP F=AVX +VEX.F2.L1.0f12 RM Vx Wx - - VMOVDDUP F=AVX +VEX.F3.0f12 RM Vx Wx - - VMOVSLDUP F=AVX +VEX.NP.L0.0f13/m MR Mq Vq - - VMOVLPS F=AVX +VEX.66.L0.0f13/m MR Mq Vq - - VMOVLPD F=AVX +VEX.NP.0f14 RVM Vx Hx Wx - VUNPCKLPS F=AVX +VEX.66.0f14 RVM Vx Hx Wx - VUNPCKLPD F=AVX +VEX.NP.0f15 RVM Vx Hx Wx - VUNPCKHPS F=AVX +VEX.66.0f15 RVM Vx Hx Wx - VUNPCKHPD F=AVX +VEX.NP.L0.0f16/m RVM Vdq Hq Mq - VMOVHPS F=AVX +VEX.NP.L0.0f16/r RVM Vdq Hq Uq - VMOVLHPS F=AVX +VEX.66.L0.0f16/m RVM Vdq Hq Mq - VMOVHPD F=AVX +VEX.F3.0f16 RM Vx Wx - - VMOVSHDUP F=AVX +VEX.NP.L0.0f17/m MR Mq Vq - - VMOVHPS F=AVX +VEX.66.L0.0f17/m MR Mq Vq - - VMOVHPD F=AVX +VEX.NP.0f28 RM Vps Wps - - VMOVAPS F=AVX +VEX.66.0f28 RM Vpd Wpd - - VMOVAPD F=AVX +VEX.NP.0f29 MR Wps Vps - - VMOVAPS F=AVX +VEX.66.0f29 MR Wpd Vpd - - VMOVAPD F=AVX +VEX.F3.LIG.0f2a RVM Vdq Hdq Ey - VCVTSI2SS F=AVX +VEX.F2.LIG.0f2a RVM Vdq Hdq Ey - VCVTSI2SD F=AVX +VEX.NP.0f2b/m MR Mps Vps - - VMOVNTPS F=AVX +VEX.66.0f2b/m MR Mpd Vpd - - VMOVNTPD F=AVX +VEX.F3.LIG.0f2c RM Gy Wss - - VCVTTSS2SI F=AVX +VEX.F2.LIG.0f2c RM Gy Wsd - - VCVTTSD2SI F=AVX +VEX.F3.LIG.0f2d RM Gy Wss - - VCVTSS2SI F=AVX +VEX.F2.LIG.0f2d RM Gy Wsd - - VCVTSD2SI F=AVX +VEX.NP.LIG.0f2e RM Vss Wss - - VUCOMISS F=AVX EFL=0--0m0mm +VEX.66.LIG.0f2e RM Vsd Wsd - - VUCOMISD F=AVX EFL=0--0m0mm +VEX.NP.LIG.0f2f RM Vss Wss - - VCOMISS F=AVX EFL=0--0m0mm +VEX.66.LIG.0f2f RM Vsd Wsd - - VCOMISD F=AVX EFL=0--0m0mm +VEX.NP.0f50/r RM Gy Ups - - VMOVMSKPS D64 F=AVX +VEX.66.0f50/r RM Gy Upd - - VMOVMSKPD D64 F=AVX +VEX.NP.0f51 RM Vps Wps - - VSQRTPS F=AVX +VEX.66.0f51 RM Vpd Wpd - - VSQRTPD F=AVX +VEX.F3.LIG.0f51 RVM Vdq Hdq Wss - VSQRTSS F=AVX +VEX.F2.LIG.0f51 RVM Vdq Hdq Wsd - VSQRTSD F=AVX +VEX.NP.0f52 RM Vps Wps - - VRSQRTPS F=AVX +VEX.F3.LIG.0f52 RVM Vdq Hdq Wss - VRSQRTSS F=AVX +VEX.NP.0f53 RM Vps Wps - - VRCPPS F=AVX +VEX.F3.LIG.0f53 RVM Vdq Hdq Wss - VRCPSS F=AVX +VEX.NP.0f54 RVM Vps Hps Wps - VANDPS F=AVX +VEX.66.0f54 RVM Vpd Hpd Wpd - VANDPD F=AVX +VEX.NP.0f55 RVM Vps Hps Wps - VANDNPS F=AVX +VEX.66.0f55 RVM Vpd Hpd Wpd - VANDNPD F=AVX +VEX.NP.0f56 RVM Vps Hps Wps - VORPS F=AVX +VEX.66.0f56 RVM Vpd Hpd Wpd - VORPD F=AVX +VEX.NP.0f57 RVM Vps Hps Wps - VXORPS F=AVX +VEX.66.0f57 RVM Vpd Hpd Wpd - VXORPD F=AVX +VEX.NP.0f58 RVM Vps Hps Wps - VADDPS F=AVX +VEX.66.0f58 RVM Vpd Hpd Wpd - VADDPD F=AVX +VEX.F3.LIG.0f58 RVM Vdq Hdq Wss - VADDSS F=AVX +VEX.F2.LIG.0f58 RVM Vdq Hdq Wsd - VADDSD F=AVX +VEX.NP.0f59 RVM Vps Hps Wps - VMULPS F=AVX +VEX.66.0f59 RVM Vpd Hpd Wpd - VMULPD F=AVX +VEX.F3.LIG.0f59 RVM Vdq Hdq Wss - VMULSS F=AVX +VEX.F2.LIG.0f59 RVM Vdq Hdq Wsd - VMULSD F=AVX +VEX.NP.L0.0f5a RM Vpd Wq - - VCVTPS2PD F=AVX +VEX.NP.L1.0f5a RM Vpd Wdq - - VCVTPS2PD F=AVX +VEX.66.0f5a RM Vdq Wpd - - VCVTPD2PS F=AVX +VEX.F3.LIG.0f5a RVM Vdq Hdq Wss - VCVTSS2SD F=AVX +VEX.F2.LIG.0f5a RVM Vdq Hdq Wsd - VCVTSD2SS F=AVX +VEX.NP.0f5b RM Vps Vx - - VCVTDQ2PS F=AVX +VEX.66.0f5b RM Vx Vps - - VCVTPS2DQ F=AVX +VEX.F3.0f5b RM Vx Vps - - VCVTTPS2DQ F=AVX +VEX.NP.0f5c RVM Vps Hps Wps - VSUBPS F=AVX +VEX.66.0f5c RVM Vpd Hpd Wpd - VSUBPD F=AVX +VEX.F3.LIG.0f5c RVM Vdq Hdq Wss - VSUBSS F=AVX +VEX.F2.LIG.0f5c RVM Vdq Hdq Wsd - VSUBSD F=AVX +VEX.NP.0f5d RVM Vps Hps Wps - VMINPS F=AVX +VEX.66.0f5d RVM Vpd Hpd Wpd - VMINPD F=AVX +VEX.F3.LIG.0f5d RVM Vdq Hdq Wss - VMINSS F=AVX +VEX.F2.LIG.0f5d RVM Vdq Hdq Wsd - VMINSD F=AVX +VEX.NP.0f5e RVM Vps Hps Wps - VDIVPS F=AVX +VEX.66.0f5e RVM Vpd Hpd Wpd - VDIVPD F=AVX +VEX.F3.LIG.0f5e RVM Vdq Hdq Wss - VDIVSS F=AVX +VEX.F2.LIG.0f5e RVM Vdq Hdq Wsd - VDIVSD F=AVX +VEX.NP.0f5f RVM Vps Hps Wps - VMAXPS F=AVX +VEX.66.0f5f RVM Vpd Hpd Wpd - VMAXPD F=AVX +VEX.F3.LIG.0f5f RVM Vdq Hdq Wss - VMAXSS F=AVX +VEX.F2.LIG.0f5f RVM Vdq Hdq Wsd - VMAXSD F=AVX +VEX.66.0f60 RVM Vx Hx Wx - VPUNPCKLBW F=AVX +VEX.66.0f61 RVM Vx Hx Wx - VPUNPCKLWD F=AVX +VEX.66.0f62 RVM Vx Hx Wx - VPUNPCKLDQ F=AVX +VEX.66.0f63 RVM Vx Hx Wx - VPACKSSWB F=AVX +VEX.66.0f64 RVM Vx Hx Wx - VPCMPGTB F=AVX +VEX.66.0f65 RVM Vx Hx Wx - VPCMPGTW F=AVX +VEX.66.0f66 RVM Vx Hx Wx - VPCMPGTD F=AVX +VEX.66.0f67 RVM Vx Hx Wx - VPACKUSWB F=AVX +VEX.66.0f68 RVM Vx Hx Wx - VPUNPCKHBW F=AVX +VEX.66.0f69 RVM Vx Hx Wx - VPUNPCKHWD F=AVX +VEX.66.0f6a RVM Vx Hx Wx - VPUNPCKHDQ F=AVX +VEX.66.0f6b RVM Vx Hx Wx - VPACKSSDW F=AVX +VEX.66.0f6c RVM Vx Hx Wx - VPUNPCKLQDQ F=AVX +VEX.66.0f6d RVM Vx Hx Wx - VPUNPCKHQDQ F=AVX +VEX.66.W0.L0.0f6e RM Vy Ey - - VMOVD F=AVX ENC_NOSZ +VEX.66.W1.L0.0f6e RM Vy Ey - - VMOVD I64 F=AVX ENC_NOSZ +VEX.66.W1.L0.0f6e RM Vy Ey - - VMOVQ O64 F=AVX ENC_NOSZ +VEX.66.0f6f RM Vx Wx - - VMOVDQA F=AVX +VEX.F3.0f6f RM Vx Wx - - VMOVDQU F=AVX +VEX.66.0f70 RMI Vx Wx Ib - VPSHUFD F=AVX +VEX.F3.0f70 RMI Vx Wx Ib - VPSHUFHW F=AVX +VEX.F2.0f70 RMI Vx Wx Ib - VPSHUFLW F=AVX +VEX.66.0f71/2r VMI Hx Wx Ib - VPSRLW F=AVX +VEX.66.0f71/4r VMI Hx Wx Ib - VPSRAW F=AVX +VEX.66.0f71/6r VMI Hx Wx Ib - VPSLLW F=AVX +VEX.66.0f72/2r VMI Hx Wx Ib - VPSRLD F=AVX +VEX.66.0f72/4r VMI Hx Wx Ib - VPSRAD F=AVX +VEX.66.0f72/6r VMI Hx Wx Ib - VPSLLD F=AVX +VEX.66.0f73/2r VMI Hx Wx Ib - VPSRLQ F=AVX +VEX.66.0f73/3r VMI Hx Wx Ib - VPSRLDQ F=AVX +VEX.66.0f73/6r VMI Hx Wx Ib - VPSLLQ F=AVX +VEX.66.0f73/7r VMI Hx Wx Ib - VPSLLDQ F=AVX +VEX.66.0f74 RVM Vx Hx Wx - VPCMPEQB F=AVX +VEX.66.0f75 RVM Vx Hx Wx - VPCMPEQW F=AVX +VEX.66.0f76 RVM Vx Hx Wx - VPCMPEQD F=AVX +VEX.NP.L0.0f77 NP - - - - VZEROUPPER F=AVX +VEX.NP.L1.0f77 NP - - - - VZEROALL F=AVX +VEX.66.0f7c RVM Vx Hx Wx - VHADDPD F=AVX +VEX.F2.0f7c RVM Vx Hx Wx - VHADDPS F=AVX +VEX.66.0f7d RVM Vx Hx Wx - VHSUBPD F=AVX +VEX.F2.0f7d RVM Vx Hx Wx - VHSUBPS F=AVX +VEX.66.W0.L0.0f7e MR Ey Vy - - VMOVD F=AVX ENC_NOSZ +VEX.66.W1.L0.0f7e MR Ey Vy - - VMOVQ I64 F=AVX ENC_NOSZ +VEX.66.W1.L0.0f7e MR Ey Vy - - VMOVQ O64 F=AVX ENC_NOSZ +VEX.F3.L0.0f7e RM Vq Wq - - VMOVQ F=AVX ENC_NOSZ +VEX.66.0f7f MR Wx Vx - - VMOVDQA F=AVX +VEX.F3.0f7f MR Wx Vx - - VMOVDQU F=AVX +VEX.NP.L0.0fae/2m M Md - - - VLDMXCSR F=AVX +VEX.NP.L0.0fae/3m M Md - - - VSTMXCSR F=AVX +VEX.NP.0fc2 RVMI Vx Hx Wx Ib VCMPPS F=AVX +VEX.66.0fc2 RVMI Vx Hx Wx Ib VCMPPD F=AVX +# TODO: Vx/Hx is actually Vdq/Hdq +VEX.F3.LIG.0fc2 RVMI Vx Hx Wss Ib VCMPSS F=AVX +VEX.F2.LIG.0fc2 RVMI Vx Hx Wsd Ib VCMPSD F=AVX +VEX.66.WIG.L0.0fc4 RVMI Vx Hx Ew Ib VPINSRW F=AVX ENC_NOSZ +VEX.66.WIG.L0.0fc5/r RMI Gy Ux Ib - VPEXTRW D64 F=AVX ENC_NOSZ +VEX.NP.0fc6 RVMI Vx Hx Wx Ib VSHUFPS F=AVX +VEX.66.0fc6 RVMI Vx Hx Wx Ib VSHUFPD F=AVX +VEX.NP.0fd0 RVM Vx Hx Wx - VADDSUBPS F=AVX +VEX.66.0fd0 RVM Vx Hx Wx - VADDSUBPD F=AVX +VEX.66.0fd1 RVM Vx Hx Wx - VPSRLW F=AVX +VEX.66.0fd2 RVM Vx Hx Wx - VPSRLD F=AVX +VEX.66.0fd3 RVM Vx Hx Wx - VPSRLQ F=AVX +VEX.66.0fd4 RVM Vx Hx Wx - VPADDQ F=AVX +VEX.66.0fd5 RVM Vx Hx Wx - VPMULLW F=AVX +VEX.66.L0.0fd6 MR Wq Vq - - VMOVQ F=AVX +VEX.66.0fd7/r RM Gy Ux - - VPMOVMSKB D64 F=AVX +VEX.66.0fd8 RVM Vx Hx Wx - VPSUBUSB F=AVX +VEX.66.0fd9 RVM Vx Hx Wx - VPSUBUSW F=AVX +VEX.66.0fda RVM Vx Hx Wx - VPMINUB F=AVX +VEX.66.0fdb RVM Vx Hx Wx - VPAND F=AVX +VEX.66.0fdc RVM Vx Hx Wx - VPADDUSB F=AVX +VEX.66.0fdd RVM Vx Hx Wx - VPADDUSW F=AVX +VEX.66.0fde RVM Vx Hx Wx - VPMAXUB F=AVX +VEX.66.0fdf RVM Vx Hx Wx - VPANDN F=AVX +VEX.66.0fe0 RVM Vx Hx Wx - VPAVGB F=AVX +VEX.66.0fe1 RVM Vx Hx Wx - VPSRAW F=AVX +VEX.66.0fe2 RVM Vx Hx Wx - VPSRAD F=AVX +VEX.66.0fe3 RVM Vx Hx Wx - VPAVGW F=AVX +VEX.66.0fe4 RVM Vx Hx Wx - VPMULHUW F=AVX +VEX.66.0fe5 RVM Vx Hx Wx - VPMULHW F=AVX +VEX.66.0fe6 RM Vdq Wx - - VCVTTPD2DQ F=AVX +VEX.F3.L0.0fe6 RM Vx Wq - - VCVTDQ2PD F=AVX +VEX.F3.L1.0fe6 RM Vx Wdq - - VCVTDQ2PD F=AVX +VEX.F2.0fe6 RM Vdq Wx - - VCVTPD2DQ F=AVX +VEX.66.0fe7/m MR Mx Vx - - VMOVNTDQ F=AVX +VEX.66.0fe8 RVM Vx Hx Wx - VPSUBSB F=AVX +VEX.66.0fe9 RVM Vx Hx Wx - VPSUBSW F=AVX +VEX.66.0feb RVM Vx Hx Wx - VPOR F=AVX +VEX.66.0fec RVM Vx Hx Wx - VPADDSB F=AVX +VEX.66.0fea RVM Vx Hx Wx - VPMINSW F=AVX +VEX.66.0fed RVM Vx Hx Wx - VPADDSW F=AVX +VEX.66.0fee RVM Vx Hx Wx - VPMAXSW F=AVX +VEX.66.0fef RVM Vx Hx Wx - VPXOR F=AVX +VEX.F2.0ff0 RM Vx Wx - - VLDDQU F=AVX +VEX.66.0ff1 RVM Vx Hx Wx - VPSLLW F=AVX +VEX.66.0ff2 RVM Vx Hx Wx - VPSLLD F=AVX +VEX.66.0ff3 RVM Vx Hx Wx - VPSLLQ F=AVX +VEX.66.0ff4 RVM Vx Hx Wx - VPMULUDQ F=AVX +VEX.66.0ff5 RVM Vx Hx Wx - VPMADDWD F=AVX +VEX.66.0ff6 RVM Vx Hx Wx - VPSADBW F=AVX +VEX.NP.L0.0ff7 RM Vx Wx - - VMASKMOVDQU F=AVX +VEX.66.0ff8 RVM Vx Hx Wx - VPSUBB F=AVX +VEX.66.0ff9 RVM Vx Hx Wx - VPSUBW F=AVX +VEX.66.0ffa RVM Vx Hx Wx - VPSUBD F=AVX +VEX.66.0ffb RVM Vx Hx Wx - VPSUBQ F=AVX +VEX.66.0ffc RVM Vx Hx Wx - VPADDB F=AVX +VEX.66.0ffd RVM Vx Hx Wx - VPADDW F=AVX +VEX.66.0ffe RVM Vx Hx Wx - VPADDD F=AVX +VEX.66.0f3800 RVM Vx Hx Wx - VPSHUFB F=AVX +VEX.66.0f3801 RVM Vx Hx Wx - VPHADDW F=AVX +VEX.66.0f3802 RVM Vx Hx Wx - VPHADDD F=AVX +VEX.66.0f3803 RVM Vx Hx Wx - VPHADDSW F=AVX +VEX.66.0f3804 RVM Vx Hx Wx - VPMADDUBSW F=AVX +VEX.66.0f3805 RVM Vx Hx Wx - VPHSUBW F=AVX +VEX.66.0f3806 RVM Vx Hx Wx - VPHSUBD F=AVX +VEX.66.0f3807 RVM Vx Hx Wx - VPHSUBSW F=AVX +VEX.66.0f3808 RVM Vx Hx Wx - VPSIGNB F=AVX +VEX.66.0f3809 RVM Vx Hx Wx - VPSIGNW F=AVX +VEX.66.0f380a RVM Vx Hx Wx - VPSIGND F=AVX +VEX.66.0f380b RVM Vx Hx Wx - VPMULHRSW F=AVX +VEX.66.W0.0f380c RVM Vx Hx Wx - VPERMILPS F=AVX +VEX.66.W0.0f380d RVM Vx Hx Wx - VPERMILPD F=AVX +VEX.66.W0.0f380e RM Vx Wx - - VTESTPS F=AVX +VEX.66.W0.0f380f RM Vx Wx - - VTESTPD F=AVX +# TODO: Wx is actually half the size +VEX.66.W0.0f3813 RM Vx Wx - - VCVTPH2PS F=F16C +VEX.66.W0.L1.0f3816 RVM Vx Hx Wx - VPERMPS F=AVX2 +VEX.66.0f3817 RM Vx Wx - - VPTEST F=AVX EFL=0--0m00m +VEX.66.W0.0f3818 RM Vx Wd - - VBROADCASTSS F=AVX +VEX.66.W0.L1.0f3819 RM Vx Wq - - VBROADCASTSD F=AVX +VEX.66.W0.L1.0f381a RM Vx Wdq - - VBROADCASTF128 F=AVX +VEX.66.0f381c RM Vx Wx - - VPABSB F=AVX +VEX.66.0f381d RM Vx Wx - - VPABSW F=AVX +VEX.66.0f381e RM Vx Wx - - VPABSD F=AVX +VEX.66.0f3820 RM Vx Wx - - VPMOVSXBW F=AVX +VEX.66.0f3821 RM Vx Wx - - VPMOVSXBD F=AVX +VEX.66.0f3822 RM Vx Wx - - VPMOVSXBQ F=AVX +VEX.66.0f3823 RM Vx Wx - - VPMOVSXWD F=AVX +VEX.66.0f3824 RM Vx Wx - - VPMOVSXWQ F=AVX +VEX.66.0f3825 RM Vx Wx - - VPMOVSXDQ F=AVX +VEX.66.0f3828 RVM Vx Hx Wx - VPMULDQ F=AVX +VEX.66.0f3829 RVM Vx Hx Wx - VPCMPEQQ F=AVX +VEX.66.0f382a/m RM Vx Mx - - VMOVNTDQA F=AVX +VEX.66.0f382b RVM Vx Hx Wx - VPACKUSDW F=AVX +VEX.66.W0.0f382c RVM Vx Hx Wx - VMASKMOVPS F=AVX +VEX.66.W0.0f382d RVM Vx Hx Wx - VMASKMOVPD F=AVX +VEX.66.W0.0f382e MVR Wx Hx Vx - VMASKMOVPS F=AVX +VEX.66.W0.0f382f MVR Wx Hx Vx - VMASKMOVPD F=AVX +VEX.66.0f3830 RM Vx Wx - - VPMOVZXBW F=AVX +VEX.66.0f3831 RM Vx Wx - - VPMOVZXBD F=AVX +VEX.66.0f3832 RM Vx Wx - - VPMOVZXBQ F=AVX +VEX.66.0f3833 RM Vx Wx - - VPMOVZXWD F=AVX +VEX.66.0f3834 RM Vx Wx - - VPMOVZXWQ F=AVX +VEX.66.0f3835 RM Vx Wx - - VPMOVZXDQ F=AVX +VEX.66.W0.L1.0f3836 RVM Vx Hx Wx - VPERMD F=AVX2 +VEX.66.0f3837 RVM Vx Hx Wx - VPCMPGTQ F=AVX +VEX.66.0f3838 RVM Vx Hx Wx - VPMINSB F=AVX +VEX.66.0f3839 RVM Vx Hx Wx - VPMINSD F=AVX +VEX.66.0f383a RVM Vx Hx Wx - VPMINUW F=AVX +VEX.66.0f383b RVM Vx Hx Wx - VPMINUD F=AVX +VEX.66.0f383c RVM Vx Hx Wx - VPMAXSB F=AVX +VEX.66.0f383d RVM Vx Hx Wx - VPMAXSD F=AVX +VEX.66.0f383e RVM Vx Hx Wx - VPMAXUW F=AVX +VEX.66.0f383f RVM Vx Hx Wx - VPMAXUD F=AVX +VEX.66.0f3840 RVM Vx Hx Wx - VPMULLD F=AVX +VEX.66.L0.0f3841 RM Vx Wx - - VPHMINPOSUW F=AVX +VEX.66.W0.0f3845 RVM Vx Hx Wx - VPSRLVD F=AVX2 +VEX.66.W1.0f3845 RVM Vx Hx Wx - VPSRLVQ F=AVX2 +VEX.66.W0.0f3846 RVM Vx Hx Wx - VPSRAVD F=AVX2 +VEX.66.W1.0f3846 RVM Vx Hx Wx - VPSRAVQ F=AVX2 +VEX.66.W0.0f3847 RVM Vx Hx Wx - VPSLLVD F=AVX2 +VEX.66.W1.0f3847 RVM Vx Hx Wx - VPSLLVQ F=AVX2 +VEX.66.W0.0f3858 RM Vx Wd - - VPBROADCASTD F=AVX2 +VEX.66.W0.0f3859 RM Vx Wq - - VPBROADCASTQ F=AVX2 +VEX.66.W0.L1.0f385a/m RM Vx Mdq - - VBROADCASTI128 F=AVX2 ENC_NOSZ +VEX.66.W0.0f3878 RM Vx Wb - - VPBROADCASTB F=AVX2 +VEX.66.W0.0f3879 RM Vx Ww - - VPBROADCASTW F=AVX2 +VEX.66.W0.0f388c RVM Vx Hx Wx - VPMASKMOVD F=AVX2 +VEX.66.W1.0f388c RVM Vx Hx Wx - VPMASKMOVQ F=AVX2 +VEX.66.W0.0f388e MVR Wx Hx Vx - VPMASKMOVD F=AVX2 +VEX.66.W1.0f388e MVR Wx Hx Vx - VPMASKMOVQ F=AVX2 +VEX.66.W0.0f3890/m RMV Vx Md Hx - VPGATHERDD VSIB F=AVX2 +VEX.66.W1.0f3890/m RMV Vx Mq Hx - VPGATHERDQ VSIB F=AVX2 +VEX.66.W0.L0.0f3891/m RMV Vq Md Hq - VPGATHERQD VSIB F=AVX2 +VEX.66.W0.L1.0f3891/m RMV Vdq Md Hdq - VPGATHERQD VSIB F=AVX2 +VEX.66.W1.0f3891/m RMV Vx Mq Hx - VPGATHERQQ VSIB F=AVX2 +VEX.66.W0.0f3892/m RMV Vx Md Hx - VGATHERDPS VSIB F=AVX2 +VEX.66.W1.0f3892/m RMV Vx Mq Hx - VGATHERDPD VSIB F=AVX2 +VEX.66.W0.L0.0f3893/m RMV Vq Md Hq - VGATHERQPS VSIB F=AVX2 +VEX.66.W0.L1.0f3893/m RMV Vdq Md Hdq - VGATHERQPS VSIB F=AVX2 +VEX.66.W1.0f3893/m RMV Vx Mq Hx - VGATHERQPD VSIB F=AVX2 +VEX.66.W0.0f3896 RVM Vx Hx Wx - VFMADDSUB132PS F=FMA +VEX.66.W1.0f3896 RVM Vx Hx Wx - VFMADDSUB132PD F=FMA +VEX.66.W0.0f3897 RVM Vx Hx Wx - VFMSUBADD132PS F=FMA +VEX.66.W1.0f3897 RVM Vx Hx Wx - VFMSUBADD132PD F=FMA +VEX.66.W0.0f3898 RVM Vx Hx Wx - VFMADD132PS F=FMA +VEX.66.W1.0f3898 RVM Vx Hx Wx - VFMADD132PD F=FMA +VEX.66.W0.LIG.0f3899 RVM Vdq Hdq Wss - VFMADD132SS F=FMA +VEX.66.W1.LIG.0f3899 RVM Vdq Hdq Wsd - VFMADD132SD F=FMA +VEX.66.W0.0f389a RVM Vx Hx Wx - VFMSUB132PS F=FMA +VEX.66.W1.0f389a RVM Vx Hx Wx - VFMSUB132PD F=FMA +VEX.66.W0.LIG.0f389b RVM Vdq Hdq Wss - VFMSUB132SS F=FMA +VEX.66.W1.LIG.0f389b RVM Vdq Hdq Wsd - VFMSUB132SD F=FMA +VEX.66.W0.0f389c RVM Vx Hx Wx - VFNMADD132PS F=FMA +VEX.66.W1.0f389c RVM Vx Hx Wx - VFNMADD132PD F=FMA +VEX.66.W0.LIG.0f389d RVM Vdq Hdq Wss - VFNMADD132SS F=FMA +VEX.66.W1.LIG.0f389d RVM Vdq Hdq Wsd - VFNMADD132SD F=FMA +VEX.66.W0.0f389e RVM Vx Hx Wx - VFNMSUB132PS F=FMA +VEX.66.W1.0f389e RVM Vx Hx Wx - VFNMSUB132PD F=FMA +VEX.66.W0.LIG.0f389f RVM Vdq Hdq Wss - VFNMSUB132SS F=FMA +VEX.66.W1.LIG.0f389f RVM Vdq Hdq Wsd - VFNMSUB132SD F=FMA +VEX.66.W0.0f38a6 RVM Vx Hx Wx - VFMADDSUB213PS F=FMA +VEX.66.W1.0f38a6 RVM Vx Hx Wx - VFMADDSUB213PD F=FMA +VEX.66.W0.0f38a7 RVM Vx Hx Wx - VFMSUBADD213PS F=FMA +VEX.66.W1.0f38a7 RVM Vx Hx Wx - VFMSUBADD213PD F=FMA +VEX.66.W0.0f38a8 RVM Vx Hx Wx - VFMADD213PS F=FMA +VEX.66.W1.0f38a8 RVM Vx Hx Wx - VFMADD213PD F=FMA +VEX.66.W0.LIG.0f38a9 RVM Vdq Hdq Wss - VFMADD213SS F=FMA +VEX.66.W1.LIG.0f38a9 RVM Vdq Hdq Wsd - VFMADD213SD F=FMA +VEX.66.W0.0f38aa RVM Vx Hx Wx - VFMSUB213PS F=FMA +VEX.66.W1.0f38aa RVM Vx Hx Wx - VFMSUB213PD F=FMA +VEX.66.W0.LIG.0f38ab RVM Vdq Hdq Wss - VFMSUB213SS F=FMA +VEX.66.W1.LIG.0f38ab RVM Vdq Hdq Wsd - VFMSUB213SD F=FMA +VEX.66.W0.0f38ac RVM Vx Hx Wx - VFNMADD213PS F=FMA +VEX.66.W1.0f38ac RVM Vx Hx Wx - VFNMADD213PD F=FMA +VEX.66.W0.LIG.0f38ad RVM Vdq Hdq Wss - VFNMADD213SS F=FMA +VEX.66.W1.LIG.0f38ad RVM Vdq Hdq Wsd - VFNMADD213SD F=FMA +VEX.66.W0.0f38ae RVM Vx Hx Wx - VFNMSUB213PS F=FMA +VEX.66.W1.0f38ae RVM Vx Hx Wx - VFNMSUB213PD F=FMA +VEX.66.W0.LIG.0f38af RVM Vdq Hdq Wss - VFNMSUB213SS F=FMA +VEX.66.W1.LIG.0f38af RVM Vdq Hdq Wsd - VFNMSUB213SD F=FMA +VEX.66.W0.0f38b6 RVM Vx Hx Wx - VFMADDSUB231PS F=FMA +VEX.66.W1.0f38b6 RVM Vx Hx Wx - VFMADDSUB231PD F=FMA +VEX.66.W0.0f38b7 RVM Vx Hx Wx - VFMSUBADD231PS F=FMA +VEX.66.W1.0f38b7 RVM Vx Hx Wx - VFMSUBADD231PD F=FMA +VEX.66.W0.0f38b8 RVM Vx Hx Wx - VFMADD231PS F=FMA +VEX.66.W1.0f38b8 RVM Vx Hx Wx - VFMADD231PD F=FMA +VEX.66.W0.LIG.0f38b9 RVM Vdq Hdq Wss - VFMADD231SS F=FMA +VEX.66.W1.LIG.0f38b9 RVM Vdq Hdq Wsd - VFMADD231SD F=FMA +VEX.66.W0.0f38ba RVM Vx Hx Wx - VFMSUB231PS F=FMA +VEX.66.W1.0f38ba RVM Vx Hx Wx - VFMSUB231PD F=FMA +VEX.66.W0.LIG.0f38bb RVM Vdq Hdq Wss - VFMSUB231SS F=FMA +VEX.66.W1.LIG.0f38bb RVM Vdq Hdq Wsd - VFMSUB231SD F=FMA +VEX.66.W0.0f38bc RVM Vx Hx Wx - VFNMADD231PS F=FMA +VEX.66.W1.0f38bc RVM Vx Hx Wx - VFNMADD231PD F=FMA +VEX.66.W0.LIG.0f38bd RVM Vdq Hdq Wss - VFNMADD231SS F=FMA +VEX.66.W1.LIG.0f38bd RVM Vdq Hdq Wsd - VFNMADD231SD F=FMA +VEX.66.W0.0f38be RVM Vx Hx Wx - VFNMSUB231PS F=FMA +VEX.66.W1.0f38be RVM Vx Hx Wx - VFNMSUB231PD F=FMA +VEX.66.W0.LIG.0f38bf RVM Vdq Hdq Wss - VFNMSUB231SS F=FMA +VEX.66.W1.LIG.0f38bf RVM Vdq Hdq Wsd - VFNMSUB231SD F=FMA +VEX.66.W1.L1.0f3a00 VMI Hx Wx Ib - VPERMQ F=AVX2 +VEX.66.W1.L1.0f3a01 VMI Hx Wx Ib - VPERMPD F=AVX2 +VEX.66.W0.0f3a02 RVMI Vx Hx Wx Ib VPBLENDD F=AVX2 +VEX.66.W0.0f3a04 RMI Vx Wx Ib - VPERMILPS F=AVX +VEX.66.W0.0f3a05 RMI Vx Wx Ib - VPERMILPD F=AVX +VEX.66.W0.L1.0f3a06 RVMI Vx Hx Wx Ib VPERM2F128 F=AVX +VEX.66.0f3a08 RVMI Vps Hps Wps Ib VROUNDPS F=AVX +VEX.66.0f3a09 RVMI Vpd Hpd Wpd Ib VROUNDPD F=AVX +# TODO: Vx/Hx is actually Vdq/Hdq +VEX.66.LIG.0f3a0a RVMI Vx Hx Wss Ib VROUNDSS F=AVX +VEX.66.LIG.0f3a0b RVMI Vx Hx Wsd Ib VROUNDSD F=AVX +VEX.66.0f3a0c RVMI Vx Hx Wx Ib VBLENDPS F=AVX +VEX.66.0f3a0d RVMI Vx Hx Wx Ib VBLENDPD F=AVX +VEX.66.0f3a0e RVMI Vx Hx Wx Ib VPBLENDW F=AVX +VEX.66.0f3a0f RVMI Vx Hx Wx Ib VPALIGNR F=AVX +VEX.66.WIG.L0.0f3a14/m MRI Mb Vx Ib - VPEXTRB F=AVX ENC_NOSZ +VEX.66.WIG.L0.0f3a14/r MRI Rd Vx Ib - VPEXTRB F=AVX ENC_NOSZ +VEX.66.WIG.L0.0f3a15/m MRI Mw Vx Ib - VPEXTRW F=AVX ENC_NOSZ +VEX.66.WIG.L0.0f3a15/r MRI Rd Vx Ib - VPEXTRW F=AVX ENC_NOSZ +VEX.66.W0.L0.0f3a16 MRI Ey Vx Ib - VPEXTRD F=AVX ENC_NOSZ +VEX.66.W1.L0.0f3a16 MRI Ey Vx Ib - VPEXTRD I64 F=AVX ENC_NOSZ +VEX.66.W1.L0.0f3a16 MRI Ey Vx Ib - VPEXTRQ O64 F=AVX ENC_NOSZ +VEX.66.L0.0f3a17 MRI Ed Vx Ib - VEXTRACTPS F=AVX ENC_NOSZ +VEX.66.W0.L1.0f3a18 RVMI Vx Hx Wdq Ib VINSERTF128 F=AVX ENC_NOSZ +VEX.66.W0.L1.0f3a19 MRI Wdq Vx Ib - VEXTRACTF128 F=AVX ENC_NOSZ +# TODO: Wx is actually half the size +VEX.66.W0.0f3a1d MRI Wx Hx Ib - VCVTPS2PH F=F16C +VEX.66.WIG.L0.0f3a20 RVMI Vx Hx Eb Ib VPINSRB F=AVX ENC_NOSZ +VEX.66.L0.0f3a21 RVMI Vx Hx Wd Ib VINSERTPS F=AVX ENC_NOSZ +VEX.66.W0.L0.0f3a22 RVMI Vdq Hdq Ey Ib VPINSRD F=AVX ENC_NOSZ +VEX.66.W1.L0.0f3a22 RVMI Vdq Hdq Ey Ib VPINSRD I64 F=AVX ENC_NOSZ +VEX.66.W1.L0.0f3a22 RVMI Vdq Hdq Ey Ib VPINSRQ O64 F=AVX ENC_NOSZ +VEX.66.W0.L1.0f3a38 RVMI Vx Hx Wdq Ib VINSERTI128 F=AVX2 ENC_NOSZ +VEX.66.W0.L1.0f3a39 MRI Wdq Vx Ib - VEXTRACTI128 F=AVX2 ENC_NOSZ +VEX.66.0f3a40 RVMI Vx Hx Wx Ib VDPPS F=AVX +VEX.66.0f3a41 RVMI Vx Hx Wx Ib VDPPD F=AVX +VEX.66.0f3a42 RVMI Vx Hx Wx Ib VMPSADBW F=AVX +VEX.66.0f3a44 RVMI Vx Hx Wx Ib VPCLMULQDQ F=PCLMULQDQ,AVX +VEX.66.W0.L1.0f3a46 RVMI Vx Hx Wx Ib VPERM2I128 F=AVX2 +VEX.66.W0.0f3a4a RVMR Vx Hx Wx Lx VBLENDVPS F=AVX +VEX.66.W0.0f3a4b RVMR Vx Hx Wx Lx VBLENDVPD F=AVX +VEX.66.W0.0f3a4c RVMR Vx Hx Wx Lx VPBLENDVB F=AVX +VEX.66.L0.0f3a60 RMI Vx Wx Ib - VPCMPESTRM F=AVX ENC_NOSZ +VEX.66.L0.0f3a61 RMI Vx Wx Ib - VPCMPESTRI F=AVX ENC_NOSZ +VEX.66.L0.0f3a62 RMI Vx Wx Ib - VPCMPISTRM F=AVX ENC_NOSZ +VEX.66.L0.0f3a63 RMI Vx Wx Ib - VPCMPISTRI F=AVX ENC_NOSZ # # BMI1 -VEX.NP.L0.0f38f2 RVM GP GP GP - ANDN -VEX.NP.L0.0f38f3/1 VM GP GP - - BLSR -VEX.NP.L0.0f38f3/2 VM GP GP - - BLSMSK -VEX.NP.L0.0f38f3/3 VM GP GP - - BLSI -VEX.NP.L0.0f38f7 RMV GP GP GP - BEXTR +VEX.NP.L0.0f38f2 RVM Gy By Ey - ANDN F=BMI1 EFL=0--mmuu0 +VEX.NP.L0.0f38f3/1 VM By Ey - - BLSR F=BMI1 EFL=0--mmuum +VEX.NP.L0.0f38f3/2 VM By Ey - - BLSMSK F=BMI1 EFL=0--m0uum +VEX.NP.L0.0f38f3/3 VM By Ey - - BLSI F=BMI1 EFL=0--mmuum +VEX.NP.L0.0f38f7 RMV Gy Ey By - BEXTR F=BMI1 EFL=0--umuu0 # BMI2 -VEX.F2.L0.0f3af0 RMI GP GP IMM8 - RORX -VEX.NP.L0.0f38f5 RMV GP GP GP - BZHI -VEX.F2.L0.0f38f5 RVM GP GP GP - PDEP -VEX.F3.L0.0f38f5 RVM GP GP GP - PEXT -VEX.F2.L0.0f38f6 RVM GP GP GP - MULX -VEX.66.L0.0f38f7 RMV GP GP GP - SHLX -VEX.F2.L0.0f38f7 RMV GP GP GP - SHRX -VEX.F3.L0.0f38f7 RMV GP GP GP - SARX +VEX.F2.L0.0f3af0 RMI Gy Ey Ib - RORX F=BMI2 +VEX.NP.L0.0f38f5 RMV Gy Ey By - BZHI F=BMI2 EFL=0--mmuum +VEX.F2.L0.0f38f5 RVM Gy By Ey - PDEP F=BMI2 +VEX.F3.L0.0f38f5 RVM Gy By Ey - PEXT F=BMI2 +VEX.F2.L0.0f38f6 RVM Gy By Ey - MULX F=BMI2 +VEX.66.L0.0f38f7 RMV Gy Ey By - SHLX F=BMI2 +VEX.F2.L0.0f38f7 RMV Gy Ey By - SHRX F=BMI2 +VEX.F3.L0.0f38f7 RMV Gy Ey By - SARX F=BMI2 # ADX -66.0f38f6 RM GP GP - - ADCX -F3.0f38f6 RM GP GP - - ADOX +66.0f38f6 RM Gy Ey - - ADCX F=ADX EFL=-------M +F3.0f38f6 RM Gy Ey - - ADOX F=ADX EFL=M------- # # FPU # Source for UNDOC opcodes: https://www.sandpile.org/x86/opc_fpu.htm -d8/0m M MEM32 - - - FADD ENC_SEPSZ -d8/1m M MEM32 - - - FMUL ENC_SEPSZ -d8/2m M MEM32 - - - FCOM ENC_SEPSZ -d8/3m M MEM32 - - - FCOMP ENC_SEPSZ -d8/4m M MEM32 - - - FSUB ENC_SEPSZ -d8/5m M MEM32 - - - FSUBR ENC_SEPSZ -d8/6m M MEM32 - - - FDIV ENC_SEPSZ -d8/7m M MEM32 - - - FDIVR ENC_SEPSZ -d8/0r AM FPU FPU - - FADD -d8/1r AM FPU FPU - - FMUL -d8/2r AM FPU FPU - - FCOM -d8/3r AM FPU FPU - - FCOMP -d8/4r AM FPU FPU - - FSUB -d8/5r AM FPU FPU - - FSUBR -d8/6r AM FPU FPU - - FDIV -d8/7r AM FPU FPU - - FDIVR -d9/0m M MEM32 - - - FLD ENC_SEPSZ -d9/2m M MEM32 - - - FST ENC_SEPSZ -d9/3m M MEM32 - - - FSTP ENC_SEPSZ -d9/4m M MEMZ - - - FLDENV -d9/5m M MEM16 - - - FLDCW -d9/6m M MEMZ - - - FSTENV -d9/7m M MEM16 - - - FSTCW -d9/0r M FPU - - - FLD -d9/1r M FPU - - - FXCH -d9d0 NP - - - - FNOP -d9/3r MA FPU FPU - - FSTPNCE UNDOC -d9e0 NP - - - - FCHS -d9e1 NP - - - - FABS -d9e4 NP - - - - FTST -d9e5 NP - - - - FXAM -d9e8 NP - - - - FLD1 -d9e9 NP - - - - FLDL2T -d9ea NP - - - - FLDL2E -d9eb NP - - - - FLDPI -d9ec NP - - - - FLDLG2 -d9ed NP - - - - FLDLN2 -d9ee NP - - - - FLDZ -d9f0 NP - - - - F2XM1 -d9f1 NP - - - - FYL2X -d9f2 NP - - - - FPTAN -d9f3 NP - - - - FPATAN -d9f4 NP - - - - FXTRACT -d9f5 NP - - - - FPREM1 -d9f6 NP - - - - FDECSTP -d9f7 NP - - - - FINCSTP -d9f8 NP - - - - FPREM -d9f9 NP - - - - FYL2XP1 -d9fa NP - - - - FSQRT -d9fb NP - - - - FSINCOS -d9fc NP - - - - FRNDINT -d9fd NP - - - - FSCALE -d9fe NP - - - - FSIN -d9ff NP - - - - FCOS -da/0m M MEM32 - - - FIADD ENC_SEPSZ -da/1m M MEM32 - - - FIMUL ENC_SEPSZ -da/2m M MEM32 - - - FICOM ENC_SEPSZ -da/3m M MEM32 - - - FICOMP ENC_SEPSZ -da/4m M MEM32 - - - FISUB ENC_SEPSZ -da/5m M MEM32 - - - FISUBR ENC_SEPSZ -da/6m M MEM32 - - - FIDIV ENC_SEPSZ -da/7m M MEM32 - - - FIDIVR ENC_SEPSZ -da/0r M FPU - - - FCMOVB -da/1r M FPU - - - FCMOVE -da/2r M FPU - - - FCMOVBE -da/3r M FPU - - - FCMOVU -dae9 NP - - - - FUCOMPP -db/0m M MEM32 - - - FILD ENC_SEPSZ -db/1m M MEM32 - - - FISTTP ENC_SEPSZ -db/2m M MEM32 - - - FIST ENC_SEPSZ -db/3m M MEM32 - - - FISTP ENC_SEPSZ -db/5m M FPU - - - FLD ENC_SEPSZ -db/7m M FPU - - - FSTP ENC_SEPSZ -db/0r M FPU - - - FCMOVNB -db/1r M FPU - - - FCMOVNE -db/2r M FPU - - - FCMOVNBE -db/3r M FPU - - - FCMOVNU -dbe0 NP - - - - FENI8087_NOP UNDOC -dbe1 NP - - - - FDISI8087_NOP UNDOC -dbe2 NP - - - - FCLEX -dbe3 NP - - - - FINIT -dbe4 NP - - - - FSETPM287_NOP UNDOC -dbe5 NP - - - - FSETPM287_NOP UNDOC -db/5r M FPU - - - FUCOMI -db/6r M FPU - - - FCOMI -dc/0m M MEM64 - - - FADD ENC_SEPSZ -dc/1m M MEM64 - - - FMUL ENC_SEPSZ -dc/2m M MEM64 - - - FCOM ENC_SEPSZ -dc/3m M MEM64 - - - FCOMP ENC_SEPSZ -dc/4m M MEM64 - - - FSUB ENC_SEPSZ -dc/5m M MEM64 - - - FSUBR ENC_SEPSZ -dc/6m M MEM64 - - - FDIV ENC_SEPSZ -dc/7m M MEM64 - - - FDIVR ENC_SEPSZ -dc/0r MA FPU FPU - - FADD -dc/1r MA FPU FPU - - FMUL -dc/2r MA FPU FPU - - FCOM UNDOC -dc/3r MA FPU FPU - - FCOMP UNDOC -dc/4r MA FPU FPU - - FSUBR -dc/5r MA FPU FPU - - FSUB -dc/6r MA FPU FPU - - FDIVR -dc/7r MA FPU FPU - - FDIV -dd/0m M MEM64 - - - FLD ENC_SEPSZ -dd/1m M MEM64 - - - FISTTP ENC_SEPSZ -dd/2m M MEM64 - - - FST ENC_SEPSZ -dd/3m M MEM64 - - - FSTP ENC_SEPSZ -dd/4m M MEMZ - - - FRSTOR -dd/6m M MEMZ - - - FSAVE -dd/7m M MEM16 - - - FSTSW -dd/0r M FPU - - - FFREE -dd/1r AM FPU FPU - - FXCH UNDOC -dd/2r M FPU - - - FST -dd/3r M FPU - - - FSTP -dd/4r M FPU - - - FUCOM -dd/5r M FPU - - - FUCOMP -de/0m M MEM16 - - - FIADD ENC_SEPSZ -de/1m M MEM16 - - - FIMUL ENC_SEPSZ -de/2m M MEM16 - - - FICOM ENC_SEPSZ -de/3m M MEM16 - - - FICOMP ENC_SEPSZ -de/4m M MEM16 - - - FISUB ENC_SEPSZ -de/5m M MEM16 - - - FISUBR ENC_SEPSZ -de/6m M MEM16 - - - FIDIV ENC_SEPSZ -de/7m M MEM16 - - - FIDIVR ENC_SEPSZ -de/0r MA FPU FPU - - FADDP -de/1r MA FPU FPU - - FMULP -de/2r AM FPU FPU - - FCOMP UNDOC -ded9 NP - - - - FCOMPP -de/4r MA FPU FPU - - FSUBRP -de/5r MA FPU FPU - - FSUBP -de/6r MA FPU FPU - - FDIVRP -de/7r MA FPU FPU - - FDIVP -df/0m M MEM16 - - - FILD ENC_SEPSZ -df/1m M MEM16 - - - FISTTP ENC_SEPSZ -df/2m M MEM16 - - - FIST ENC_SEPSZ -df/3m M MEM16 - - - FISTP ENC_SEPSZ -df/4m M FPU - - - FBLD -df/5m M MEM64 - - - FILD ENC_SEPSZ -df/6m M FPU - - - FBSTP -df/7m M MEM64 - - - FISTP ENC_SEPSZ -df/0r M FPU - - - FFREEP UNDOC -df/1r AM FPU FPU - - FXCH UNDOC -df/2r MA FPU FPU - - FSTP UNDOC -df/3r MA FPU FPU - - FSTP UNDOC +d8/0m M Md - - - FADD F=387 ENC_SEPSZ +d8/1m M Md - - - FMUL F=387 ENC_SEPSZ +d8/2m M Md - - - FCOM F=387 ENC_SEPSZ +d8/3m M Md - - - FCOMP F=387 ENC_SEPSZ +d8/4m M Md - - - FSUB F=387 ENC_SEPSZ +d8/5m M Md - - - FSUBR F=387 ENC_SEPSZ +d8/6m M Md - - - FDIV F=387 ENC_SEPSZ +d8/7m M Md - - - FDIVR F=387 ENC_SEPSZ +d8/0r AM Ft Ft - - FADD F=387 +d8/1r AM Ft Ft - - FMUL F=387 +d8/2r AM Ft Ft - - FCOM F=387 +d8/3r AM Ft Ft - - FCOMP F=387 +d8/4r AM Ft Ft - - FSUB F=387 +d8/5r AM Ft Ft - - FSUBR F=387 +d8/6r AM Ft Ft - - FDIV F=387 +d8/7r AM Ft Ft - - FDIVR F=387 +d9/0m M Md - - - FLD F=387 ENC_SEPSZ +d9/2m M Md - - - FST F=387 ENC_SEPSZ +d9/3m M Md - - - FSTP F=387 ENC_SEPSZ +d9/4m M M - - - FLDENV F=387 +d9/5m M Mw - - - FLDCW F=387 +d9/6m M M - - - FSTENV F=387 +d9/7m M Mw - - - FSTCW F=387 +d9/0r M Ft - - - FLD F=387 +d9/1r M Ft - - - FXCH F=387 +d9d0 NP - - - - FNOP F=387 +d9/3r MA Ft Ft - - FSTPNCE F=387 UNDOC +d9e0 NP - - - - FCHS F=387 +d9e1 NP - - - - FABS F=387 +d9e4 NP - - - - FTST F=387 +d9e5 NP - - - - FXAM F=387 +d9e8 NP - - - - FLD1 F=387 +d9e9 NP - - - - FLDL2T F=387 +d9ea NP - - - - FLDL2E F=387 +d9eb NP - - - - FLDPI F=387 +d9ec NP - - - - FLDLG2 F=387 +d9ed NP - - - - FLDLN2 F=387 +d9ee NP - - - - FLDZ F=387 +d9f0 NP - - - - F2XM1 F=387 +d9f1 NP - - - - FYL2X F=387 +d9f2 NP - - - - FPTAN F=387 +d9f3 NP - - - - FPATAN F=387 +d9f4 NP - - - - FXTRACT F=387 +d9f5 NP - - - - FPREM1 F=387 +d9f6 NP - - - - FDECSTP F=387 +d9f7 NP - - - - FINCSTP F=387 +d9f8 NP - - - - FPREM F=387 +d9f9 NP - - - - FYL2XP1 F=387 +d9fa NP - - - - FSQRT F=387 +d9fb NP - - - - FSINCOS F=387 +d9fc NP - - - - FRNDINT F=387 +d9fd NP - - - - FSCALE F=387 +d9fe NP - - - - FSIN F=387 +d9ff NP - - - - FCOS F=387 +da/0m M Md - - - FIADD F=387 ENC_SEPSZ +da/1m M Md - - - FIMUL F=387 ENC_SEPSZ +da/2m M Md - - - FICOM F=387 ENC_SEPSZ +da/3m M Md - - - FICOMP F=387 ENC_SEPSZ +da/4m M Md - - - FISUB F=387 ENC_SEPSZ +da/5m M Md - - - FISUBR F=387 ENC_SEPSZ +da/6m M Md - - - FIDIV F=387 ENC_SEPSZ +da/7m M Md - - - FIDIVR F=387 ENC_SEPSZ +da/0r M Ft - - - FCMOVB F=686 EFL=-------t +da/1r M Ft - - - FCMOVE F=686 EFL=----t--- +da/2r M Ft - - - FCMOVBE F=686 EFL=----t--t +da/3r M Ft - - - FCMOVU F=686 EFL=------t- +dae9 NP - - - - FUCOMPP F=387 +db/0m M Md - - - FILD F=387 ENC_SEPSZ +db/1m M Md - - - FISTTP F=SSE3 ENC_SEPSZ +db/2m M Md - - - FIST F=387 ENC_SEPSZ +db/3m M Md - - - FISTP F=387 ENC_SEPSZ +db/5m M Ft - - - FLD F=387 ENC_SEPSZ +db/7m M Ft - - - FSTP F=387 ENC_SEPSZ +db/0r M Ft - - - FCMOVNB F=686 EFL=-------t +db/1r M Ft - - - FCMOVNE F=686 EFL=----t--- +db/2r M Ft - - - FCMOVNBE F=686 EFL=----t--t +db/3r M Ft - - - FCMOVNU F=686 EFL=------t- +dbe0 NP - - - - FENI8087_NOP F=387 UNDOC +dbe1 NP - - - - FDISI8087_NOP F=387 UNDOC +dbe2 NP - - - - FCLEX F=387 +dbe3 NP - - - - FINIT F=387 +dbe4 NP - - - - FSETPM287_NOP F=387 UNDOC +dbe5 NP - - - - FSETPM287_NOP F=387 UNDOC +db/5r M Ft - - - FUCOMI F=686 EFL=0--0m0mm +db/6r M Ft - - - FCOMI F=686 EFL=0--0m0mm +dc/0m M Mq - - - FADD F=387 ENC_SEPSZ +dc/1m M Mq - - - FMUL F=387 ENC_SEPSZ +dc/2m M Mq - - - FCOM F=387 ENC_SEPSZ +dc/3m M Mq - - - FCOMP F=387 ENC_SEPSZ +dc/4m M Mq - - - FSUB F=387 ENC_SEPSZ +dc/5m M Mq - - - FSUBR F=387 ENC_SEPSZ +dc/6m M Mq - - - FDIV F=387 ENC_SEPSZ +dc/7m M Mq - - - FDIVR F=387 ENC_SEPSZ +dc/0r MA Ft Ft - - FADD F=387 +dc/1r MA Ft Ft - - FMUL F=387 +dc/2r MA Ft Ft - - FCOM F=387 UNDOC +dc/3r MA Ft Ft - - FCOMP F=387 UNDOC +dc/4r MA Ft Ft - - FSUBR F=387 +dc/5r MA Ft Ft - - FSUB F=387 +dc/6r MA Ft Ft - - FDIVR F=387 +dc/7r MA Ft Ft - - FDIV F=387 +dd/0m M Mq - - - FLD F=387 ENC_SEPSZ +dd/1m M Mq - - - FISTTP F=387 ENC_SEPSZ +dd/2m M Mq - - - FST F=387 ENC_SEPSZ +dd/3m M Mq - - - FSTP F=387 ENC_SEPSZ +dd/4m M M - - - FRSTOR F=387 +dd/6m M M - - - FSAVE F=387 +dd/7m M Mw - - - FSTSW F=387 +dd/0r M Ft - - - FFREE F=387 +dd/1r AM Ft Ft - - FXCH F=387 UNDOC +dd/2r M Ft - - - FST F=387 +dd/3r M Ft - - - FSTP F=387 +dd/4r M Ft - - - FUCOM F=387 +dd/5r M Ft - - - FUCOMP F=387 +de/0m M Mw - - - FIADD F=387 ENC_SEPSZ +de/1m M Mw - - - FIMUL F=387 ENC_SEPSZ +de/2m M Mw - - - FICOM F=387 ENC_SEPSZ +de/3m M Mw - - - FICOMP F=387 ENC_SEPSZ +de/4m M Mw - - - FISUB F=387 ENC_SEPSZ +de/5m M Mw - - - FISUBR F=387 ENC_SEPSZ +de/6m M Mw - - - FIDIV F=387 ENC_SEPSZ +de/7m M Mw - - - FIDIVR F=387 ENC_SEPSZ +de/0r MA Ft Ft - - FADDP F=387 +de/1r MA Ft Ft - - FMULP F=387 +de/2r AM Ft Ft - - FCOMP F=387 UNDOC +ded9 NP - - - - FCOMPP F=387 +de/4r MA Ft Ft - - FSUBRP F=387 +de/5r MA Ft Ft - - FSUBP F=387 +de/6r MA Ft Ft - - FDIVRP F=387 +de/7r MA Ft Ft - - FDIVP F=387 +df/0m M Mw - - - FILD F=387 ENC_SEPSZ +df/1m M Mw - - - FISTTP F=387 ENC_SEPSZ +df/2m M Mw - - - FIST F=387 ENC_SEPSZ +df/3m M Mw - - - FISTP F=387 ENC_SEPSZ +df/4m M Ft - - - FBLD F=387 +df/5m M Mq - - - FILD F=387 ENC_SEPSZ +df/6m M Ft - - - FBSTP F=387 +df/7m M Mq - - - FISTP F=387 ENC_SEPSZ +df/0r M Ft - - - FFREEP F=387 UNDOC +df/1r AM Ft Ft - - FXCH F=387 UNDOC +df/2r MA Ft Ft - - FSTP F=387 UNDOC +df/3r MA Ft Ft - - FSTP F=387 UNDOC # FSTSW AX -dfe0 A GP16 - - - FSTSW -df/5r AM FPU FPU - - FUCOMIP -df/6r AM FPU FPU - - FCOMIP +dfe0 A Rw - - - FSTSW F=387 +df/5r AM Ft Ft - - FUCOMIP F=686 EFL=0--0m0mm +df/6r AM Ft Ft - - FCOMIP F=686 EFL=0--0m0mm # # Control Flow Enforcement -F3.0f01/5m M GP64 - - - RSTORSSP -F3.0f01e8 NP - - - - SETSSBSY -F3.0f01ea NP - - - - SAVEPREVSSP -F3.0f1e/1r M GP - - - RDSSP -F3.0f1efa NP - - - - ENDBR64 -F3.0f1efb NP - - - - ENDBR32 -66.0f38f5/m MR MEM GP - - WRUSS -NP.0f38f6/m MR MEM GP - - WRSS -F3.0fae/6m M GP - - - CLRSSBSY -F3.0fae/5r M GP - - - INCSSP +F3.0f01/5m M Mq - - - RSTORSSP F=CET +F3.0f01e8 NP - - - - SETSSBSY F=CET CPL0 +F3.0f01ea NP - - - - SAVEPREVSSP F=CET +F3.0f1e/1r M Ry - - - RDSSP F=CET +F3.0f1efa NP - - - - ENDBR64 F=CET +F3.0f1efb NP - - - - ENDBR32 F=CET +66.0f38f5/m MR My Gy - - WRUSS F=CET +NP.0f38f6/m MR My Gy - - WRSS F=CET +F3.0fae/6m M My - - - CLRSSBSY F=CET CPL0 +F3.0fae/5r M Ry - - - INCSSP F=CET # # CLDEMOTE -NP.0f1c/0m M MEM8 - - - CLDEMOTE +NP.0f1c/0m M Mb - - - CLDEMOTE F=CLDEMOTE # VIA PadLock -F3.0fa6c0 NP - - - - REP_MONTMUL ONLYVIA -F3.0fa6c8 NP - - - - REP_XSHA1 ONLYVIA -F3.0fa6d0 NP - - - - REP_XSHA256 ONLYVIA -NFx.0fa7c0 NP - - - - XSTORE ONLYVIA -F3.0fa7c0 NP - - - - REP_XSTORE ONLYVIA -F3.0fa7c8 NP - - - - REP_XCRYPTECB ONLYVIA -F3.0fa7d0 NP - - - - REP_XCRYPTCBC ONLYVIA -F3.0fa7d8 NP - - - - REP_XCRYPTCTR ONLYVIA -F3.0fa7e0 NP - - - - REP_XCRYPTCFB ONLYVIA -F3.0fa7e8 NP - - - - REP_XCRYPTOFB ONLYVIA +F3.0fa6c0 NP - - - - REP_MONTMUL F=PADLOCK ONLYVIA +F3.0fa6c8 NP - - - - REP_XSHA1 F=PADLOCK ONLYVIA +F3.0fa6d0 NP - - - - REP_XSHA256 F=PADLOCK ONLYVIA +NFx.0fa7c0 NP - - - - XSTORE F=PADLOCK ONLYVIA +F3.0fa7c0 NP - - - - REP_XSTORE F=PADLOCK ONLYVIA +F3.0fa7c8 NP - - - - REP_XCRYPTECB F=PADLOCK ONLYVIA +F3.0fa7d0 NP - - - - REP_XCRYPTCBC F=PADLOCK ONLYVIA +F3.0fa7d8 NP - - - - REP_XCRYPTCTR F=PADLOCK ONLYVIA +F3.0fa7e0 NP - - - - REP_XCRYPTCFB F=PADLOCK ONLYVIA +F3.0fa7e8 NP - - - - REP_XCRYPTOFB F=PADLOCK ONLYVIA # VMX -66.0f3880/m RM GP MEMZ - - INVEPT DEF64 -66.0f3881/m RM GP MEMZ - - INVVPID DEF64 -NP.0f01c1 NP - - - - VMCALL -66.0fc7/6m M MEM64 - - - VMCLEAR -NP.0f01d4 NP - - - - VMFUNC -NP.0f01c2 NP - - - - VMLAUNCH -NP.0f01c3 NP - - - - VMRESUME -NP.0fc7/6m M MEM64 - - - VMPTRLD -NP.0fc7/7m M MEM64 - - - VMPTRST -NP.0f78 MR GP GP - - VMREAD DEF64 -NP.0f79 MR GP GP - - VMWRITE DEF64 -NP.0f01c4 NP - - - - VMXOFF -F3.0fc7/6m M MEM64 - - - VMXON +66.0f3880/m RM Gy M - - INVEPT D64 F=VMX +66.0f3881/m RM Gy M - - INVVPID D64 F=VMX +NP.0f01c1 NP - - - - VMCALL F=VMX +66.0fc7/6m M Mq - - - VMCLEAR F=VMX +NP.0f01d4 NP - - - - VMFUNC F=VMX +NP.0f01c2 NP - - - - VMLAUNCH F=VMX +NP.0f01c3 NP - - - - VMRESUME F=VMX +NP.0fc7/6m M Mq - - - VMPTRLD F=VMX +NP.0fc7/7m M Mq - - - VMPTRST F=VMX +NP.0f78 MR Ey Gy - - VMREAD D64 F=VMX +NP.0f79 MR Ey Gy - - VMWRITE D64 F=VMX +NP.0f01c4 NP - - - - VMXOFF F=VMX +F3.0fc7/6m M Mq - - - VMXON F=VMX # SEAM/TDX -66.0f01cc NP - - - - TDCALL -66.0f01cd NP - - - - SEAMRET -66.0f01ce NP - - - - SEAMOPS -66.0f01cf NP - - - - SEAMCALL +66.0f01cc NP - - - - TDCALL F=SEAM +66.0f01cd NP - - - - SEAMRET F=SEAM +66.0f01ce NP - - - - SEAMOPS F=SEAM +66.0f01cf NP - - - - SEAMCALL F=SEAM + +# AMD CLZERO +0f01fc A Rv - - - CLZERO F=CLZERO ONLYAMD # AMD RDPRU -0f01fd NP - - - - RDPRU ONLYAMD +0f01fd NP - - - - RDPRU F=RDPRU ONLYAMD # AMD SVM -0f01d8 NP - - - - VMRUN ONLYAMD -0f01d9 NP - - - - VMMCALL ONLYAMD -0f01da NP - - - - VMLOAD ONLYAMD -0f01db NP - - - - VMSAVE ONLYAMD -0f01dc NP - - - - STGI ONLYAMD -0f01dd NP - - - - CLGI ONLYAMD -0f01de NP - - - - SKINIT ONLYAMD -0f01df NP - - - - INVLPGA ONLYAMD -NP.0f01fa NP - - - - MONITORX ONLYAMD -F3.0f01fa NP - - - - MCOMMIT ONLYAMD -NP.0f01fb NP - - - - MWAITX ONLYAMD -NP.0f01fe NP - - - - INVLPGB ONLYAMD -NP.0f01ff NP - - - - TLBSYNC ONLYAMD +0f01d8 NP - - - - VMRUN F=SVM ONLYAMD CPL0 +NFx.0f01d9 NP - - - - VMMCALL F=SVM ONLYAMD +F3.0f01d9 NP - - - - VMGEXIT F=SEVES ONLYAMD +F2.0f01d9 NP - - - - VMGEXIT F=SEVES ONLYAMD +0f01da NP - - - - VMLOAD F=SVM ONLYAMD CPL0 +0f01db NP - - - - VMSAVE F=SVM ONLYAMD CPL0 +0f01dc NP - - - - STGI F=SKINIT ONLYAMD CPL0 +0f01dd NP - - - - CLGI F=SKINIT ONLYAMD CPL0 +0f01de NP - - - - SKINIT F=SKINIT ONLYAMD CPL0 +0f01df NP - - - - INVLPGA F=SVM ONLYAMD CPL0 +NP.0f01fa NP - - - - MONITORX F=MONITORX ONLYAMD +F3.0f01fa NP - - - - MCOMMIT F=MCOMMIT ONLYAMD +NP.0f01fb NP - - - - MWAITX F=MONITORX ONLYAMD +NP.0f01fe NP - - - - INVLPGB F=INVLPGB ONLYAMD CPL0 +NP.0f01ff NP - - - - TLBSYNC F=INVLPGB ONLYAMD CPL0 # AMD SNP -F3.0f01fe NP - - - - RMPADJUST ONLYAMD ONLY64 -F2.0f01fe NP - - - - RMPUPDATE ONLYAMD ONLY64 -F3.0f01ff NP - - - - PSMASH ONLYAMD ONLY64 -F2.0f01ff NP - - - - PVALIDATE ONLYAMD ONLY64 +F3.0f01fe NP - - - - RMPADJUST O64 F=SNP ONLYAMD CPL0 +F2.0f01fe NP - - - - RMPUPDATE O64 F=SNP ONLYAMD CPL0 +F3.0f01ff NP - - - - PSMASH O64 F=SNP ONLYAMD +F2.0f01ff NP - - - - PVALIDATE O64 F=SNP ONLYAMD # WAITPKG -66.0fae/6r M GP32 - - - TPAUSE -F3.0fae/6r M GP - - - UMONITOR -F2.0fae/6r M GP32 - - - UMWAIT +66.0fae/6r M Rd - - - TPAUSE F=WAITPKG EFL=0--0000m +F3.0fae/6r M Ry - - - UMONITOR F=WAITPKG +F2.0fae/6r M Rd - - - UMWAIT F=WAITPKG EFL=0--0000m # PRWRITE -F3.0fae/4 M GP - - - PTWRITE +F3.0fae/4 M Ey - - - PTWRITE F=PTWRITE # GFNI -66.0f38cf RM XMM XMM - - GF2P8MULB -66.0f3ace RMI XMM XMM IMM8 - GF2P8AFFINEQB -66.0f3acf RMI XMM XMM IMM8 - GF2P8AFFINEINVQB +66.0f38cf RM Vx Wx - - GF2P8MULB F=GFNI +66.0f3ace RMI Vx Wx Ib - GF2P8AFFINEQB F=GFNI +66.0f3acf RMI Vx Wx Ib - GF2P8AFFINEINVQB F=GFNI # ENQCMD -F2.0f38f8/m RM GP MEM512 - - ENQCMD -F3.0f38f8/m RM GP MEM512 - - ENQCMDS +F2.0f38f8/m RM Gy Moq - - ENQCMD F=ENQCMD +F3.0f38f8/m RM Gy Moq - - ENQCMDS F=ENQCMD # PCONFIG -NP.0f01c5 NP - - - - PCONFIG +NP.0f01c5 NP - - - - PCONFIG F=PCONFIG # WBNOINVD -F3.0f09 NP - - - - WBNOINVD +F3.0f09 NP - - - - WBNOINVD F=WBNOINVD CPL0 -NP.0f01ee NP - - - - RDPKRU -NP.0f01ef NP - - - - WRPKRU -F3.0fae/0r M GP - - - RDFSBASE ONLY64 -F3.0fae/1r M GP - - - RDGSBASE ONLY64 -F3.0fae/2r M GP - - - WRFSBASE ONLY64 -F3.0fae/3r M GP - - - WRGSBASE ONLY64 -NP.0fae/4m M MEMZ - - - XSAVE INSTR_WIDTH -NP.0fae/5m M MEMZ - - - XRSTOR INSTR_WIDTH -NP.0fae/6m M MEMZ - - - XSAVEOPT INSTR_WIDTH -66.0fae/6m M MEM8 - - - CLWB -NP.0fae/7m M MEM8 - - - CLFLUSH -66.0fae/7m M MEM8 - - - CLFLUSHOPT -NP.0fc7/3m M MEMZ - - - XRSTORS INSTR_WIDTH -NP.0fc7/4m M MEMZ - - - XSAVEC INSTR_WIDTH -NP.0fc7/5m M MEMZ - - - XSAVES INSTR_WIDTH -NFx.0fc7/6r M GP - - - RDRAND -NFx.0fc7/7r M GP - - - RDSEED -F3.0fc7/7r M GP - - - RDPID DEF64 -66.0f3882/m RM GP MEM128 - - INVPCID DEF64 -NP.0f38c8 RM XMM XMM - - SHA1NEXTE -NP.0f38c9 RM XMM XMM - - SHA1MSG1 -NP.0f38ca RM XMM XMM - - SHA1MSG2 -NP.0f38cb RMA XMM XMM XMM - SHA256RNDS2 -NP.0f38cc RM XMM XMM - - SHA256MSG1 -NP.0f38cd RM XMM XMM - - SHA256MSG2 -NP.0f3acc RMI XMM XMM IMM8 - SHA1RNDS4 +NP.0f01ee NP - - - - RDPKRU F=OSPKE +NP.0f01ef NP - - - - WRPKRU F=OSPKE +F3.0fae/0r M Ry - - - RDFSBASE O64 F=FSGSBASE +F3.0fae/1r M Ry - - - RDGSBASE O64 F=FSGSBASE +F3.0fae/2r M Ry - - - WRFSBASE O64 F=FSGSBASE +F3.0fae/3r M Ry - - - WRGSBASE O64 F=FSGSBASE +NP.0fae/4m M M - - - XSAVE+w F=XSAVE +NP.0fae/5m M M - - - XRSTOR+w F=XSAVE +NP.0fae/6m M M - - - XSAVEOPT+w F=XSAVEOPT +66.0fae/6m M Mb - - - CLWB F=CLWB +NP.0fae/7m M Mb - - - CLFLUSH F=CLFLSH +66.0fae/7m M Mb - - - CLFLUSHOPT F=CLFLUSHOPT +NP.0fc7/3m M M - - - XRSTORS+w F=XSS +NP.0fc7/4m M M - - - XSAVEC+w F=XSAVEC +NP.0fc7/5m M M - - - XSAVES+w F=XSS +NFx.0fc7/6r M Rv - - - RDRAND F=RDRAND EFL=0--0000m +NFx.0fc7/7r M Rv - - - RDSEED F=RDSEED EFL=0--0000m +F3.0fc7/7r M Ry - - - RDPID D64 F=RDPID +66.0f3882/m RM Gy Mdq - - INVPCID D64 F=INVPCID CPL0 +NP.0f38c8 RM Vdq Wdq - - SHA1NEXTE F=SHA +NP.0f38c9 RM Vdq Wdq - - SHA1MSG1 F=SHA +NP.0f38ca RM Vdq Wdq - - SHA1MSG2 F=SHA +NP.0f38cb RMA Vdq Wdq Udq - SHA256RNDS2 F=SHA +NP.0f38cc RM Vdq Wdq - - SHA256MSG1 F=SHA +NP.0f38cd RM Vdq Wdq - - SHA256MSG2 F=SHA +NP.0f3acc RMI Vdq Wdq Ib - SHA1RNDS4 F=SHA -#NP.0f1a/m RM BND MEMZ - - BNDLDX -#66.0f1a RM BND BND - - BNDMOV DEF64 -#F2.0f1a RM BND GP - - BNDCU DEF64 -#F3.0f1a RM BND GP - - BNDCL DEF64 -#NP.0f1b/m MR MEMZ BND - - BNDSTX -#66.0f1b MR BND BND - - BNDMOV DEF64 -#F2.0f1b RM BND GP - - BNDCN DEF64 -#F3.0f1b/m RM BND MEMZ - - BNDMK +#NP.0f1a/m RM Z M - - BNDLDX F=MPX +#66.0f1a RM Z Z - - BNDMOV D64 F=MPX +#F2.0f1a RM Z Ey - - BNDCU D64 F=MPX +#F3.0f1a RM Z Ey - - BNDCL D64 F=MPX +#NP.0f1b/m MR M Z - - BNDSTX F=MPX +#66.0f1b MR Z Z - - BNDMOV D64 F=MPX +#F2.0f1b RM Z Ey - - BNDCN D64 F=MPX +#F3.0f1b/m RM Z M - - BNDMK F=MPX # TSXLDTRK -F2.0f01e8 NP - - - - XSUSLDTRK -F2.0f01e9 NP - - - - XRESLDTRK +F2.0f01e8 NP - - - - XSUSLDTRK F=TSXLDTRK +F2.0f01e9 NP - - - - XRESLDTRK F=TSXLDTRK # AVX_VNNI -VEX.66.W0.0f3850 RVM XMM XMM XMM - VPDPBUSD -VEX.66.W0.0f3851 RVM XMM XMM XMM - VPDPBUSDS -VEX.66.W0.0f3852 RVM XMM XMM XMM - VPDPWSSD -VEX.66.W0.0f3853 RVM XMM XMM XMM - VPDPWSSDS +VEX.66.W0.0f3850 RVM Vx Hx Wx - VPDPBUSD F=VNNI +VEX.66.W0.0f3851 RVM Vx Hx Wx - VPDPBUSDS F=VNNI +VEX.66.W0.0f3852 RVM Vx Hx Wx - VPDPWSSD F=VNNI +VEX.66.W0.0f3853 RVM Vx Hx Wx - VPDPWSSDS F=VNNI # HRESET -#F3.0f3af0c0 IA IMM8 GP32 - - HRESET +#F3.0f3af0c0 IA Ib Rd - - HRESET F=HRESET # SERIALIZE -NP.0f01e8 NP - - - - SERIALIZE +NP.0f01e8 NP - - - - SERIALIZE F=SERIALIZE # UINTR -F3.0f01ec NP - - - - UIRET ONLY64 -F3.0f01ed NP - - - - TESTUI ONLY64 -F3.0f01ee NP - - - - CLUI ONLY64 -F3.0f01ef NP - - - - STUI ONLY64 -F3.0fc7/6r M GP - - - SENDUIPI DEF64 ONLY64 +F3.0f01ec NP - - - - UIRET O64 F=UINTR +F3.0f01ed NP - - - - TESTUI O64 F=UINTR +F3.0f01ee NP - - - - CLUI O64 F=UINTR +F3.0f01ef NP - - - - STUI O64 F=UINTR +F3.0fc7/6r M Ry - - - SENDUIPI O64 D64 F=UINTR # AESKLE/KL (Key Locker) -F3.0f38d8/0m M MEMZ - - - AESENCWIDE128KL -F3.0f38d8/1m M MEMZ - - - AESDECWIDE128KL -F3.0f38d8/2m M MEMZ - - - AESENCWIDE256KL -F3.0f38d8/3m M MEMZ - - - AESDECWIDE256KL -F3.0f38dc/m RM XMM MEMZ - - AESENC128KL -F3.0f38dc/r RM XMM XMM - - LOADIWKEY -F3.0f38dd/m RM XMM MEMZ - - AESDEC128KL -F3.0f38de/m RM XMM MEMZ - - AESENC256KL -F3.0f38df/m RM XMM MEMZ - - AESDEC256KL -F3.0f38fa/r RM GP32 GP32 - - ENCODEKEY128 -F3.0f38fb/r RM GP32 GP32 - - ENCODEKEY256 +F3.0f38d8/0m M M - - - AESENCWIDE128KL F=AESKLE +F3.0f38d8/1m M M - - - AESDECWIDE128KL F=AESKLE +F3.0f38d8/2m M M - - - AESENCWIDE256KL F=AESKLE +F3.0f38d8/3m M M - - - AESDECWIDE256KL F=AESKLE +F3.0f38dc/m RM Vx M - - AESENC128KL F=AESKLE +F3.0f38dc/r RM Vx Ux - - LOADIWKEY F=AESKLE +F3.0f38dd/m RM Vx M - - AESDEC128KL F=AESKLE +F3.0f38de/m RM Vx M - - AESENC256KL F=AESKLE +F3.0f38df/m RM Vx M - - AESDEC256KL F=AESKLE +F3.0f38fa/r RM Gd Rd - - ENCODEKEY128 F=AESKLE +F3.0f38fb/r RM Gd Rd - - ENCODEKEY256 F=AESKLE # FRED -F2.0f00/6 M GP16 - - - LKGS -F3.0f01ca NP - - - - ERETU -F2.0f01ca NP - - - - ERETS +F2.0f00/6 M Ew - - - LKGS F=FRED +F3.0f01ca NP - - - - ERETU F=FRED +F2.0f01ca NP - - - - ERETS F=FRED diff --git a/parseinstrs.py b/parseinstrs.py index 479ebac..ff87b78 100644 --- a/parseinstrs.py +++ b/parseinstrs.py @@ -80,12 +80,64 @@ ENCODINGS = { ENCODING_OPTYS = ["modrm", "modreg", "vexreg", "zeroreg", "imm"] ENCODING_OPORDER = { enc: sorted(ENCODING_OPTYS, key=lambda ty: getattr(ENCODINGS[enc], ty+"_idx")^3) for enc in ENCODINGS} -OPKIND_REGEX = re.compile(r"^([A-Z]+)([0-9]+)?$") -OPKIND_DEFAULTS = {"GP": -1, "IMM": -1, "SEG": -1, "MEM": -1, "XMM": -2, "MMX": 8, "FPU": 10} -OPKIND_KINDS = ("IMM", "MEM", "GP", "MMX", "XMM", "SEG", "FPU", "MEM", "MASK", "CR", "DR", "TMM", "BND") +OPKIND_CANONICALIZE = { + "I": "IMM", # immediate + "A": "IMM", # Direct address, far jmp + "J": "IMM", # RIP-relative address + "M": "MEM", # ModRM.r/m selects memory only + "O": "MEM", # Direct address, FD/TD encoding + "R": "GP", # ModRM.r/m selects GP + "B": "GP", # VEX.vvvv selects GP + "E": "GP", # ModRM.r/m selects GP or memory + "G": "GP", # ModRM.reg selects GP + "P": "MMX", # ModRM.reg selects MMX + "N": "MMX", # ModRM.r/m selects MMX + "Q": "MMX", # ModRM.r/m selects MMX or memory + "V": "XMM", # ModRM.reg selects XMM + "H": "XMM", # VEX.vvvv selects XMM + "L": "XMM", # bits7:4 of imm8 select XMM + "U": "XMM", # ModRM.r/m selects XMM + "W": "XMM", # ModRM.r/m selects XMM or memory + "S": "SEG", # ModRM.reg selects SEG + "C": "CR", # ModRM.reg selects CR + "D": "DR", # ModRM.reg selects DR + + # Custom names + "F": "FPU", # F is used for RFLAGS by Intel + "K": "MASK", + "T": "TMM", + "Z": "BND", +} +OPKIND_SIZES = { + "b": 1, + "w": 2, + "d": 4, + "ss": 4, # Scalar single of XMM + "q": 8, + "sd": 8, # Scalar double of XMM + "t": 10, # FPU/ten-byte + "dq": 16, + "qq": 32, + "oq": 64, # oct-quadword + "": 0, # for MEMZ + "v": -1, + "y": -1, # actually, dword or qword + "z": -1, # actually, op-size maxed at 4 (immediates) + "a": -1, # actually, twice the size + "p": -1, # actually, far pointer = SZ_OP + 2 + "x": -2, + "pd": -2, # packed double + "ps": -2, # packed single + + # Custom names + "bs": -1, # sign-extended immediate + "zd": 4, # z-immediate, but always 4-byte operand + "zq": 8, # z-immediate, but always 8-byte operand +} class OpKind(NamedTuple): - size: int kind: str + sizestr: str + size: int SZ_OP = -1 SZ_VEC = -2 @@ -96,17 +148,12 @@ class OpKind(NamedTuple): if res is None: raise Exception("unspecified operand size") return res + def immsize(self, opsz): + maxsz = 1 if self.sizestr == "bs" else 4 if self.sizestr[0] == "z" else 8 + return min(maxsz, self.abssize(opsz)) @classmethod def parse(cls, op): - op = {"MEMZ": "MEM0", "MEMV": "XMM"}.get(op, op) - match = OPKIND_REGEX.match(op) - if not match: - raise Exception(f"invalid opkind str: {op}") - kind, size = match.groups() - size = int(size) // 8 if size else OPKIND_DEFAULTS.get(kind, 0) - if kind not in OPKIND_KINDS: - raise Exception(f"invalid opkind kind: {op}") - return cls(size, kind) + return cls(OPKIND_CANONICALIZE[op[0]], op[1:], OPKIND_SIZES[op[1:]]) class InstrDesc(NamedTuple): mnemonic: str @@ -129,6 +176,9 @@ class InstrDesc(NamedTuple): @classmethod def parse(cls, desc): desc = desc.split() + if desc[5][-2:] == "+w": + desc[5] = desc[5][:-2] + desc.append("INSTR_WIDTH") operands = tuple(OpKind.parse(op) for op in desc[1:5] if op != "-") return cls(desc[5], desc[0], operands, frozenset(desc[6:])) @@ -140,10 +190,7 @@ class InstrDesc(NamedTuple): return 1 if self.mnemonic == "ENTER": return 3 - if "IMM_8" in self.flags: - return 1 - max_imm_size = 4 if self.mnemonic != "MOVABS" else 8 - return min(max_imm_size, self.operands[flags.imm_idx^3].abssize(opsz)) + return self.operands[flags.imm_idx^3].immsize(opsz) def optype_str(self): optypes = ["", "", "", ""] @@ -207,18 +254,18 @@ class InstrDesc(NamedTuple): raise Exception("invalid regty for op 3, must be VEC") # Miscellaneous Flags - if "SIZE_8" in self.flags: extraflags["opsize"] = 1 - if "DEF64" in self.flags: extraflags["opsize"] = 2 - if "FORCE64" in self.flags: extraflags["opsize"] = 3 + if "SZ8" in self.flags: extraflags["opsize"] = 1 + if "D64" in self.flags: extraflags["opsize"] = 2 + if "F64" in self.flags: extraflags["opsize"] = 3 if "INSTR_WIDTH" in self.flags: extraflags["instr_width"] = 1 if "LOCK" in self.flags: extraflags["lock"] = 1 if "VSIB" in self.flags: extraflags["vsib"] = 1 if modrm: extraflags["modrm"] = 1 - if "USE66" not in self.flags and (ign66 or "IGN66" in self.flags): + if "U66" not in self.flags and (ign66 or "I66" in self.flags): extraflags["ign66"] = 1 - if self.imm_size(1 if "SIZE_8" in self.flags else 8) == 1: + if self.imm_size(1 if "SZ8" in self.flags else 8) == 1: extraflags["imm_control"] = flags.imm_control | 1 enc = flags._replace(**extraflags)._encode() @@ -455,7 +502,7 @@ def decode_table(entries, modes): desc_idx = desc_map[descenc] = len(descs) descs.append(descenc) for i, mode in enumerate(modes): - if "ONLY%d"%(96-mode) not in desc.flags: + if "IO"[mode <= 32]+"64" not in desc.flags: trie.add_opcode(opcode, desc_idx, i, weak) trie.deduplicate() @@ -497,10 +544,10 @@ def encode_table(entries): mnemonics = defaultdict(list) mnemonics["FE_NOP"].append(("NP", 0, 0, "0x90")) for weak, opcode, desc in entries: - if "ONLY32" in desc.flags or desc.mnemonic[:9] == "RESERVED_": + if "I64" in desc.flags or desc.mnemonic[:9] == "RESERVED_": continue - opsizes = {8} if "SIZE_8" in desc.flags else {16, 32, 64} + opsizes = {8} if "SZ8" in desc.flags else {16, 32, 64} hasvex, vecsizes = False, {128} opc_i = opcode.opc @@ -518,7 +565,7 @@ def encode_table(entries): if opcode.prefix: if opcode.prefix in ("66", "F2", "F3"): opc_flags += "|OPC_" + opcode.prefix - if "USE66" not in desc.flags and opcode.prefix != "NFx": + if "U66" not in desc.flags and opcode.prefix != "NFx": opsizes -= {16} if opcode.vexl == "IG": vecsizes = {0} @@ -531,9 +578,9 @@ def encode_table(entries): opsizes -= {32 if opcode.rexw == "1" else 64} if opcode.rexw == "1": opc_flags += "|OPC_REXW" - if "DEF64" in desc.flags: + if "D64" in desc.flags: opsizes -= {32} - if "INSTR_WIDTH" not in desc.flags and all(op.size != OpKind.SZ_OP for op in desc.operands): + if "SZ8" not in desc.flags and "INSTR_WIDTH" not in desc.flags and all(op.size != OpKind.SZ_OP for op in desc.operands): opsizes = {0} if "VSIB" not in desc.flags and all(op.size != OpKind.SZ_VEC for op in desc.operands): vecsizes = {0} # for VEX-encoded general-purpose instructions. @@ -545,7 +592,7 @@ def encode_table(entries): prepend_opsize = max(opsizes) > 0 and not separate_opsize prepend_vecsize = hasvex and max(vecsizes) > 0 and not separate_opsize - if "FORCE64" in desc.flags: + if "F64" in desc.flags: opsizes = {64} prepend_opsize = False @@ -571,12 +618,12 @@ def encode_table(entries): opc_s = hex(opc_i) + opc_flags + prefix[1] if opsize == 16: opc_s += "|OPC_66" if vecsize == 256: opc_s += "|OPC_VEXL" - if opsize == 64 and "DEF64" not in desc.flags and "FORCE64" not in desc.flags: opc_s += "|OPC_REXW" + if opsize == 64 and "D64" not in desc.flags and "F64" not in desc.flags: opc_s += "|OPC_REXW" # Construct mnemonic name mnem_name = {"MOVABS": "MOV", "XCHG_NOP": "XCHG"}.get(desc.mnemonic, desc.mnemonic) name = "FE_" + prefix[0] + mnem_name - if prepend_opsize and not ("DEF64" in desc.flags and opsize == 64): + if prepend_opsize and not ("D64" in desc.flags and opsize == 64): name += f"_{opsize}"[name[-1] not in "0123456789":] if prepend_vecsize: name += f"_{vecsize}"[name[-1] not in "0123456789":]