package rexcode_x86 // ============================================================================= // SECTION: 4. MNEMONICS // ============================================================================= Mnemonic :: enum u16 { INVALID = 0, // ------------------------------------------------------------------------- // SECTION: 4.1 Data Transfer Instructions // ------------------------------------------------------------------------- MOV, MOVABS, MOVZX, MOVSX, MOVSXD, XCHG, PUSH, POP, LEA, // ------------------------------------------------------------------------- // SECTION: 4.2 Arithmetic Instructions // ------------------------------------------------------------------------- ADD, ADC, SUB, SBB, MUL, IMUL, DIV, IDIV, INC, DEC, NEG, CMP, // ------------------------------------------------------------------------- // SECTION: 4.3 Logical Instructions // ------------------------------------------------------------------------- AND, OR, XOR, NOT, TEST, // ------------------------------------------------------------------------- // SECTION: 4.4 Shift and Rotate Instructions // ------------------------------------------------------------------------- SHL, SHR, SAR, ROL, ROR, RCL, RCR, SHLD, SHRD, // ------------------------------------------------------------------------- // SECTION: 4.5 Bit Operations // ------------------------------------------------------------------------- BT, BTS, BTR, BTC, BSF, BSR, POPCNT, LZCNT, TZCNT, // ------------------------------------------------------------------------- // SECTION: 4.6 Control Flow Instructions // ------------------------------------------------------------------------- JMP, JA, JAE, JB, JBE, JC, JE, JZ, JG, JGE, JL, JLE, JNA, JNAE, JNB, JNBE, JNC, JNE, JNZ, JNG, JNGE, JNL, JNLE, JNO, JNP, JNS, JO, JP, JPE, JPO, JS, JCXZ, JECXZ, JRCXZ, LOOP, LOOPE, LOOPNE, CALL, RET, IRET, IRETD, IRETQ, INT, INT3, INTO, SYSCALL, SYSRET, SYSENTER, SYSEXIT, // ------------------------------------------------------------------------- // SECTION: 4.7 Conditional Set Instructions (SETcc) // ------------------------------------------------------------------------- SETA, SETAE, SETB, SETBE, SETC, SETE, SETG, SETGE, SETL, SETLE, SETNA, SETNAE, SETNB, SETNBE, SETNC, SETNE, SETNG, SETNGE, SETNL, SETNLE, SETNO, SETNP, SETNS, SETNZ, SETO, SETP, SETPE, SETPO, SETS, SETZ, // ------------------------------------------------------------------------- // SECTION: 4.8 Conditional Move Instructions (CMOVcc) // ------------------------------------------------------------------------- CMOVA, CMOVAE, CMOVB, CMOVBE, CMOVC, CMOVE, CMOVG, CMOVGE, CMOVL, CMOVLE, CMOVNA, CMOVNAE, CMOVNB, CMOVNBE, CMOVNC, CMOVNE, CMOVNG, CMOVNGE, CMOVNL, CMOVNLE, CMOVNO, CMOVNP, CMOVNS, CMOVNZ, CMOVO, CMOVP, CMOVPE, CMOVPO, CMOVS, CMOVZ, // ------------------------------------------------------------------------- // SECTION: 4.9 STring Operations // ------------------------------------------------------------------------- MOVS, MOVSB, MOVSW, MOVSD, MOVSQ, CMPS, CMPSB, CMPSW, CMPSD, CMPSQ, SCAS, SCASB, SCASW, SCASD, SCASQ, LODS, LODSB, LODSW, LODSD, LODSQ, STOS, STOSB, STOSW, STOSD, STOSQ, // ------------------------------------------------------------------------- // SECTION: 4.10 Flag Operations // ------------------------------------------------------------------------- CLC, STC, CMC, CLD, STD, CLI, STI, LAHF, SAHF, PUSHF, PUSHFD, PUSHFQ, POPF, POPFD, POPFQ, // ------------------------------------------------------------------------- // SECTION: 4.11 Miscellaneous Instructions // ------------------------------------------------------------------------- NOP, HLT, WAIT, LOCK, UD0, UD1, UD2, CPUID, RDTSC, RDTSCP, RDPMC, XGETBV, XSETBV, // ------------------------------------------------------------------------- // SECTION: 4.12 Conversion Instructions // ------------------------------------------------------------------------- CBW, CWDE, CDQE, CWD, CDQ, CQO, // ------------------------------------------------------------------------- // SECTION: 4.13 BMI1/BMI2 Instructions // ------------------------------------------------------------------------- ANDN, BEXTR, BLSI, BLSMSK, BLSR, BZHI, PDEP, PEXT, RORX, SARX, SHLX, SHRX, MULX, // ------------------------------------------------------------------------- // SECTION: 4.14 ADX Instructions // ------------------------------------------------------------------------- ADCX, ADOX, // ------------------------------------------------------------------------- // SECTION: 4.15 SSE Instructions // ------------------------------------------------------------------------- MOVAPS, MOVUPS, MOVAPD, MOVUPD, MOVSS, MOVSD_SSE, // distinguish from string MOVSD MOVDQA, MOVDQU, MOVQ, MOVD, MOVLPS, MOVHPS, MOVLPD, MOVHPD, MOVLHPS, MOVHLPS, MOVMSKPS, MOVMSKPD, MOVNTPS, MOVNTPD, MOVNTDQ, MOVNTDQA, ADDPS, ADDPD, ADDSS, ADDSD, SUBPS, SUBPD, SUBSS, SUBSD, MULPS, MULPD, MULSS, MULSD, DIVPS, DIVPD, DIVSS, DIVSD, SQRTPS, SQRTPD, SQRTSS, SQRTSD, RCPPS, RCPSS, RSQRTPS, RSQRTSS, MAXPS, MAXPD, MAXSS, MAXSD, MINPS, MINPD, MINSS, MINSD, ANDPS, ANDPD, ANDNPS, ANDNPD, ORPS, ORPD, XORPS, XORPD, CMPPS, CMPPD, CMPSS, CMPSD_SSE, COMISS, COMISD, UCOMISS, UCOMISD, SHUFPS, SHUFPD, UNPCKLPS, UNPCKHPS, UNPCKLPD, UNPCKHPD, CVTPS2PD, CVTPD2PS, CVTSS2SD, CVTSD2SS, CVTPS2DQ, CVTPD2DQ, CVTDQ2PS, CVTDQ2PD, CVTSS2SI, CVTSD2SI, CVTSI2SS, CVTSI2SD, CVTTPS2DQ, CVTTPD2DQ, CVTTSS2SI, CVTTSD2SI, // ------------------------------------------------------------------------- // SECTION: 4.16 SSE2 Integer Instructions // ------------------------------------------------------------------------- PADDB, PADDW, PADDD, PADDQ, PSUBB, PSUBW, PSUBD, PSUBQ, PADDSB, PADDSW, PADDUSB, PADDUSW, PSUBSB, PSUBSW, PSUBUSB, PSUBUSW, PMULLW, PMULHW, PMULHUW, PMULUDQ, PMADDWD, PAND, PANDN, POR, PXOR, PSLLW, PSLLD, PSLLQ, PSRLW, PSRLD, PSRLQ, PSRAW, PSRAD, PCMPEQB, PCMPEQW, PCMPEQD, PCMPGTB, PCMPGTW, PCMPGTD, PACKSSWB, PACKSSDW, PACKUSWB, PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ, PUNPCKLQDQ, PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ, PUNPCKHQDQ, PSHUFD, PSHUFHW, PSHUFLW, PSHUFW, PEXTRW, PINSRW, PMOVMSKB, PAVGB, PAVGW, PMAXUB, PMAXSW, PMINUB, PMINSW, PSADBW, MASKMOVDQU, LFENCE, SFENCE, MFENCE, PAUSE, CLFLUSH, // ------------------------------------------------------------------------- // SECTION: 4.17 SSE3/SSSE3 Instructions // ------------------------------------------------------------------------- ADDSUBPS, ADDSUBPD, HADDPS, HADDPD, HSUBPS, HSUBPD, MOVDDUP, MOVSLDUP, MOVSHDUP, LDDQU, PSHUFB, PHADDW, PHADDD, PHADDSW, PHSUBW, PHSUBD, PHSUBSW, PMADDUBSW, PMULHRSW, PSIGNB, PSIGNW, PSIGND, PABSB, PABSW, PABSD, PALIGNR, // ------------------------------------------------------------------------- // SECTION: 4.18 SSE4.1/SSE4.2 Instructions // ------------------------------------------------------------------------- BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDW, PBLENDVB, DPPS, DPPD, EXTRACTPS, INSERTPS, MPSADBW, PACKUSDW, PEXTRB, PEXTRD, PEXTRQ, PHMINPOSUW, PINSRB, PINSRD, PINSRQ, PMAXSB, PMAXSD, PMAXUW, PMAXUD, PMINSB, PMINSD, PMINUW, PMINUD, PMOVSXBW, PMOVSXBD, PMOVSXBQ, PMOVSXWD, PMOVSXWQ, PMOVSXDQ, PMOVZXBW, PMOVZXBD, PMOVZXBQ, PMOVZXWD, PMOVZXWQ, PMOVZXDQ, PMULDQ, PMULLD, PTEST, ROUNDPS, ROUNDPD, ROUNDSS, ROUNDSD, PCMPEQQ, CRC32, PCMPESTRI, PCMPESTRM, PCMPISTRI, PCMPISTRM, PCMPGTQ, // ------------------------------------------------------------------------- // SECTION: 4.19 AES-NI and SHA Instructions // ------------------------------------------------------------------------- PCLMULQDQ, AESDEC, AESDECLAST, AESENC, AESENCLAST, AESIMC, AESKEYGENASSIST, SHA1MSG1, SHA1MSG2, SHA1NEXTE, SHA1RNDS4, SHA256MSG1, SHA256MSG2, SHA256RNDS2, // ------------------------------------------------------------------------- // SECTION: 4.20 AVX Instructions // ------------------------------------------------------------------------- VADDPS, VADDPD, VADDSS, VADDSD, VSUBPS, VSUBPD, VSUBSS, VSUBSD, VMULPS, VMULPD, VMULSS, VMULSD, VDIVPS, VDIVPD, VDIVSS, VDIVSD, VSQRTPS, VSQRTPD, VSQRTSS, VSQRTSD, VRCPPS, VRCPSS, VRSQRTPS, VRSQRTSS, VMAXPS, VMAXPD, VMAXSS, VMAXSD, VMINPS, VMINPD, VMINSS, VMINSD, VANDPS, VANDPD, VANDNPS, VANDNPD, VORPS, VORPD, VXORPS, VXORPD, VCMPPS, VCMPPD, VCMPSS, VCMPSD, VCOMISS, VCOMISD, VUCOMISS, VUCOMISD, VSHUFPS, VSHUFPD, VUNPCKLPS, VUNPCKHPS, VUNPCKLPD, VUNPCKHPD, VBLENDPS, VBLENDPD, VBLENDVPS, VBLENDVPD, VDPPS, VDPPD, VROUNDPS, VROUNDPD, VROUNDSS, VROUNDSD, VEXTRACTPS, VINSERTPS, VMOVAPS, VMOVUPS, VMOVAPD, VMOVUPD, VMOVSS, VMOVSD, VMOVDQA, VMOVDQU, VMOVQ, VMOVD, VMOVLPS, VMOVHPS, VMOVLPD, VMOVHPD, VMOVLHPS, VMOVHLPS, VMOVMSKPS, VMOVMSKPD, VMOVNTPS, VMOVNTPD, VMOVNTDQ, VMOVNTDQA, VCVTPS2PD, VCVTPD2PS, VCVTSS2SD, VCVTSD2SS, VCVTPS2DQ, VCVTPD2DQ, VCVTDQ2PS, VCVTDQ2PD, VCVTSS2SI, VCVTSD2SI, VCVTSI2SS, VCVTSI2SD, VCVTTPS2DQ, VCVTTPD2DQ, VCVTTSS2SI, VCVTTSD2SI, VPADDB, VPADDW, VPADDD, VPADDQ, VPSUBB, VPSUBW, VPSUBD, VPSUBQ, VPMULLW, VPMULHW, VPMULHUW, VPMULUDQ, VPMADDWD, VPAND, VPANDN, VPOR, VPXOR, VPSLLW, VPSLLD, VPSLLQ, VPSRLW, VPSRLD, VPSRLQ, VPSRAW, VPSRAD, VPCMPEQB, VPCMPEQW, VPCMPEQD, VPCMPEQQ, VPCMPGTB, VPCMPGTW, VPCMPGTD, VPCMPGTQ, VPACKSSWB, VPACKSSDW, VPACKUSWB, VPACKUSDW, VPUNPCKLBW, VPUNPCKLWD, VPUNPCKLDQ, VPUNPCKLQDQ, VPUNPCKHBW, VPUNPCKHWD, VPUNPCKHDQ, VPUNPCKHQDQ, VPSHUFD, VPSHUFHW, VPSHUFLW, VPEXTRB, VPEXTRW, VPEXTRD, VPEXTRQ, VPINSRB, VPINSRW, VPINSRD, VPINSRQ, VPMOVMSKB, VPTEST, VPSHUFB, VPHADDW, VPHADDD, VPHADDSW, VPHSUBW, VPHSUBD, VPHSUBSW, VPMADDUBSW, VPMULHRSW, VPSIGNB, VPSIGNW, VPSIGND, VPABSB, VPABSW, VPABSD, VPALIGNR, VPBLENDW, VPBLENDVB, VMPSADBW, VPHMINPOSUW, VPMAXSB, VPMAXSD, VPMAXUW, VPMAXUD, VPMINSB, VPMINSD, VPMINUW, VPMINUD, VPMOVSXBW, VPMOVSXBD, VPMOVSXBQ, VPMOVSXWD, VPMOVSXWQ, VPMOVSXDQ, VPMOVZXBW, VPMOVZXBD, VPMOVZXBQ, VPMOVZXWD, VPMOVZXWQ, VPMOVZXDQ, VPMULDQ, VPMULLD, VMASKMOVDQU, VPCLMULQDQ, VAESDEC, VAESDECLAST, VAESENC, VAESENCLAST, VAESIMC, VAESKEYGENASSIST, VBROADCASTSS, VBROADCASTSD, VBROADCASTF128, VEXTRACTF128, VINSERTF128, VPERM2F128, VMASKMOVPS, VMASKMOVPD, VTESTPS, VTESTPD, VZEROALL, VZEROUPPER, // ------------------------------------------------------------------------- // SECTION: 4.21 AVX2 Instructions // ------------------------------------------------------------------------- VBROADCASTI128, VEXTRACTI128, VINSERTI128, VPERM2I128, VPERMD, VPERMPS, VPERMQ, VPERMPD, VPBLENDD, VPSLLVD, VPSLLVQ, VPSRLVD, VPSRLVQ, VPSRAVD, VPMASKMOVD, VPMASKMOVQ, VGATHERDPS, VGATHERDPD, VGATHERQPS, VGATHERQPD, VPGATHERDD, VPGATHERDQ, VPGATHERQD, VPGATHERQQ, // ------------------------------------------------------------------------- // SECTION: 4.22 FMA Instructions // ------------------------------------------------------------------------- VFMADD132PS, VFMADD213PS, VFMADD231PS, VFMADD132PD, VFMADD213PD, VFMADD231PD, VFMADD132SS, VFMADD213SS, VFMADD231SS, VFMADD132SD, VFMADD213SD, VFMADD231SD, VFMSUB132PS, VFMSUB213PS, VFMSUB231PS, VFMSUB132PD, VFMSUB213PD, VFMSUB231PD, VFMSUB132SS, VFMSUB213SS, VFMSUB231SS, VFMSUB132SD, VFMSUB213SD, VFMSUB231SD, VFNMADD132PS, VFNMADD213PS, VFNMADD231PS, VFNMADD132PD, VFNMADD213PD, VFNMADD231PD, VFNMADD132SS, VFNMADD213SS, VFNMADD231SS, VFNMADD132SD, VFNMADD213SD, VFNMADD231SD, VFNMSUB132PS, VFNMSUB213PS, VFNMSUB231PS, VFNMSUB132PD, VFNMSUB213PD, VFNMSUB231PD, VFNMSUB132SS, VFNMSUB213SS, VFNMSUB231SS, VFNMSUB132SD, VFNMSUB213SD, VFNMSUB231SD, VFMADDSUB132PS, VFMADDSUB213PS, VFMADDSUB231PS, VFMADDSUB132PD, VFMADDSUB213PD, VFMADDSUB231PD, VFMSUBADD132PS, VFMSUBADD213PS, VFMSUBADD231PS, VFMSUBADD132PD, VFMSUBADD213PD, VFMSUBADD231PD, VCVTPH2PS, VCVTPS2PH, // ------------------------------------------------------------------------- // SECTION: 4.23 AVX-512 Instructions // ------------------------------------------------------------------------- VMOVDQA32, VMOVDQA64, VMOVDQU8, VMOVDQU16, VMOVDQU32, VMOVDQU64, VPBLENDMB, VPBLENDMW, VPBLENDMD, VPBLENDMQ, VBLENDMPS, VBLENDMPD, VPCMPB, VPCMPUB, VPCMPW, VPCMPUW, VPCMPD, VPCMPUD, VPCMPQ, VPCMPUQ, VPTESTMB, VPTESTMW, VPTESTMD, VPTESTMQ, VPTESTNMB, VPTESTNMW, VPTESTNMD, VPTESTNMQ, VPCOMPRESSD, VPCOMPRESSQ, VCOMPRESSPS, VCOMPRESSPD, VPEXPANDD, VPEXPANDQ, VEXPANDPS, VEXPANDPD, VPCONFLICTD, VPCONFLICTQ, VPLZCNTD, VPLZCNTQ, VPERMI2B, VPERMI2W, VPERMI2D, VPERMI2Q, VPERMI2PS, VPERMI2PD, VPERMT2B, VPERMT2W, VPERMT2D, VPERMT2Q, VPERMT2PS, VPERMT2PD, VPERMB, VPERMW, VPMOVB2M, VPMOVW2M, VPMOVD2M, VPMOVQ2M, VPMOVM2B, VPMOVM2W, VPMOVM2D, VPMOVM2Q, VPMOVQB, VPMOVSQB, VPMOVUSQB, VPMOVQW, VPMOVSQW, VPMOVUSQW, VPMOVQD, VPMOVSQD, VPMOVUSQD, VPMOVDB, VPMOVSDB, VPMOVUSDB, VPMOVDW, VPMOVSDW, VPMOVUSDW, VPMOVWB, VPMOVSWB, VPMOVUSWB, VPROLD, VPROLQ, VPROLVD, VPROLVQ, VPRORD, VPRORQ, VPRORVD, VPRORVQ, VPSCATTERDD, VPSCATTERDQ, VPSCATTERQD, VPSCATTERQQ, VSCATTERDPS, VSCATTERDPD, VSCATTERQPS, VSCATTERQPD, VPSRAVQ, VPSRAVW, VPSLLVW, VPSRLVW, VRANGEPS, VRANGEPD, VRANGESS, VRANGESD, VREDUCEPS, VREDUCEPD, VREDUCESS, VREDUCESD, VRNDSCALEPS, VRNDSCALEPD, VRNDSCALESS, VRNDSCALESD, VRSQRT14PS, VRSQRT14PD, VRSQRT14SS, VRSQRT14SD, VRCP14PS, VRCP14PD, VRCP14SS, VRCP14SD, VSCALEFPS, VSCALEFPD, VSCALEFSS, VSCALEFSD, VGETEXPPS, VGETEXPPD, VGETEXPSS, VGETEXPSD, VGETMANTPS, VGETMANTPD, VGETMANTSS, VGETMANTSD, VFIXUPIMMPS, VFIXUPIMMPD, VFIXUPIMMSS, VFIXUPIMMSD, VFPCLASSPS, VFPCLASSPD, VFPCLASSSS, VFPCLASSSD, VALIGNQ, VALIGND, VDBPSADBW, VPTERNLOGD, VPTERNLOGQ, VPMULTISHIFTQB, KADDW, KADDB, KADDQ, KADDD, KANDW, KANDB, KANDQ, KANDD, KANDNW, KANDNB, KANDNQ, KANDND, KMOVW, KMOVB, KMOVQ, KMOVD, KNOTW, KNOTB, KNOTQ, KNOTD, KORW, KORB, KORQ, KORD, KORTESTW, KORTESTB, KORTESTQ, KORTESTD, KSHIFTLW, KSHIFTLB, KSHIFTLQ, KSHIFTLD, KSHIFTRW, KSHIFTRB, KSHIFTRQ, KSHIFTRD, KTESTW, KTESTB, KTESTQ, KTESTD, KUNPCKBW, KUNPCKWD, KUNPCKDQ, KXNORW, KXNORB, KXNORQ, KXNORD, KXORW, KXORB, KXORQ, KXORD, // ------------------------------------------------------------------------- // SECTION: 4.24 x87 FPU Instructions // ------------------------------------------------------------------------- FADD, FADDP, FIADD, FSUB, FSUBP, FISUB, FSUBR, FSUBRP, FISUBR, FMUL, FMULP, FIMUL, FDIV, FDIVP, FIDIV, FDIVR, FDIVRP, FIDIVR, FSQRT, FABS, FCHS, FPREM, FPREM1, FRNDINT, FSCALE, FXTRACT, FXAM, FLD, FILD, FBLD, FST, FSTP, FIST, FISTP, FISTTP, FBSTP, FXCH, FCMOVB, FCMOVE, FCMOVBE, FCMOVU, FCMOVNB, FCMOVNE, FCMOVNBE, FCMOVNU, FCOM, FCOMP, FCOMPP, FICOM, FICOMP, FCOMI, FCOMIP, FUCOMI, FUCOMIP, FUCOM, FUCOMP, FUCOMPP, FTST, FLDZ, FLD1, FLDPI, FLDL2T, FLDL2E, FLDLG2, FLDLN2, FSIN, FCOS, FSINCOS, FPTAN, FPATAN, F2XM1, FYL2X, FYL2XP1, FINIT, FNINIT, FINCSTP, FDECSTP, FFREE, FFREEP, FNOP, FWAIT, FCLEX, FNCLEX, FSTCW, FNSTCW, FLDCW, FSTENV, FNSTENV, FLDENV, FSAVE, FNSAVE, FRSTOR, FSTSW, FNSTSW, FXSAVE, FXSAVE64, FXRSTOR, FXRSTOR64, // ------------------------------------------------------------------------- // SECTION: 4.25 System Instructions // ------------------------------------------------------------------------- LGDT, SGDT, LIDT, SIDT, LLDT, SLDT, LTR, STR, LMSW, SMSW, CLTS, ARPL, LAR, LSL, VERR, VERW, INVD, WBINVD, INVLPG, INVPCID, RSM, RDMSR, WRMSR, // ------------------------------------------------------------------------- // SECTION: 4.26 VMX Instructions // ------------------------------------------------------------------------- VMCALL, VMLAUNCH, VMRESUME, VMXOFF, VMXON, VMCLEAR, VMPTRLD, VMPTRST, VMREAD, VMWRITE, VMFUNC, INVEPT, INVVPID, // ------------------------------------------------------------------------- // SECTION: 4.27 Miscellaneous Extensions // ------------------------------------------------------------------------- ENCLS, ENCLU, ENCLV, RDPKRU, WRPKRU, INCSSPD, INCSSPQ, RDSSPD, RDSSPQ, SAVEPREVSSP, RSTORSSP, WRSSD, WRSSQ, WRUSSD, WRUSSQ, SETSSBSY, CLRSSBSY, ENDBR64, ENDBR32, XSAVE, XSAVE64, XRSTOR, XRSTOR64, XSAVEOPT, XSAVEOPT64, XSAVEC, XSAVEC64, XSAVES, XSAVES64, XRSTORS, XRSTORS64, PREFETCHT0, PREFETCHT1, PREFETCHT2, PREFETCHNTA, PREFETCHW, CLFLUSHOPT, CLWB, CLDEMOTE, BSWAP, CMPXCHG, CMPXCHG8B, CMPXCHG16B, XADD, BOUND, ENTER, LEAVE, XLAT, XLATB, MOVBE, RDRAND, RDSEED, }