mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-19 16:42:33 +00:00
Move all ten ISA packages (x86, arm32, arm64, mips, riscv, ppc, ppc_vle, rsp, mos6502, mos65816) from core/rexcode/<arch> to core/rexcode/isa/<arch>, so the import pattern is now `import "core:rexcode/isa/x86"`. The shared core stays at core:rexcode/isa. Mechanical: relative `import "../isa"` / "../../isa" -> absolute "core:rexcode/isa" (the only path that survives the move; the "../" and "../.." self/generated imports move with their packages). build.lua now builds paths as <root>/isa/<name>; stale `cd <arch>` hints in the verify tools and the doc.odin paths updated. WASM stays at core/rexcode/wasm for now -- it is an IR, not an ISA, and will move under the forthcoming core:rexcode/ir once that layer lands. All 10 arches gen/builders/check/test green; import core:rexcode/isa/x86 verified working; wasm still compiles.
1295 lines
17 KiB
Odin
1295 lines
17 KiB
Odin
// rexcode · Brendan Punsky (dotbmp@github), original author
|
|
|
|
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,
|
|
}
|