Commit 7b76b200 authored by Julian Kranz's avatar Julian Kranz

X86 Pretty Printer

- Added remaining instructions
- Bug fixes
parent e56ecd73
......@@ -207,15 +207,45 @@ val show/instruction insn =
| ADC x: "ADC" -++ show/arity2 x
| ADD x: "ADD" -++ show/arity2 x
| ADDPD x: "ADDPD" -++ show/arity2 x
| ADDPS x: "ADDPS" -++ show/arity2 x
| ADDSD x: "ADDSD" -++ show/arity2 x
| ADDSS x: "ADDSS" -++ show/arity2 x
| ADDSUBPD x: "ADDSUBPD" -++ show/arity2 x
| ADDSUBPS x: "ADDSUBPS" -++ show/arity2 x
| AESDEC x: "AESDEC" -++ show/arity2 x
| AESDECLAST x: "AESDECLAST" -++ show/arity2 x
| AESENC x: "AESENC" -++ show/arity2 x
| AESENCLAST x: "AESENCLAST" -++ show/arity2 x
| AESIMC x: "AESIMC" -++ show/arity2 x
| AESKEYGENASSIST x: "AESKEYGENASSIST" -++ show/arity3 x
| AND x: "AND" -++ show/arity2 x
| ANDNPD x: "ANDNPD" -++ show/arity2 x
| ANDNPS x: "ANDNPS" -++ show/arity2 x
| ANDPD x: "ANDPD" -++ show/arity2 x
| ANDPS x: "ANDPS" -++ show/arity2 x
| ARPL x: "ARPL" -++ show/arity2 x
| BLENDPD x: "BLENDPD" -++ show/arity3 x
| BLENDPS x: "BLENDPS" -++ show/arity3 x
| BLENDVPD x: "BLENDVPD" -++ show/arity3 x
| BLENDVPS x: "BLENDVPS" -++ show/arity2 x
| BOUND x: "BOUND" -++ show/arity2 x
| BSF x: "BSF" -++ show/arity2 x
| BSR x: "BSR" -++ show/arity2 x
| BSWAP x: "BSWAP" -++ show/arity1 x
| BT x: "BT" -++ show/arity2 x
| BTC x: "BTC" -++ show/arity2 x
| BTR x: "BTR" -++ show/arity2 x
| BTS x: "BTS" -++ show/arity2 x
| CALL x: "CALL" -++ show/flow1 x
| CBW: "CBW"
| CDQ
| CDQE: "CDQE"
| CLC: "CLC"
| CLD: "CLD"
| CLFLUSH x: "CLFLUSH" -++ show/arity1 x
| CLI: "CLI"
| CLTS: "CLTS"
| CMC: "CMC"
| CMOVA x: "CMOVA" -++ show/arity2 x
| CMOVAE x: "CMOVAE" -++ show/arity2 x
| CMOVB x: "CMOVB" -++ show/arity2 x
......@@ -247,19 +277,66 @@ val show/instruction insn =
| CMOVS x: "CMOVS" -++ show/arity2 x
| CMOVZ x: "CMOVZ" -++ show/arity2 x
| CMP x: "CMP" -++ show/arity2 x
| CMPPD x: "CMPPD" -++ show/arity3 x
| CMPPS x: "CMPPS" -++ show/arity3 x
| CMPSB: "CMPSB"
| CMPSD: "CMPSD"
| CMPSD x: "CMPSD" -++ show/varity x
| CMPSQ: "CMPSQ"
| CMPSS x: "CMPSS" -++ show/arity3 x
| CMPSW: "CMPSW"
| CMPXCHG x: "CMPXCHG" -++ show/arity2 x
| CMPXCHG16B x: "CMPXCHG16B" -++ show/arity1 x
| CMPXCHG8B x: "CMPXCHG8B" -++ show/arity1 x
| COMISD x: "COMISD" -++ show/arity2 x
| COMISS x: "COMISS" -++ show/arity2 x
| CPUID: "CPUID"
| CQO: "CQO"
| CRC32 x: "CRC32" -++ show/arity2 x
| CVTDQ2PD x: "CVTDQ2PD" -++ show/arity2 x
| CVTDQ2PS x: "CVTDQ2PS" -++ show/arity2 x
| CVTPD2DQ x: "CVTPD2DQ" -++ show/arity2 x
| CVTPD2PI x: "CVTPD2PI" -++ show/arity2 x
| CVTPD2PS x: "CVTPD2PS" -++ show/arity2 x
| CVTPI2PD x: "CVTPI2PD" -++ show/arity2 x
| CVTPI2PS x: "CVTPI2PS" -++ show/arity2 x
| CVTPS2DQ x: "CVTPS2DQ" -++ show/arity2 x
| CVTPS2PD x: "CVTPS2PD" -++ show/arity2 x
| CVTPS2PI x: "CVTPS2PI" -++ show/arity2 x
| CVTSD2SI x: "CVTSD2SI" -++ show/arity2 x
| CVTSD2SS x: "CVTSD2SS" -++ show/arity2 x
| CVTSI2SD x: "CVTSI2SD" -++ show/arity2 x
| CVTSI2SS x: "CVTSI2SS" -++ show/arity2 x
| CVTSS2SD x: "CVTSS2SD" -++ show/arity2 x
| CVTSS2SI x: "CVTSS2SI" -++ show/arity2 x
| CVTTPD2DQ x: "CVTTPD2DQ" -++ show/arity2 x
| CVTTPD2PI x: "CVTTPD2PI" -++ show/arity2 x
| CVTTPS2DQ x: "CVTTPS2DQ" -++ show/arity2 x
| CVTTPS2PI x: "CVTTPS2PI" -++ show/arity2 x
| CVTTSD2SI x: "CVTTSD2SI" -++ show/arity2 x
| CVTTSS2SI x: "CVTTSS2SI" -++ show/arity2 x
| CWD: "CWD"
| CWDE: "CWDE"
| DAA: "DAA"
| DAS: "DAS"
| DEC x: "DEC" -++ show/arity1 x
| DIV x: "DIV" -++ show/arity1 x
| DIVSD x: "DIVSD" -++ show/arity1 x
| DIVPD x: "DIVPD" -++ show/arity2 x
| DIVPS x: "DIVPS" -++ show/arity2 x
| DIVSD x: "DIVSD" -++ show/arity2 x
| DIVSS x: "DIVSS" -++ show/arity2 x
| DPPD x: "DPPD" -++ show/arity3 x
| DPPS x: "DPPS" -++ show/arity3 x
| EMMS: "EMMS"
| ENTER x: "ENTER" -++ show/arity2 x
| EXTRACTPS x: "EXTRACTPS" -++ show/arity3 x
| F2XM1
| FABS: "FABS"
| FADD x: "FADD" -++ show/arity2 x
| FADDP x: "FADDP" -++ show/arity2 x
| FBLD x: "FBLD" -++ show/arity1 x
| FBSTP x: "FBSTP" -++ show/arity1 x
| FCHS: "FCHS"
| FCLEX: "FCLEX"
| FCMOVB x: "FCMOVB" -++ show/arity2 x
| FCMOVBE x: "FCMOVBE" -++ show/arity2 x
| FCMOVE x: "FCMOVE" -++ show/arity2 x
......@@ -268,28 +345,105 @@ val show/instruction insn =
| FCMOVNE x: "FCMOVNE" -++ show/arity2 x
| FCMOVNU x: "FCMOVNU" -++ show/arity2 x
| FCMOVU x: "FCMOVU" -++ show/arity2 x
| FCOM x: "FCOM" -++ show/arity1 x
| FCOMI x: "FCOMI" -++ show/arity2 x
| FCOMIP x: "FCOMIP" -++ show/arity2 x
| FCOMP x: "FCOMP" -++ show/arity1 x
| FCOMPP: "FCOMPP"
| FCOS: "FCOS"
| FDECSTP: "FDECSTP"
| FDIV x: "FDIV" -++ show/arity2 x
| FDIVP x: "FDIVP" -++ show/arity2 x
| FDIVR x: "FDIVR" -++ show/arity2 x
| FDIVRP x: "FDIVRP" -++ show/arity2 x
| FFREE x: "FFREE" -++ show/arity1 x
| FIADD x: "FIADD" -++ show/arity1 x
| FICOM x: "FICOM" -++ show/arity1 x
| FICOMP x: "FICOMP" -++ show/arity1 x
| FIDIV x: "FIDIV" -++ show/arity2 x
| FIDIVR x: "FIDIVR" -++ show/arity1 x
| FILD x: "FILD" -++ show/arity1 x
| FIMUL x: "FIMUL" -++ show/arity1 x
| FINCSTP: "FINCSTP"
| FINIT: "FINIT"
| FIST x: "FIST" -++ show/arity1 x
| FISTP x: "FISTP" -++ show/arity1 x
| FISTTP x: "FISTTP" -++ show/arity1 x
| FISUB x: "FISUB" -++ show/arity1 x
| FISUBR x: "FISUBR" -++ show/arity1 x
| FLD x: "FLD" -++ show/arity1 x
| FLD1: "FLD1"
| FLD1
| FLDCW x: "FLDCW" -++ show/arity1 x
| FLDENV x: "FLDENV" -++ show/arity1 x
| FLDL2E: "FLDL2E"
| FLDL2T: "FLD2T"
| FLDLG2: "FLDLG2"
| FLDLN2: "FLDLN2"
| FLDL2E
| FLDL2T
| FLDLG2
| FLDLN2
| FLDPI: "FLDPI"
| FLDZ: "FLDZ"
| FMUL x: "FMUL" -++ show/arity2 x
| FMULP x: "FMULP" -++ show/arity2 x
| FNCLEX: "FNCLEX"
| FNINIT: "FNINIT"
| FNOP: "FNOP"
| FNSAVE x: "FNSAVE" -++ show/arity1 x
| FNSTCW x: "FNSTCW" -++ show/arity1 x
| FNSTENV x: "FNSTENV" -++ show/arity1 x
| FNSTSW x: "FNSTSW" -++ show/arity1 x
| FPATAN: "FPATAN"
| FPREM: "FPREM"
| FPREM1
| FPTAN: "FPTAN"
| FRNDINT: "FRNDINT"
| FRSTOR x: "FRSTOR" -++ show/arity1 x
| FSAVE x: "FSAVE" -++ show/arity1 x
| FSCALE: "FSCALE"
| FSIN: "FSIN"
| FSINCOS: "FSINCOS"
| FSQRT: "FSQRT"
| FST x: "FST" -++ show/arity1 x
| FSTCW x: "FSTCW" -++ show/arity1 x
| FSTENV x: "FSTENV" -++ show/arity1 x
| FSTP x: "FSTP" -++ show/arity1 x
| FSTSW x: "FSTSW" -++ show/arity1 x
| FSUB x: "FSUB" -++ show/arity2 x
| FSUBP x: "FSUBP" -++ show/arity2 x
| FSUBR x: "FSUBR" -++ show/arity2 x
| FSUBRP x: "FSUBRP" -++ show/arity2 x
| FTST: "FTST"
| FUCOM x: "FUCOM" -++ show/arity1 x
| FUCOMI x: "FUCOMI" -++ show/arity1 x
| FUCOMIP x: "FUCOMIP" -++ show/arity1 x
| FUCOMP x: "FUCOMP" -++ show/arity1 x
| FUCOMPP: "FUCOMPP"
| FXAM: "FXAM"
| FXCH x: "FXCH" -++ show/arity1 x
| FXRSTOR64_m512byte
| FXRSTOR_m512byte
| FXSAVE64_m512byte
| FXSAVE_m512byte
| FXTRACT: "FXTRACT"
| FYL2X
| FYL2XP1
| HADDPD x: "HADDPD" -++ show/arity2 x
| HADDPS x: "HADDPS" -++ show/arity2 x
| HLT: "HLT"
| HSUBPD x: "HSUBPD" -++ show/arity2 x
| HSUBPS x: "HSUBPS" -++ show/arity2 x
| IDIV x: "IDIV" -++ show/arity1 x
| IMUL x: "IMUL" -++ show/arity1 x
| IMUL x: "IMUL" -++ show/varity x
| IN x: "IN" -++ show/arity2 x
| INC x: "INC" -++ show/arity1 x
| INSERTPS x: "INSERTPS" -++ show/arity3 x
| INT x: "INT" -++ show/arity1 x
| INT0
| INT3
| INVD: "INVD"
| INVLPG x: "INVLPG" -++ show/arity1 x
| INVPCID x: "INVPCID" -++ show/arity2 x
| IRET: "IRET"
| IRETD: "IRETD"
| IRETQ: "IRETQ"
| JA x: "JA" -++ show/flow1 x
| JAE x: "JAE" -++ show/flow1 x
| JB x: "JB" -++ show/flow1 x
......@@ -324,10 +478,32 @@ val show/instruction insn =
| JRCXZ x: "JRCXZ" -++ show/flow1 x
| JS x: "JS" -++ show/flow1 x
| JZ x: "JZ" -++ show/flow1 x
| LAHF: "LAHF"
| LAR x: "LAR" -++ show/arity2 x
| LDDQU x: "LDDQU" -++ show/arity2 x
| LDMXCSR x: "LDMXCSR" -++ show/arity1 x
| LDS x: "LDS" -++ show/arity2 x
| LEA x: "LEA" -++ show/arity2 x
| LEAVE: "LEAVE"
| LES x: "LES" -++ show/arity2 x
| LFENCE: "LFENCE"
| LFS x: "LFS" -++ show/arity2 x
| LGDT x: "LGDT" -++ show/arity1 x
| LGS x: "LGS" -++ show/arity2 x
| LIDT x: "LIDT" -++ show/arity1 x
| LLDT x: "LLDT" -++ show/arity1 x
| LMSW x: "LMSW" -++ show/arity1 x
| LOCK: "LOCK"
| LODSB: "LODSB"
| LODSD: "LODSD"
| LODSQ: "LODSQ"
| LODSW: "LODSW"
| LOOP x: "LOOP" -++ show/flow1 x
| LOOPE x: "LOOPE" -++ show/flow1 x
| LOOPNE x: "LOOPNE" -++ show/flow1 x
| LSL x: "LSL" -++ show/arity2 x
| LSS x: "LSS" -++ show/arity2 x
| LTR x: "LTR" -++ show/arity1 x
| MASKMOVDQU x: "MASKMOVDQU" -++ show/arity2 x
| MASKMOVQ x: "MASKMOVQ" -++ show/arity2 x
| MAXPD x: "MAXPD" -++ show/arity2 x
......@@ -393,23 +569,23 @@ val show/instruction insn =
| OUT x: "OUT" -++ show/arity2 x
| OUTS: "OUTS"
| OUTSB: "OUTSB"
| OUTSW: "OUTSW"
| OUTSD: "OUTSD"
| OUTSW: "OUTSW"
| PABSB x: "PABSB" -++ show/arity2 x
| PABSW x: "PABSW" -++ show/arity2 x
| PABSD x: "PABSD" -++ show/arity2 x
| PACKSSWB x: "PACKSSWB" -++ show/arity2 x
| PABSW x: "PABSW" -++ show/arity2 x
| PACKSSDW x: "PACKSSDW" -++ show/arity2 x
| PACKSSWB x: "PACKSSWB" -++ show/arity2 x
| PACKUSDW x: "PACKUSDW" -++ show/arity2 x
| PACKUSWB x: "PACKUSWB" -++ show/arity2 x
| PADDB x: "PADDB" -++ show/arity2 x
| PADDD x: "PADDD" -++ show/arity2 x
| PADDW x: "PADDW" -++ show/arity2 x
| PADDQ x: "PADDQ" -++ show/arity2 x
| PADDSB x: "PADDSB" -++ show/arity2 x
| PADDSW x: "PADDSW" -++ show/arity2 x
| PADDUSB x: "PADDUSB" -++ show/arity2 x
| PADDUSW x: "PADDUSW" -++ show/arity2 x
| PADDW x: "PADDW" -++ show/arity2 x
| PALIGNR x: "PALIGNR" -++ show/arity3 x
| PAND x: "PAND" -++ show/arity2 x
| PANDN x: "PANDN" -++ show/arity2 x
......@@ -428,8 +604,8 @@ val show/instruction insn =
| PCMPGRD x: "PCMPGRD" -++ show/arity2 x
| PCMPGTB x: "PCMPGTB" -++ show/arity2 x
| PCMPGTD x: "PCMPGTD" -++ show/arity2 x
| PCMPGTW x: "PCMPGTW" -++ show/arity2 x
| PCMPGTQ x: "PCMPGTQ" -++ show/arity2 x
| PCMPGTW x: "PCMPGTW" -++ show/arity2 x
| PCMPISTRI x: "PCMPISTRI" -++ show/arity3 x
| PCMPISTRM x: "PCMPISTRM" -++ show/arity3 x
| PEXTRB x: "PEXTRB" -++ show/arity3 x
......@@ -437,12 +613,12 @@ val show/instruction insn =
| PEXTRQ x: "PEXTRQ" -++ show/arity3 x
| PEXTRW x: "PEXTRW" -++ show/arity3 x
| PHADDD x: "PHADDD" -++ show/arity2 x
| PHADDW x: "PHADDW" -++ show/arity2 x
| PHADDSW x: "PHADDSW" -++ show/arity2 x
| PHADDW x: "PHADDW" -++ show/arity2 x
| PHMINPOSUW x: "PHMINPOSUW" -++ show/arity2 x
| PHSUBW x: "PHSUBW" -++ show/arity2 x
| PHSUBD x: "PHSUBD" -++ show/arity2 x
| PHSUBSW x: "PHSUBSW" -++ show/arity2 x
| PHSUBW x: "PHSUBW" -++ show/arity2 x
| PINSRB x: "PINSRB" -++ show/arity3 x
| PINSRD x: "PINSRD" -++ show/arity3 x
| PINSRQ x: "PINSRQ" -++ show/arity3 x
......@@ -461,42 +637,109 @@ val show/instruction insn =
| PMINUB x: "PMINUB" -++ show/arity2 x
| PMINUD x: "PMINUD" -++ show/arity2 x
| PMINUW x: "PMINUW" -++ show/arity2 x
| PMOVMSKB x: "PMOVMSKB" -++ show/arity2 x
| PMOVSXBD x: "PMOVSXBD" -++ show/arity2 x
| PMOVSXBQ x: "PMOVSXBQ" -++ show/arity2 x
| PMOVSXBW x: "PMOVSXBW" -++ show/arity2 x
| PMOVSXDQ x: "PMOVSXDQ" -++ show/arity2 x
| PMOVSXWD x: "PMOVSXWD" -++ show/arity2 x
| PMOVSXWQ x: "PMOVSXWQ" -++ show/arity2 x
| PMOVZXBD x: "PMOVZXBD" -++ show/arity2 x
| PMOVZXBQ x: "PMOVZXBQ" -++ show/arity2 x
| PMOVZXBW x: "PMOVZXBW" -++ show/arity2 x
| PMOVZXDQ x: "PMOVZXDQ" -++ show/arity2 x
| PMOVZXWD x: "PMOVZXWD" -++ show/arity2 x
| PMOVZXWQ x: "PMOVZXWQ" -++ show/arity2 x
| PMULDQ x: "PMULDQ" -++ show/arity2 x
| PMULHRSW x: "PMULHRSW" -++ show/arity2 x
| PMULHUW x: "PMULHUW" -++ show/arity2 x
| PMULHW x: "PMULHW" -++ show/arity2 x
| PMULLD x: "PMULLD" -++ show/arity2 x
| PMULLW x: "PMULLW" -++ show/arity2 x
| PMULUDQ x: "PMULUDQ" -++ show/arity2 x
| POP x: "POP" -++ show/arity1 x
| POPA: "POPA"
| POPAD: "POPAD"
| POPCNT x: "POPCNT" -++ show/arity2 x
| POPF: "POPF"
| POPFD: "POPFD"
| POPFQ: "POPFQ"
| POR x: "POR" -++ show/arity2 x
| PREFETCHNTA x: "PREFETCHNTA" -++ show/arity1 x
| PREFETCHT0 x: "PREFETCHT0" -++ show/arity1 x
| PREFETCHT1 x: "PREFETCHT1" -++ show/arity1 x
| PREFETCHT2 x: "PREFETCHT2" -++ show/arity1 x
| PREFETCHW x: "PREFETCHW" -++ show/arity1 x
| PSADBW x: "PSADBW" -++ show/arity2 x
| PSHUFB x: "PSHUFB" -++ show/arity2 x
| PSHUFD x: "PSHUFD" -++ show/arity3 x
| PSHUFHW x: "PSHUFHW" -++ show/arity3 x
| PSHUFLW x: "PSHUFLW" -++ show/arity3 x
| PSHUFW x: "PSHUFW" -++ show/arity3 x
| PSIGNB x: "PSIGNB" -++ show/arity2 x
| PSIGND x: "PSIGND" -++ show/arity2 x
| PSIGNW x: "PSIGNW" -++ show/arity2 x
| PSLLD x: "PSLLD" -++ show/arity2 x
| PSLLDQ x: "PSLLDQ" -++ show/arity2 x
#| PSLRDQ x: "PSLRDQ" -++ show/arity2 x
| PSLLQ x: "PSLLQ" -++ show/arity2 x
| PSLLW x: "PSLLW" -++ show/arity2 x
| PSRAD x: "PSRAD" -++ show/arity2 x
| PSRAW x: "PSRAW" -++ show/arity2 x
| PSRLD x: "PSRLD" -++ show/arity2 x
| PSRLDQ x: "PSRLDQ" -++ show/arity2 x
| PSRLQ x: "PSRLQ" -++ show/arity2 x
| PSRLW x: "PSRLW" -++ show/arity2 x
| PSUBB x: "PSUBB" -++ show/arity2 x
| PSUBD x: "PSUBD" -++ show/arity2 x
| PSUBQ x: "PSUBQ" -++ show/arity2 x
| PSUBSB x: "PSUBSB" -++ show/arity2 x
| PSUBSW x: "PSUBSW" -++ show/arity2 x
| PSUBUSB x: "PSUBUSB" -++ show/arity2 x
| PSUBUSW x: "PSUBUSW" -++ show/arity2 x
| PSUBW x: "PSUBW" -++ show/arity2 x
| PTEST x: "PTEST" -++ show/arity2 x
| PUNPCKLDQ x: "PUNPCKLDQ" -++ show/arity2 x
| PUNPCKLWD x: "PUNPCKLWD" -++ show/arity2 x
| PUNPCKHBW x: "PUNPCKHBW" -++ show/arity2 x
| PUNPCKHDQ x: "PUNPCKHDQ" -++ show/arity3 x
| PUNPCKHQDQ x: "PUNPCKHQDQ" -++ show/arity2 x
| PUNPCKHWD x: "PUNPCKHWD" -++ show/arity2 x
| PUNPCKLBW x: "PUNPCKLBW" -++ show/arity2 x
| PUNPCKLDQ x: "PUNPCKLDQ" -++ show/arity2 x
| PUNPCKLQDQ x: "PUNPCKLQDQ" -++ show/arity2 x
| PUNPCKLWD x: "PUNPCKLWD" -++ show/arity2 x
| PUSH x: "PUSH" -++ show/arity1 x
| PUSHA: "PUSHA"
| PUSHAD: "PUSHAD"
| PUSHF: "PUSHF"
| PUSHFD: "PUSHFD"
| PUSHFQ: "PUSHFQ"
| PXOR x: "PXOR" -++ show/arity2 x
| RCL x: "RCL" -++ show/arity2 x
| RCPPS x: "RCPPS" -++ show/arity2 x
| RCPSS x: "RCPSS" -++ show/arity2 x
| RCR x: "RCR" -++ show/arity2 x
| RDFSBASE x: "RDFSBASE" -++ show/arity1 x
| RDGSBASE x: "RDGSBASE" -++ show/arity1 x
| RDMSR: "RDMSR"
| RDPMC: "RDPMC"
| RDRAND x: "RDRAND" -++ show/arity1 x
| RDTSC: "RDTSC"
| RDTSCP: "RDTSCP"
| RET x: "RET" -++ show/varity x
| RET_FAR x: "RET_FAR" -++ show/varity x
| ROL x: "ROL" -++ show/arity2 x
| ROR x: "ROR" -++ show/arity2 x
| ROUNDPD x: "ROUNDPD" -++ show/arity3 x
| ROUNDPS x: "ROUNDPS" -++ show/arity3 x
| ROUNDSD x: "ROUNDSD" -++ show/arity3 x
| ROUNDSS x: "ROUNDSS" -++ show/arity3 x
| RSM: "RSM"
| RSQRTPS x: "RSQRTPS" -++ show/arity2 x
| RSQRTSS x: "RSQRTSS" -++ show/arity2 x
| SAHF: "SAHF"
| SAL x: "SAL" -++ show/arity2 x
| SAR x: "SAR" -++ show/arity2 x
| SBB x: "SBB" -++ show/arity2 x
| SCASB: "SACSB"
| SCASB: "SCASB"
| SCASD: "SCASD"
| SCASQ: "SCASQ"
| SCASW: "SCASW"
......@@ -531,25 +774,118 @@ val show/instruction insn =
| SETS x: "SETS" -++ show/arity1 x
| SETZ x: "SETZ" -++ show/arity1 x
| SFENCE: "SFENCE"
| SGDT x: "SGDT" -++ show/arity1 x
| SHL x: "SHL" -++ show/arity2 x
| SHLD x: "SHLD" -++ show/arity3 x
| SHR x: "SHR" -++ show/arity2 x
| SHRD x: "SHRD" -++ show/arity3 x
| SHUFPD x: "SHUFPD" -++ show/arity3 x
| SHUFPS x: "SHUFPS" -++ show/arity3 x
| SIDT x: "SIDT" -++ show/arity1 x
| SLDT x: "SLDT" -++ show/arity1 x
| SMSW x: "SMSW" -++ show/arity1 x
| SQRTPD x: "SQRTPD" -++ show/arity2 x
| SQRTPS x: "SQRTPS" -++ show/arity2 x
| SQRTSD x: "SQRTSD" -++ show/arity2 x
| SQRTSS x: "SQRTSS" -++ show/arity2 x
| STC: "STC"
| STD: "STD"
| STI: "STI"
| STMXCSR x: "STMXCSR" -++ show/arity1 x
| STOSB: "STOSB"
| STOSD: "STOSD"
| STOSQ: "STOSQ"
| STOSW: "STOSW"
| STR x: "STR" -++ show/arity1 x
| SUB x: "SUB" -++ show/arity2 x
| SUBPD x: "SUBPD" -++ show/arity2 x
| SUBPS x: "SUBPS" -++ show/arity2 x
| SUBSD x: "SUBSD" -++ show/arity2 x
| SUBSS x: "SUBSS" -++ show/arity2 x
| SWAPGS: "SWAPGS"
| SYSCALL: "SYSCALL"
| SYSENTER: "SYSENTER"
| SYSEXIT: "SYSEXIT"
| SYSRET: "SYSRET"
| TEST x: "TEST" -++ show/arity2 x
| UCOMISD x: "UCOMISD" -++ show/arity2 x
| UD2: "UD2"
| UCOMISS x: "UCOMISS" -++ show/arity2 x
| UD2
| UNPCKHPD x: "UNPCKHPD" -++ show/arity2 x
| UNPCKHPS x: "UNPCKHPS" -++ show/arity2 x
| UNPCKLPD x: "UNPCKLPD" -++ show/arity2 x
| UNPCKLPS x: "UNPCKLPS" -++ show/arity2 x
| VADDPD x: "VADDPD" -++ show/varity x
| VADDPS x: "VADDPS" -++ show/varity x
| VADDSD x: "VADDSD" -++ show/varity x
| VADDSS x: "VADDSS" -++ show/varity x
| VADDSUBPD x: "VADDSUBPD" -++ show/varity x
| VADDSUBPS x: "VADDSUBPS" -++ show/varity x
| VAESDEC x: "VAESDEC" -++ show/varity x
| VAESDECLAST x: "VAESDECLAST" -++ show/varity x
| VAESENC x: "VAESENC" -++ show/varity x
| VAESENCLAST x: "VAESENCLAST" -++ show/varity x
| VAESIMC x: "VAESIMC" -++ show/varity x
| VAESKEYGENASSIST x: "VAESKEYGENASSIST" -++ show/varity x
| VANDNPD x: "VANDNPD" -++ show/varity x
| VANDNPS x: "VANDNPS" -++ show/varity x
| VANDPD x: "VANDPD" -++ show/varity x
| VANDPS x: "VANDPS" -++ show/varity x
| VBLENDPD x: "VBLENDPD" -++ show/varity x
| VBLENDPS x: "VBLENDPS" -++ show/varity x
| VBLENDVPD x: "VBLENDVPD" -++ show/varity x
| VBLENDVPS x: "VBLENDVPS" -++ show/varity x
| VBROADCASTF128 x: "VBROADCASTF128" -++ show/varity x
| VBROADCASTSD x: "VBROADCASTSD" -++ show/varity x
| VBROADCASTSS x: "VBROADCASTSS" -++ show/varity x
| VCMPEQB x: "VCMPEQB" -++ show/varity x
| VCMPEQD x: "VCMPEQD" -++ show/varity x
| VCMPEQW x: "VCMPEQW" -++ show/varity x
| VCMPPD x: "VCMPPD" -++ show/varity x
| VCMPPS x: "VCMPPS" -++ show/varity x
| VCMPSD x: "VCMPSD" -++ show/varity x
| VCMPSS x: "VCMPSS" -++ show/varity x
| VCOMISD x: "VCOMISD" -++ show/varity x
| VCOMISS x: "VCOMISS" -++ show/varity x
| VCVTDQ2PD x: "VCVTDQ2PD" -++ show/varity x
| VCVTDQ2PS x: "VCVTDQ2PS" -++ show/varity x
| VCVTPD2DQ x: "VCVTPD2DQ" -++ show/varity x
| VCVTPD2PS x: "VCVTPD2PS" -++ show/varity x
| VCVTPH2PS x: "VCVTPH2PS" -++ show/varity x
| VCVTPS2DQ x: "VCVTPS2DQ" -++ show/varity x
| VCVTPS2PD x: "VCVTPS2PD" -++ show/varity x
| VCVTPS2PH x: "VCVTPS2PH" -++ show/varity x
| VCVTSD2SI x: "VCVTSD2SI" -++ show/varity x
| VCVTSD2SS x: "VCVTSD2SS" -++ show/varity x
| VCVTSI2SD x: "VCVTSI2SD" -++ show/varity x
| VCVTSI2SS x: "VCVTSI2SS" -++ show/varity x
| VCVTSS2SD x: "VCVTSS2SD" -++ show/varity x
| VCVTSS2SI x: "VCVTSS2SI" -++ show/varity x
| VCVTTPD2DQ x: "VCVTTPD2DQ" -++ show/varity x
| VCVTTPS2DQ x: "VCVTTPS2DQ" -++ show/varity x
| VCVTTSD2SI x: "VCVTTSD2SI" -++ show/varity x
| VCVTTSS2SI x: "VCVTTSS2SI" -++ show/varity x
| VDIVPD x: "VDIVPD" -++ show/varity x
| VDIVPS x: "VDIVPS" -++ show/varity x
| VDIVSD x: "VDIVSD" -++ show/varity x
| VDIVSS x: "VDIVSS" -++ show/varity x
| VDPPD x: "VDPPD" -++ show/varity x
| VDPPS x: "VDPPS" -++ show/varity x
| VERR x: "VERR" -++ show/arity1 x
| VERW x: "VERW" -++ show/arity1 x
| VEXTRACTF128 x: "VEXTRACTF128" -++ show/varity x
| VEXTRACTPS x: "VEXTRACTPS" -++ show/varity x
| VHADDPD x: "VHADDPD" -++ show/varity x
| VHADDPS x: "VHADDPS" -++ show/varity x
| VHSUBPD x: "VHSUBPD" -++ show/varity x
| VHSUBPS x: "VHSUBPS" -++ show/varity x
| VINSERTF128 x: "VINSERTF128" -++ show/varity x
| VINSERTPS x: "VINSERTPS" -++ show/varity x
| VLDDQU x: "VLDDQU" -++ show/varity x
| VLDMXCSR x: "VLDMXCSR" -++ show/varity x
| VMASKMOVDQU x: "VMASKMOVDQU" -++ show/varity x
| VMASKMOVPD x: "VMASKMOVPD" -++ show/varity x
| VMASKMOVPS x: "VMASKMOVPS" -++ show/varity x
| VMAXPD x: "VMAXPD" -++ show/varity x
| VMAXPS x: "VMAXPS" -++ show/varity x
| VMAXSD x: "VMAXSD" -++ show/varity x
......@@ -591,20 +927,20 @@ val show/instruction insn =
| VORPD x: "VORPD" -++ show/varity x
| VORPS x: "VORPS" -++ show/varity x
| VPABSB x: "VPABSB" -++ show/varity x
| VPABSW x: "VPABSW" -++ show/varity x
| VPABSD x: "VPABSD" -++ show/varity x
| VPACKSSWB x: "VPACKSSWB" -++ show/varity x
| VPABSW x: "VPABSW" -++ show/varity x
| VPACKSSDW x: "VPACKSSDW" -++ show/varity x
| VPACKSSWB x: "VPACKSSWB" -++ show/varity x
| VPACKUSDW x: "VPACKUSDW" -++ show/varity x
| VPACKUSWB x: "VPACKUSWB" -++ show/varity x
| VPADDB x: "VPADDB" -++ show/varity x
| VPADDD x: "VPADDD" -++ show/varity x
| VPADDW x: "VPADDW" -++ show/varity x
| VPADDQ x: "VPADDQ" -++ show/varity x
| VPADDSB x: "VPADDSB" -++ show/varity x
| VPADDSW x: "VPADDSW" -++ show/varity x
| VPADDUSB x: "VPADDUSB" -++ show/varity x
| VPADDUSW x: "VPADDUSW" -++ show/varity x
| VPADDW x: "VPADDW" -++ show/varity x
| VPALIGNR x: "VPALIGNR" -++ show/varity x
| VPAND x: "VPAND" -++ show/varity x
| VPANDN x: "VPANDN" -++ show/varity x
......@@ -614,28 +950,31 @@ val show/instruction insn =
| VPBLENDW x: "VPBLENDW" -++ show/varity x
| VPCLMULQDQ x: "VPCLMULQDQ" -++ show/varity x
| VPCMPEQB x: "VPCMPEQB" -++ show/varity x
| VPCMPEQW x: "VPCMPEQW" -++ show/varity x
| VPCMPEQD x: "VPCMPEQD" -++ show/varity x
| VPCMPEQQ x: "VPCMPEQQ" -++ show/varity x
| VPCMPEQW x: "VPCMPEQW" -++ show/varity x
| VPCMPESTRI x: "VPCMPESTRI" -++ show/varity x
| VPCMPESTRM x: "VPCMPESTRM" -++ show/varity x
| VPCMPGTB x: "VPCMPGTB" -++ show/varity x
| VPCMPGTD x: "VPCMPGTD" -++ show/varity x
| VPCMPGTW x: "VPCMPGTW" -++ show/varity x
| VPCMPGTQ x: "VPCMPGTQ" -++ show/varity x
| VPCMPGTW x: "VPCMPGTW" -++ show/varity x
| VPCMPISTRI x: "VPCMPISTRI" -++ show/varity x
| VPCMPISTRM x: "VPCMPISTRM" -++ show/varity x
| VPERM2F128 x: "VPERM2F128" -++ show/varity x
| VPERMILPD x: "VPERMILPD" -++ show/varity x
| VPERMILPS x: "VPERMILPS" -++ show/varity x
| VPEXTRB x: "VPEXTRB" -++ show/varity x
| VPEXTRD x: "VPEXTRD" -++ show/varity x
| VPEXTRQ x: "VPEXTRQ" -++ show/varity x
| VPEXTRW x: "VPEXTRW" -++ show/varity x
| VPHADDD x: "VPHADDD" -++ show/varity x
| VPHADDW x: "VPHADDW" -++ show/varity x
| VPHADDSW x: "VPHADDSW" -++ show/varity x
| VPHADDW x: "VPHADDW" -++ show/varity x
| VPHMINPOSUW x: "VPHMINPOSUW" -++ show/varity x
| VPHSUBW x: "VPHSUBW" -++ show/varity x
| VPHSUBD x: "VPHSUBD" -++ show/varity x
| VPHSUBSW x: "VPHSUBSW" -++ show/varity x
| VPHSUBW x: "VPHSUBW" -++ show/varity x
| VPINSRB x: "VPINSRB" -++ show/varity x
| VPINSRD x: "VPINSRD" -++ show/varity x
| VPINSRQ x: "VPINSRQ" -++ show/varity x
......@@ -654,27 +993,115 @@ val show/instruction insn =
| VPMINUB x: "VPMINUB" -++ show/varity x
| VPMINUD x: "VPMINUD" -++ show/varity x
| VPMINUW x: "VPMINUW" -++ show/varity x
| VPMOVMSKB x: "VPMOVMSKB" -++ show/varity x
| VPMOVSXBD x: "VPMOVSXBD" -++ show/varity x
| VPMOVSXBQ x: "VPMOVSXBQ" -++ show/varity x
| VPMOVSXBW x: "VPMOVSXBW" -++ show/varity x
| VPMOVSXDQ x: "VPMOVSXDQ" -++ show/varity x
| VPMOVSXWD x: "VPMOVSXWD" -++ show/varity x
| VPMOVSXWQ x: "VPMOVSXWQ" -++ show/varity x
| VPMOVZXBD x: "VPMOVZXBD" -++ show/varity x
| VPMOVZXBQ x: "VPMOVZXBQ" -++ show/varity x
| VPMOVZXBW x: "VPMOVZXBW" -++ show/varity x
| VPMOVZXDQ x: "VPMOVZXDQ" -++ show/varity x
| VPMOVZXWD x: "VPMOVZXWD" -++ show/varity x
| VPMOVZXWQ x: "VPMOVZXWQ" -++ show/varity x
| VPMULDQ x: "VPMULDQ" -++ show/varity x
| VPMULHRSW x: "VPMULHRSW" -++ show/varity x
| VPMULHUW x: "VPMULHUW" -++ show/varity x
| VPMULHW x: "VPMULHW" -++ show/varity x
| VPMULLD x: "VPMULLD" -++ show/varity x
| VPMULLW x: "VPMULLW" -++ show/varity x
| VPMULUDQ x: "VPMULUDQ" -++ show/varity x
| VPOR x: "VPOR" -++ show/varity x
| VPSADBW x: "VPSADBW" -++ show/varity x
| VPSHUFB x: "VPSHUFB" -++ show/varity x
| VPSHUFD x: "VPSHUFD" -++ show/varity x
| VPSHUFHW x: "VPSHUFHW" -++ show/varity x
| VPSHUFLW x: "VPSHUFLW" -++ show/varity x
| VPSIGNB x: "VPSIGNB" -++ show/varity x
| VPSIGND x: "VPSIGND" -++ show/varity x
| VPSIGNW x: "VPSIGNW" -++ show/varity x
| VPSLLD x: "VPSLLD" -++ show/varity x
| VPSLLDQ x: "VPSLLDQ" -++ show/varity x
#| VPSLRDQ x: "VPSLRDQ" -++ show/varity x
| VPSLLQ x: "VPSLLQ" -++ show/varity x
| VPSLLW x: "VPSLLW" -++ show/varity x
| VPSRAD x: "VPSRAD" -++ show/varity x
| VPSRAW x: "VPSRAW" -++ show/varity x
| VPSRLD x: "VPSRLD" -++ show/varity x
| VPSRLDQ x: "VPSRLDQ" -++ show/varity x
| VPSRLQ x: "VPSRLQ" -++ show/varity x
| VPSRLW x: "VPSRLW" -++ show/varity x
| VPSUBB x: "VPSUBB" -++ show/varity x
| VPSUBD x: "VPSUBD" -++ show/varity x
| VPSUBQ x: "VPSUBQ" -++ show/varity x
| VPSUBSB x: "VPSUBSB" -++ show/varity x
| VPSUBSW x: "VPSUBSW" -++ show/varity x
| VPSUBUSB x: "VPSUBUSB" -++ show/varity x
| VPSUBUSW x: "VPSUBUSW" -++ show/varity x
| VPSUBW x: "VPSUBW" -++ show/varity x
| VPTEST x: "VPTEST" -++ show/varity x
| VPUNPCKHBW x: "VPUNPCKHBW" -++ show/varity x
| VPUNPCKHDQ x: "VPUNPCKHDQ" -++ show/varity x
| VPUNPCKHQDQ x: "VPUNPCKHQDQ" -++ show/varity x
| VPUNPCKHWD x: "VPUNPCKHWD" -++ show/varity x
| VPUNPCKLBW x: "VPUNPCKLBW" -++ show/varity x
| VPUNPCKLDQ x: "VPUNPCKLDQ" -++ show/varity x
| VPUNPCKLQDQ x: "VPUNPCKLQDQ" -++ show/varity x
| VPUNPCKLWD x: "VPUNPCKLWD" -++ show/varity x
| VPXOR x: "VPXOR" -++ show/varity x
| VRCPPS x: "VRCPPS" -++ show/varity x
| VRCPSS x: "VRCPSS" -++ show/varity x
| VROUNDPD x: "VROUNDPD" -++ show/varity x
| VROUNDPS x: "VROUNDPS" -++ show/varity x
| VROUNDSD x: "VROUNDSD" -++ show/varity x
| VROUNDSS x: "VROUNDSS" -++ show/varity x
| VRSQRTPS x: "VRSQRTPS" -++ show/varity x
| VRSQRTSS x: "VRSQRTSS" -++ show/varity x
| VSHUFPD x: "VSHUFPD" -++ show/varity x