You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1549 lines
27 KiB

/*
* FCML - Free Code Manipulation Library.
* Copyright (C) 2010-2019 Slawomir Wojtasiak
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/** @file fcml_instructions.h
* Instruction codes and addressing modes/instruction forms.
* @copyright Copyright (C) 2010-2017 Slawomir Wojtasiak. All rights reserved.
* This project is released under the GNU Lesser General Public License.
*/
#ifndef FCML_INSTRUCTIONS_H_
#define FCML_INSTRUCTIONS_H_
/**
* @defgroup INSTRUCTION_TYPES_GROUP Instructions types.
* Instructions types.
* @{
*/
#define FCML_AMT_UNDEF 0x0000000000000000UL
/* Grouping. */
#define FCML_AMT_SSEx 0x0000000000000001UL
#define FCML_AMT_VEXx 0x0000000000000002UL
#define FCML_AMT_SIMD 0x0000000000000004UL
/* CPUID. */
#define FCML_AMT_GPI 0x0000000000000008UL
#define FCML_AMT_FPU 0x0000000000000010UL
#define FCML_AMT_MMX 0x0000000000000020UL | FCML_AMT_SSEx
#define FCML_AMT_SSE 0x0000000000000040UL | FCML_AMT_SSEx
#define FCML_AMT_SSE2 0x0000000000000080UL | FCML_AMT_SSEx
#define FCML_AMT_SSE3 0x0000000000000100UL | FCML_AMT_SSEx
#define FCML_AMT_SSSE3 0x0000000000000200UL | FCML_AMT_SSEx
#define FCML_AMT_SSE41 0x0000000000000400UL | FCML_AMT_SSEx
#define FCML_AMT_SSE42 0x0000000000000800UL | FCML_AMT_SSEx
#define FCML_AMT_SSE4A 0x0000000000001000UL | FCML_AMT_SSEx
#define FCML_AMT_AVX 0x0000000000002000UL | FCML_AMT_VEXx
#define FCML_AMT_AVX2 0x0000000000004000UL | FCML_AMT_VEXx
#define FCML_AMT_AES 0x0000000000008000UL
#define FCML_AMT_SYSTEM 0x0000000000010000UL
#define FCML_AMT_3DNOW 0x0000000000020000UL | FCML_AMT_MMX
#define FCML_AMT_TBM 0x0000000000040000UL | FCML_AMT_VEXx
#define FCML_AMT_BMI1 0x0000000000080000UL
#define FCML_AMT_BMI2 0x0000000000100000UL
#define FCML_AMT_HLE 0x0000000000200000UL
#define FCML_AMT_ADX 0x0000000000400000UL
#define FCML_AMT_CLMUL 0x0000000000800000UL
#define FCML_AMT_F16C 0x0000000001000000UL | FCML_AMT_VEXx
#define FCML_AMT_RDRAND 0x0000000002000000UL
#define FCML_AMT_RDSEED 0x0000000004000000UL
#define FCML_AMT_PRFCHW 0x0000000008000000UL
#define FCML_AMT_LWP 0x0000000010000000UL | FCML_AMT_SIMD
#define FCML_AMT_SVM 0x0000000020000000UL
#define FCML_AMT_FSGSBASE 0x0000000040000000UL
#define FCML_AMT_FMA 0x0000000080000000UL | FCML_AMT_SIMD
#define FCML_AMT_FMA4 0x0000000100000000UL | FCML_AMT_SIMD
#define FCML_AMT_XOP 0x0000000200000000UL | FCML_AMT_SIMD
#define FCML_AMT_EDX 0x0000000400000000UL
#define FCML_AMT_ABM 0x0000000800000000UL
#define FCML_AMT_VMX 0x0000001000000000UL
#define FCML_AMT_SMX 0x0000002000000000UL
#define FCML_AMT_POPCNT 0x0000004000000000UL
#define FCML_AMT_RTM 0x0000008000000000UL
/* Control transfer instructions. */
#define FCML_AMT_CTI 0x0000010000000000UL
#define FCML_AMT_BRANCH 0x0000020000000000UL
/* End of control transfer instructions. */
#define FCML_AMT_AVX512 0x0000040000000000UL
/* Shortcuts. */
#define FCML_AMT_MMX_SIMD FCML_AMT_MMX | FCML_AMT_SIMD
#define FCML_AMT_SSE_SIMD FCML_AMT_SSE | FCML_AMT_SIMD
#define FCML_AMT_SSE2_SIMD FCML_AMT_SSE2 | FCML_AMT_SIMD
#define FCML_AMT_SSE3_SIMD FCML_AMT_SSE3 | FCML_AMT_SIMD
#define FCML_AMT_SSSE3_SIMD FCML_AMT_SSSE3 | FCML_AMT_SIMD
#define FCML_AMT_SSE41_SIMD FCML_AMT_SSE41 | FCML_AMT_SIMD
#define FCML_AMT_SSE42_SIMD FCML_AMT_SSE42 | FCML_AMT_SIMD
#define FCML_AMT_AVX_SIMD FCML_AMT_AVX | FCML_AMT_SIMD
#define FCML_AMT_AVX2_SIMD FCML_AMT_AVX2 | FCML_AMT_SIMD
#define FCML_AMT_3DNOW_SIMD FCML_AMT_3DNOW | FCML_AMT_SIMD
#define FCML_AMT_AVX512_SIMD FCML_AMT_AVX512 | FCML_AMT_SIMD
/** @} */
/** Instruction forms. */
enum fcml_en_instruction_addr_mode_codes {
FCML_AM_UNKNOWN,
FCML_AM_NO_OPERANS,
FCML_AM_IMM8,
FCML_AM_IMMO,
FCML_AM_ER8_IMM8,
FCML_AM_R8_IMM8,
FCML_AM_ERO_IMMO,
FCML_AM_RM8_IMM8,
FCML_AM_RMO_IMMO,
FCML_AM_R0_IMM0,
FCML_AM_RMO_IMM8,
FCML_AM_RM8_R8,
FCML_AM_R8_RM8,
FCML_AM_R8_MOFF8,
FCML_AM_MOFF8_R8,
FCML_AM_R16_RM8,
FCML_AM_RO_RM16,
FCML_AM_RMO_RO,
FCML_AM_RO_RMO,
FCML_AM_RO_MOFFO,
FCML_AM_RO_MO,
FCML_AM_MOFFO_RO,
FCML_AM_MO_RO,
FCML_AM_RO_RM8,
FCML_AM_RM_SR,
FCML_AM_SR_RM,
FCML_AM_R32_DR,
FCML_AM_R64_DR,
FCML_AM_DR_R32,
FCML_AM_DR_R64,
FCML_AM_R32_CR,
FCML_AM_R64_CR,
FCML_AM_CR_R32,
FCML_AM_CR_R64,
FCML_AM_RO_RMO_IMM8,
FCML_AM_RO_RMO_IMMO,
FCML_AM_R32A_RM32_R32B,
FCML_AM_R64A_RM64_R64B,
FCML_AM_R32_RM32,
FCML_AM_R64_RM64,
FCML_AM_R32_RM32_R32,
FCML_AM_R64_RM64_R64,
FCML_AM_REL16,
FCML_AM_PTR16_O,
FCML_AM_M16_O,
FCML_AM_M8_M8,
FCML_AM_MO_MO,
FCML_AM_M8,
FCML_AM_M16,
FCML_AM_M32,
FCML_AM_M64,
FCML_AM_M80,
FCML_AM_M128,
FCML_AM_RX_RM32,
FCML_AM_RX_RM64,
FCML_AM_RX_RX_RM32,
FCML_AM_RX_RX_RM64,
FCML_AM_R32_RXM64,
FCML_AM_R64_RXM64,
FCML_AM_RM8,
FCML_AM_RMO,
FCML_AM_RO,
FCML_AM_SRO,
FCML_AM_SR_FSGSO,
FCML_AM_ST0_ST,
FCML_AM_ST_ST0,
FCML_AM_ST,
FCML_AM_M2BYTE,
FCML_AM_AX,
FCML_AM_R64_M128,
FCML_AM_R32_M128,
FCML_AM_RX_RX_I8_I8,
FCML_AM_RX_RX,
FCML_AM_REL8,
FCML_AM_REL0
};
/**
* @defgroup INSTRUCTION_GROUP Supported instructions codes.
* Set of all supported instructions. Names are based on Intel syntax.
* @{
*/
/** Instruction codes. */
typedef enum fcml_en_instruction {
F_UNKNOWN,
F_AAA,
F_JCC,
F_AAD,
F_AAM,
F_AAS,
F_ADC,
F_ADD,
F_ADDPD,
F_VADDPD,
F_ADDPS,
F_VADDPS,
F_ADDSD,
F_VADDSD,
F_ADDSS,
F_VADDSS,
F_ADDSUBPD,
F_VADDSUBPD,
F_ADDSUBPS,
F_VADDSUBPS,
F_AESDEC,
F_VAESDEC,
F_AESDECLAST,
F_VAESDECLAST,
F_AESENC,
F_VAESENC,
F_AESENCLAST,
F_VAESENCLAST,
F_AESIMC,
F_VAESIMC,
F_AESKEYGENASSIST,
F_VAESKEYGENASSIST,
F_AND,
F_ANDPD,
F_VANDPD,
F_ANDPS,
F_VANDPS,
F_ANDNPD,
F_VANDNPD,
F_ANDNPS,
F_VANDNPS,
F_ARPL,
F_ANDN,
F_ADCX,
F_ADOX,
F_BLENDPD,
F_VBLENDPD,
F_BLENDPS,
F_VBLENDPS,
F_BLENDVPD,
F_VBLENDVPD,
F_BLENDVPS,
F_VBLENDVPS,
F_BOUND,
F_BSF,
F_BSR,
F_BSWAP,
F_BT,
F_BTC,
F_BTR,
F_BTS,
F_BEXR,
F_BLCFILL,
F_BLCI,
F_BLCIC,
F_BLCMSK,
F_BLCS,
F_BLSFILL,
F_BLSI,
F_BLSIC,
F_BLSMSK,
F_BLSR,
F_BZHI,
F_CALL,
F_CBW,
F_CWDE = F_CBW,
F_CDQE = F_CBW,
F_CLC,
F_CLD,
F_CLFLUSH,
F_CLI,
F_CLGI,
F_CLTS,
F_CMC,
F_CMOV,
F_CMP,
F_CMPPD,
F_VCMPPD,
F_CMPPS,
F_VCMPPS,
F_CMPS,
F_CMPSD,
F_VCMPSD,
F_CMPSS,
F_VCMPSS,
F_CMPXCHG,
F_CMPXCHGxB,
F_CPUID,
F_CRC32,
F_CVTDQ2PD,
F_VCVTDQ2PD,
F_CVTDQ2PS,
F_VCVTDQ2PS,
F_CVTPD2DQ,
F_VCVTPD2DQ,
F_CVTPD2PI,
F_CVTPD2PS,
F_VCVTPD2PS,
F_CVTPI2PD,
F_CVTPI2PS,
F_CVTPS2DQ,
F_VCVTPS2DQ,
F_CVTPS2PD,
F_VCVTPS2PD,
F_CVTPS2PI,
F_CVTSD2SI,
F_VCVTSD2SI,
F_CVTSD2SS,
F_VCVTSD2SS,
F_CVTSI2SD,
F_VCVTSI2SD,
F_CVTSI2SS,
F_VCVTSI2SS,
F_CVTSS2SD,
F_VCVTSS2SD,
F_CVTSS2SI,
F_VCVTSS2SI,
F_CVTTPD2DQ,
F_VCVTTPD2DQ,
F_CVTTPD2PI,
F_CVTTPS2DQ,
F_VCVTTPS2DQ,
F_CVTTPS2PI,
F_CVTTSD2SI,
F_VCVTTSD2SI,
F_CVTTSS2SI,
F_VCVTTSS2SI,
F_CWD,
F_CDQ = F_CWD,
F_CQO = F_CWD,
F_COMISD,
F_VCOMISD,
F_COMISS,
F_VCOMISS,
F_DAA,
F_DAS,
F_DEC,
F_DIV,
F_DIVPD,
F_VDIVPD,
F_DIVPS,
F_VDIVPS,
F_DIVSD,
F_VDIVSD,
F_DIVSS,
F_VDIVSS,
F_DPPD,
F_VDPPD,
F_DPPS,
F_VDPPS,
F_EMMS,
F_ENTER,
F_EXTRACTPS,
F_VEXTRACTPS,
F_EXTRQ,
F_F2XM1,
F_FABS,
F_FADD,
F_FIADD,
F_FADDP,
F_FBLD,
F_FBSTP,
F_FCHS,
F_FCLEX,
F_FNCLEX,
F_FCMOVB,
F_FCMOVE,
F_FCMOVBE,
F_FCMOVU,
F_FCMOVNB,
F_FCMOVNE,
F_FCMOVNBE,
F_FCMOVNU,
F_FCOS,
F_FCOM,
F_FCOMP,
F_FCOMPP,
F_FCOMI,
F_FCOMIP,
F_FUCOMI,
F_FUCOMIP,
F_FDECSTP,
F_FDIV,
F_FDIVP,
F_FIDIV,
F_FDIVR,
F_FDIVRP,
F_FIDIVR,
F_FFREE,
F_FICOM,
F_FICOMP,
F_FILD,
F_FINCSTP,
F_FINIT,
F_FNINIT,
F_FIST,
F_FISTP,
F_FLD,
F_FLD1,
F_FLDL2T,
F_FLDL2E,
F_FLDPI,
F_FLDLG2,
F_FLDLN2,
F_FLDZ,
F_FLDCW,
F_FLDENV,
F_FMUL,
F_FMULP,
F_FIMUL,
F_FNOP,
F_FPATAN,
F_FPREM,
F_FPREM1,
F_FPTAN,
F_FRNDINT,
F_FRSTOR,
F_FSAVE,
F_FNSAVE,
F_FSCALE,
F_FSIN,
F_FSINCOS,
F_FSQRT,
F_FST,
F_FSTP,
F_FSTCW,
F_FNSTCW,
F_FSTENV,
F_FNSTENV,
F_FSTSW,
F_FNSTSW,
F_FSUB,
F_FSUBP,
F_FISUB,
F_FSUBR,
F_FSUBRP,
F_FISUBR,
F_FTST,
F_FUCOM,
F_FUCOMP,
F_FUCOMPP,
F_FXAM,
F_FXCH,
F_FXRSTOR,
F_FXRSTOR64,
F_FXSAVE,
F_FXSAVE64,
F_FXTRACT,
F_FYL2X,
F_FYL2XP1,
F_FEMMS,
F_FISTTP,
F_GETSEC,
F_HADDPD,
F_VHADDPD,
F_HADDPS,
F_VHADDPS,
F_HLT,
F_HSUBPD,
F_VHSUBPD,
F_HSUBPS,
F_VHSUBPS,
F_INVEPT,
F_INVVPID,
F_IDIV,
F_IMUL,
F_IN,
F_INC,
F_INS,
F_INSERTPS,
F_VINSERTPS,
F_VEXTRACTF128,
F_VEXTRACTF32X4,
F_VEXTRACTF64X2,
F_VEXTRACTF32X8,
F_VEXTRACTF64X4,
F_VEXTRACTI32X4,
F_VEXTRACTI64X2,
F_VEXTRACTI32X8,
F_VEXTRACTI64X4,
F_VINSERTF128,
F_VFIXUPIMMPD,
F_VFIXUPIMMPS,
F_VFIXUPIMMSD,
F_VFIXUPIMMSS,
F_INSERTQ,
F_INT3,
F_INT,
F_INTO,
F_INVD,
F_INVLPG,
F_INVLPGA,
F_INVPCID,
F_IRET,
F_JCXZ,
F_JECXZ = F_JCXZ,
F_JRCXZ = F_JCXZ,
F_JMP,
F_KADDB,
F_KADDD,
F_KADDW,
F_KADDQ,
F_KANDB,
F_KANDD,
F_KANDW,
F_KANDQ,
F_KANDNB,
F_KANDND,
F_KANDNW,
F_KANDNQ,
F_KMOVB,
F_KMOVW,
F_KMOVD,
F_KMOVQ,
F_KNOTB,
F_KNOTW,
F_KNOTD,
F_KNOTQ,
F_KORB,
F_KORW,
F_KORD,
F_KORQ,
F_KORTESTB,
F_KORTESTW,
F_KORTESTD,
F_KORTESTQ,
F_KSHIFTLW,
F_KSHIFTLB,
F_KSHIFTLQ,
F_KSHIFTLD,
F_KSHIFTRW,
F_KSHIFTRB,
F_KSHIFTRQ,
F_KSHIFTRD,
F_KTESTB,
F_KTESTW,
F_KTESTD,
F_KTESTQ,
F_KXNORB,
F_KXNORD,
F_KXNORW,
F_KXNORQ,
F_KXORB,
F_KXORD,
F_KXORW,
F_KXORQ,
F_LAR,
F_LAHF,
F_LDDQU,
F_VLDDQU,
F_LDMXCSR,
F_VLDMXCSR,
F_LDS,
F_LSS,
F_LES,
F_LFS,
F_LGS,
F_LEA,
F_LEAVE,
F_LFENCE,
F_LLWPCB,
F_LGDT,
F_LIDT,
F_LLDT,
F_LMSW,
F_LODS,
F_LOOP,
F_LOOPE,
F_LOOPNE,
F_LWPINS,
F_LWPVAL,
F_LSL,
F_LTR,
F_LZCNT,
F_MASKMOVDQU,
F_VMASKMOVDQU,
F_MASKMOVQ,
F_VMASKMOVPS,
F_VMASKMOVPD,
F_VPMASKMOVD,
F_VPMASKMOV,
F_VPMASKMOVQ,
F_MAXPD,
F_VMAXPD,
F_MAXPS,
F_VMAXPS,
F_MAXSD,
F_VMAXSD,
F_MAXSS,
F_VMAXSS,
F_MFENCE,
F_MINPD,
F_VMINPD,
F_MINPS,
F_VMINPS,
F_MINSD,
F_VMINSD,
F_MINSS,
F_VMINSS,
F_MONITOR,
F_MOVAPD,
F_VMOVAPD,
F_MOVAPS,
F_VMOVAPS,
F_MOVBE,
F_MOV,
F_MOVD,
F_VMOVD,
F_MOVQ,
F_VMOVQ,
F_MOVDDUP,
F_VMOVDDUP,
F_MOVDQA,
F_VMOVDQA,
F_VMOVDQA32,
F_VMOVDQA64,
F_MOVDQU,
F_VMOVDQU,
F_VMOVDQU8,
F_VMOVDQU16,
F_VMOVDQU32,
F_VMOVDQU64,
F_MOVDQ2Q,
F_MOVHLPS,
F_VMOVHLPS,
F_MOVHPD,
F_VMOVHPD,
F_MOVHPS,
F_VMOVHPS,
F_MOVLHPS,
F_VMOVLHPS,
F_MOVLPD,
F_VMOVLPD,
F_MOVLPS,
F_VMOVLPS,
F_MOVMSKPD,
F_VMOVMSKPD,
F_MOVMSKPS,
F_VMOVMSKPS,
F_MOVNTDQA,
F_VMOVNTDQA,
F_MOVNTDQ,
F_VMOVNTDQ,
F_MOVS,
F_MOVNTI,
F_MOVNTPD,
F_VMOVNTPD,
F_MOVNTPS,
F_VMOVNTPS,
F_MOVNTSD,
F_MOVNTSS,
F_MOVNTQ,
F_MOVQ2DQ,
F_MOVSD,
F_VMOVSD,
F_MOVSHDUP,
F_VMOVSHDUP,
F_MOVSLDUP,
F_VMOVSLDUP,
F_MOVSS,
F_VMOVSS,
F_MOVSX,
F_MOVSXD,
F_MOVUPD,
F_VMOVUPD,
F_MOVUPS,
F_VMOVUPS,
F_MOVZX,
F_MPSADBW,
F_VMPSADBW,
F_MUL,
F_MULPD,
F_VMULPD,
F_MULPS,
F_VMULPS,
F_MULSD,
F_VMULSD,
F_MULSS,
F_VMULSS,
F_MWAIT,
F_NEG,
F_NOP,
F_NOT,
F_OR,
F_ORPD,
F_VORPD,
F_ORPS,
F_VORPS,
F_OUT,
F_OUTS,
F_PABSW,
F_PABSB,
F_PABSD,
F_VPABSB,
F_VPABSW,
F_VPABSD,
F_VPABSQ,
F_VPACKSSWB,
F_PACKSSWB,
F_VPACKSSDW,
F_PACKSSDW,
F_PACKUSDW,
F_VPACKUSDW,
F_PACKUSWB,
F_VPACKUSWB,
F_VPADDW,
F_PADDW,
F_VPADDB,
F_VPADDD,
F_PADDB,
F_PADDD,
F_VPADDSW,
F_PADDSB,
F_PADDSW,
F_VPADDSB,
F_PADDUSW,
F_PADDUSB,
F_VPADDUSW,
F_PADDQ,
F_VPADDUSB,
F_VPADDQ,
F_POP,
F_PUSH,
F_POPA,
F_POPAD,
F_POPF,
F_POPFQ,
F_POPFD,
F_PUSHA,
F_PUSHF,
F_PUSHAD,
F_PUSHFQ,
F_PUSHFD,
F_PAVGUSB,
F_PF2ID,
F_PFACC,
F_PFADD,
F_PFCMPEQ,
F_PFCMPGE,
F_PFCMPGT,
F_PFMAX,
F_PFMIN,
F_PFMUL,
F_PFRCP,
F_PFRCPIT1,
F_PFRCPIT2,
F_PFRSQIT1,
F_PFRSQRT,
F_PFSUB,
F_PFSUBR,
F_PI2FD,
F_PMULHRW,
F_PF2IW,
F_PFNACC,
F_PFPNACC,
F_PI2FW,
F_PSWAPD,
F_PALIGNR,
F_VPALIGNR,
F_PAND,
F_VPAND,
F_VPANDD,
F_VPANDQ,
F_PANDN,
F_VPANDN,
F_VPANDND,
F_VPANDNQ,
F_PAUSE,
F_PAVGW,
F_PAVGB,
F_VPAVGW,
F_VPAVGB,
F_PBLENDVB,
F_VPBLENDVB,
F_PBLENDW,
F_VPBLENDW,
F_VPBLENDD,
F_PCLMULQDQ,
F_VPCLMULQDQ,
F_PCMPEQW,
F_PCMPEQB,
F_PCMPEQD,
F_VPCMPEQD,
F_VPCMPEQW,
F_VPCMPEQB,
F_PCMPEQQ,
F_VPCMPEQQ,
F_PCMPESTRI,
F_VPCMPESTRI,
F_PCMPESTRM,
F_VPCMPESTRM,
F_PCMPGTW,
F_PCMPGTD,
F_PCMPGTB,
F_VPCMPGTW,
F_VPCMPGTD,
F_VPCMPGTB,
F_PCMPGTQ,
F_VPCMPGTQ,
F_PCMPISTRI,
F_VPCMPISTRI,
F_PCMPISTRM,
F_VPCMPISTRM,
F_VPEXTRB,
F_VPEXTRQ,
F_PEXTRQ,
F_PEXTRB,
F_PEXTRD,
F_VPEXTRD,
F_PEXTRW,
F_VPEXTRW,
F_VPHADDW,
F_VPHADDD,
F_PHADDD,
F_PHADDW,
F_PHADDSW,
F_VPHADDSW,
F_PHMINPOSUW,
F_VPHMINPOSUW,
F_PHSUBD,
F_PHSUBW,
F_VPHSUBD,
F_VPHSUBW,
F_PHSUBSW,
F_VPHSUBSW,
F_PINSRD,
F_VPINSRQ,
F_PINSRQ,
F_PINSRB,
F_VPINSRD,
F_VPINSRB,
F_PINSRW,
F_VPINSRW,
F_PMADDUBSW,
F_VPMADDUBSW,
F_PMADDWD,
F_VPMADDWD,
F_PMAXSB,
F_VPMAXSB,
F_PMAXSD,
F_VPMAXSD,
F_VPMAXSQ,
F_PMAXSW,
F_VPMAXSW,
F_PMAXUB,
F_VPMAXUB,
F_PMAXUD,
F_VPMAXUD,
F_VPMAXUQ,
F_PMAXUW,
F_VPMAXUW,
F_PMINSB,
F_VPMINSB,
F_PMINSD,
F_VPMINSD,
F_VPMINSQ,
F_PMINSW,
F_VPMINSW,
F_PMINUW,
F_VPMINUW,
F_PMINUB,
F_VPMINUB,
F_PMINUD,
F_VPMINUD,
F_VPMINUQ,
F_PMOVMSKB,
F_VPMOVMSKB,
F_VPMOVSXBQ,
F_PMOVSXBW,
F_PMOVSXWQ,
F_VPMOVSXWQ,
F_PMOVSXWD,
F_PMOVSXBD,
F_VPMOVSXDQ,
F_VPMOVSXWD,
F_PMOVSXBQ,
F_VPMOVSXBW,
F_PMOVSXDQ,
F_VPMOVSXBD,
F_PMOVZXWD,
F_PMOVZXDQ,
F_VPMOVZXDQ,
F_PMOVZXWQ,
F_VPMOVZXBQ,
F_PMOVZXBQ,
F_VPMOVZXWD,
F_VPMOVZXBD,
F_VPMOVZXWQ,
F_PMOVZXBD,
F_VPMOVZXBW,
F_PMOVZXBW,
F_PMULDQ,
F_PMULHRSW,
F_PMULHUW,
F_VPMULDQ,
F_VPMULHRSW,
F_VPMULHUW,
F_PMULHW,
F_VPMULHW,
F_PMULUDQ,
F_VPMULUDQ,
F_PMULLW,
F_PMULLD,
F_VPMULLD,
F_VPMULLQ,
F_VPMULLW,
F_POPCNT,
F_POR,
F_VPOR,
F_VPORD,
F_VPORQ,
F_PREFETCHT2,
F_PREFETCHW,
F_PREFETCHT1,
F_PREFETCHNTA,
F_PREFETCHT0,
F_PREFETCHWT1,
F_PSADBW,
F_VPSADBW,
F_PSHUFB,
F_PSHUFD,
F_PSHUFHW,
F_VPSHUFD,
F_VPSHUFB,
F_PSHUFLW,
F_PSHUFW,
F_VPSHUFLW,
F_VPSHUFHW,
F_VPSIGNB,
F_VPSIGND,
F_PSIGNW,
F_PSIGNB,
F_VPSIGNW,
F_PSIGND,
F_PSLLDQ,
F_VPSLLDQ,
F_PSLLQ,
F_PSLLD,
F_VPSLLW,
F_VPSLLQ,
F_PSLLW,
F_VPSLLD,
F_VPSRAW,
F_PSRAD,
F_PSRAW,
F_VPSRAD,
F_VPSRAQ,
F_PSRLDQ,
F_VPSRLDQ,
F_VPSRLQ,
F_PSRLQ,
F_PSRLD,
F_PSRLW,
F_VPSRLD,
F_VPSRLW,
F_VPSUBD,
F_PSUBD,
F_PSUBW,
F_VPSUBB,
F_VPSUBQ,
F_PSUBB,
F_VPSUBW,
F_PSUBQ,
F_PSUBSB,
F_VPSUBSW,
F_VPSUBSB,
F_PSUBSW,
F_VPSUBUSW,
F_VPSUBUSB,
F_PSUBUSB,
F_PSUBUSW,
F_VPTEST,
F_PTEST,
F_PUNPCKLBW,
F_PUNPCKLQDQ,
F_VPUNPCKLWD,
F_VPUNPCKLQDQ,
F_VPUNPCKLBW,
F_PUNPCKLWD,
F_PUNPCKLDQ,
F_VPUNPCKLDQ,
F_VPUNPCKHWD,
F_PUNPCKHDQ,
F_PUNPCKHWD,
F_PUNPCKHQDQ,
F_VPUNPCKHQDQ,
F_VPUNPCKHBW,
F_PUNPCKHBW,
F_VPUNPCKHDQ,
F_PXOR,
F_VPXOR,
F_VPXORD,
F_VPXORQ,
F_PREFETCH,
F_RCL,
F_RCR,
F_ROL,
F_ROR,
F_RET,
F_RETF,
F_RCPPS,
F_VRCPPS,
F_RCPSS,
F_VRCPSS,
F_RDFSBASE,
F_RDGSBASE,
F_RDRAND,
F_RDTSCP,
F_RDTSC,
F_RDPMC,
F_RDMSR,
F_ROUNDPD,
F_VROUNDPD,
F_ROUNDPS,
F_VROUNDPS,
F_ROUNDSD,
F_VROUNDSD,
F_ROUNDSS,
F_VROUNDSS,
F_RSM,
F_RSQRTPS,
F_VRSQRTPS,
F_RSQRTSS,
F_VRSQRTSS,
F_SAHF,
F_SAR,
F_SAL,
F_SHL = F_SAL,
F_SHR,
F_SBB,
F_SCAS,
F_SET,
F_STOS,
F_SUB,
F_SFENCE,
F_SGDT,
F_SHLD,
F_SHRD,
F_SKINIT,
F_SLWPCB,
F_SHUFPD,
F_VSHUFPD,
F_SHUFPS,
F_VSHUFPS,
F_SIDT,
F_SLDT,
F_SMSW,
F_SQRTPD,
F_VSQRTPD,
F_SQRTPS,
F_VSQRTPS,
F_SQRTSD,
F_VSQRTSD,
F_SQRTSS,
F_VSQRTSS,
F_STC,
F_STD,
F_STGI,
F_STI,
F_STMXCSR,
F_VSTMXCSR,
F_STR,
F_SUBPD,
F_VSUBPD,
F_SUBPS,
F_VSUBPS,
F_SUBSD,
F_VSUBSD,
F_SUBSS,
F_VSUBSS,
F_SWAPGS,
F_SYSCALL,
F_SYSENTER,
F_SYSEXIT,
F_SYSRET,
F_TEST,
F_T1MSKC,
F_UCOMISD,
F_VUCOMISD,
F_UCOMISS,
F_VUCOMISS,
F_UD2,
F_UNPCKHPD,
F_VUNPCKHPD,
F_UNPCKHPS,
F_VUNPCKHPS,
F_UNPCKLPD,
F_VUNPCKLPD,
F_UNPCKLPS,
F_VUNPCKLPS,
F_VMLOAD,
F_VMRUN,
F_VMSAVE,
F_VFRCZPD,
F_VFRCZPS,
F_VFRCZSD,
F_VFRCZSS,
F_VPCMOV,
F_VPERMIL2PD,
F_VPERMIL2PS,
F_VPHADDBD,
F_VPHADDBW,
F_VPHADDBQ,
F_VPHADDDQ,
F_VPHADDUBD,
F_VPHADDUBQ,
F_VPHADDUBW,
F_VPHADDUDQ,
F_VPHADDUWD,
F_VPHADDUWQ,
F_VPHADDWD,
F_VPHADDWQ,
F_VPHSUBBW,
F_VPHSUBDQ,
F_VPHSUBWD,
F_VPMACSDD,
F_VPMACSDQH,
F_VPMACSDQL,
F_VPMACSSDD,
F_VPMACSSDQH,
F_VPMACSSDQL,
F_VPMACSSWD,
F_VPMACSSWW,
F_VPMACSWD,
F_VPMACSWW,
F_VPMADCSSWD,
F_VPMADCSWD,
F_VPPERM,
F_VPROTD,
F_VPROTB,
F_VPROTQ,
F_VPROTW,
F_VPSHAB,
F_VPSHAD,
F_VPSHAQ,
F_VPSHAW,
F_VPSHLB,
F_VPSHLD,
F_VPSHLQ,
F_VPSHLW,
F_VFMADD213PD,
F_VFMADDPD,
F_VFMADD132PD,
F_VFMADD231PD,
F_VFMADDPS,
F_VFMADD231PS,
F_VFMADD132PS,
F_VFMADD213PS,
F_VFMADD132SD,
F_VFMADD213SD,
F_VFMADDSD,
F_VFMADD231SD,
F_VFMADD132SS,
F_VFMADD213SS,
F_VFMADDSS,
F_VFMADD231SS,
F_VFMADDSUB132PD,
F_VFMADDSUB213PD,
F_VFMADDSUBPD,
F_VFMADDSUB231PD,
F_VFMADDSUB231PS,
F_VFMADDSUBPS,
F_VFMADDSUB132PS,
F_VFMADDSUB213PS,
F_VFMSUBADDPD,
F_VFMSUBADD213PD,
F_VFMSUBADD132PD,
F_VFMSUBADD231PD,
F_VFMSUBADDPS,
F_VFMSUBADD213PS,
F_VFMSUBADD132PS,
F_VFMSUBADD231PS,
F_VFMSUB213PD,
F_VFMSUBPD,
F_VFMSUB132PD,
F_VFMSUB231PD,
F_VFMSUB213PS,
F_VFMSUBPS,
F_VFMSUB132PS,
F_VFMSUB231PS,
F_VFMSUBSD,
F_VFMSUB231SD,
F_VFMSUB132SD,
F_VFMSUB213SD,
F_VFMSUB231SS,
F_VFMSUB213SS,
F_VFMSUB132SS,
F_VFMSUBSS,
F_VFNMADD231PD,
F_VFNMADDPD,
F_VFNMADD132PD,
F_VFNMADD213PD,
F_VFNMADD231PS,
F_VFNMADD132PS,
F_VFNMADD213PS,
F_VFNMADDPS,
F_VFNMADD213SD,
F_VFNMADDSD,
F_VFNMADD231SD,
F_VFNMADD132SD,
F_VFNMADD213SS,
F_VFNMADDSS,
F_VFNMADD231SS,
F_VFNMADD132SS,
F_VFNMSUB132PD,
F_VFNMSUB213PD,
F_VFNMSUB231PD,
F_VFNMSUBPD,
F_VFNMSUBPS,
F_VFNMSUB213PS,
F_VFNMSUB132PS,
F_VFNMSUB231PS,
F_VFNMSUBSD,
F_VFNMSUB231SD,
F_VFNMSUB213SD,
F_VFNMSUB132SD,
F_VFNMSUBSS,
F_VFNMSUB132SS,
F_VFNMSUB213SS,
F_VFNMSUB231SS,
F_VFPCLASSPD,
F_VFPCLASSPS,
F_VFPCLASSSD,
F_VFPCLASSSS,
F_BEXTR,
F_VPBROADCASTW,
F_VPBROADCASTB,
F_VPBROADCASTD,
F_VPBROADCASTQ,
F_VBROADCASTI32X2,
F_VBROADCASTI32X4,
F_VBROADCASTI64X2,
F_VBROADCASTI32X8,
F_VBROADCASTI64X4,
F_VPBROADCASTMB2Q,
F_VPBROADCASTMW2D,
F_VPCMPB,
F_VPCMPUB,
F_VPCMPW,
F_VPCMPUW,
F_VPCMPD,
F_VPCMPUD,
F_VPCMPQ,
F_VPCMPUQ,
F_VCOMPRESSPD,
F_VCOMPRESSPS,
F_VPCOMPRESSD,
F_VPCOMPRESSQ,
F_VCVTPD2QQ,
F_VCVTTPS2UQQ,
F_VCVTTPS2QQ,
F_VCVTPD2UDQ,
F_VCVTTPD2UQQ,
F_VCVTTPS2UDQ,
F_VMPTRLD,
F_VCVTPD2UQQ,
F_VMPTRST,
F_VMCLEAR,
F_VMREAD,
F_VMWRITE,
F_VMLAUNCH,
F_VMRESUME,
F_VMXOFF,
F_VMXON,
F_VMCALL,
F_VMFUNC,
F_VALIGND,
F_VALIGNQ,
F_VBLENDMPD,
F_VBLENDMPS,
F_VBROADCASTSD,
F_VBROADCASTSS,
F_VBROADCASTI128,
F_VBROADCASTF128,
F_VBROADCASTF32X2,
F_VBROADCASTF32X4,
F_VBROADCASTF32X8,
F_VBROADCASTF64X2,
F_VBROADCASTF64X4,
F_VCVTPH2PS,
F_VCVTPS2PH,
F_VCVTPS2QQ,
F_VCVTPS2UDQ,
F_VCVTPS2UQQ,
F_VCVTQQ2PD,
F_VCVTQQ2PS,
F_VCVTSD2USI,
F_VCVTSS2USI,
F_VCVTTSD2USI,
F_VCVTTSS2USI,
F_VCVTTPD2QQ,
F_VCVTUDQ2PS,
F_VCVTUQQ2PD,
F_VCVTUSI2SD,
F_VCVTUSI2SS,
F_VCVTUQQ2PS,
F_VCVTUDQ2PD,
F_VCVTTPD2UDQ,
F_VDBPSADBW,
F_VEXPANDPD,
F_VEXPANDPS,
F_VERR,
F_VERW,
F_VMMCALL,
F_VPERMILPD,
F_VPERMILPS,
F_VPERM2F128,
F_VPERM2I128,
F_VPERMI2W,
F_VPERMI2D,
F_VPERMI2Q,
F_VPERMI2PS,
F_VPERMI2PD,
F_VPERMT2B,
F_VPERMT2W,
F_VPERMT2D,
F_VPERMT2Q,
F_VPERMT2PS,
F_VPERMT2PD,
F_VPEXPANDD,
F_VPEXPANDQ,
F_VPLZCNTD,
F_VPLZCNTQ,
F_VPMOVB2M,
F_VPMOVW2M,
F_VPMOVD2M,
F_VPMOVQ2M,
F_VPMOVM2B,
F_VPMOVM2W,
F_VPMOVM2D,
F_VPMOVM2Q,
F_VPMOVDB,
F_VPMOVSDB,
F_VPMOVUSDB,
F_VPMOVDW,
F_VPMOVSDW,
F_VPMOVUSDW,
F_VPMOVQB,
F_VPMOVSQB,
F_VPMOVUSQB,
F_VPMOVQD,
F_VPMOVSQD,
F_VPMOVUSQD,
F_VPMOVQW,
F_VPMOVSQW,
F_VPMOVUSQW,
F_VPMOVWB,
F_VPMOVSWB,
F_VPMOVUSWB,
F_VPMULTISHIFTQB,
F_VPROLVD,
F_VPROLVQ,
F_VPROLD,
F_VPROLQ,
F_VPRORVD,
F_VPRORVQ,
F_VPRORD,
F_VPRORQ,
F_VPSCATTERDD,
F_VPSCATTERDQ,
F_VPSCATTERQD,
F_VPSCATTERQQ,
F_VPSLLVW,
F_VPSLLVD,
F_VPSLLVQ,
F_VPMADD52HUQ,
F_VPMADD52LUQ,
F_VEXTRACTI128,
F_VINSERTI128,
F_VPSRAVW,
F_VPSRAVD,
F_VPSRAVQ,
F_VPERMD,
F_VPERMW,
F_VPERMI2B,
F_VPERMB,
F_VPSRLVW,
F_VPSRLVD,
F_VPSRLVQ,
F_VPTERNLOGD,
F_VPTERNLOGQ,
F_VPTESTMB,
F_VPTESTMW,
F_VPTESTMD,
F_VPTESTMQ,
F_VPTESTNMB,
F_VPTESTNMW,
F_VPTESTNMD,
F_VPTESTNMQ,
F_VRANGEPD,
F_VRANGEPS,
F_VRANGESD,
F_VRANGESS,
F_VRCP14PD,
F_VRCP14PS,
F_VRCP14SD,
F_VRCP14SS,
F_VREDUCEPD,
F_VREDUCEPS,
F_VREDUCESD,
F_VREDUCESS,
F_VRNDSCALEPD,
F_VRNDSCALEPS,
F_VRNDSCALESD,
F_VRNDSCALESS,
F_VRSQRT14PD,
F_VRSQRT14PS,
F_VRSQRT14SD,
F_VRSQRT14SS,
F_VSCALEFPD,
F_VSCALEFPS,
F_VSCALEFSD,
F_VSCALEFSS,
F_VSCATTERDPS,
F_VSCATTERDPD,
F_VSCATTERQPS,
F_VSCATTERQPD,
F_VSHUFF32X4,
F_VSHUFF64X2,
F_VSHUFI32X4,
F_VSHUFI64X2,
F_VPERMPD,
F_VPERMQ,
F_VPERMPS,
F_VTESTPS,
F_VTESTPD,
F_VGATHERDPD,
F_VGATHERQPD,
F_VGATHERDPS,
F_VGATHERQPS,
F_VPGATHERDD,
F_VPGATHERQD,
F_VPGATHERDQ,
F_VPGATHERQQ,
F_VGETEXPPD,
F_VGETEXPPS,
F_VGETEXPSD,
F_VGETEXPSS,
F_VGETMANTPD,
F_VGETMANTPS,
F_VGETMANTSD,
F_VGETMANTSS,
F_VINSERTF32X4,
F_VINSERTF64X2,
F_VINSERTF32X8,
F_VINSERTF64X4,
F_VINSERTI32X4,
F_VINSERTI64X2,
F_VINSERTI32X8,
F_VINSERTI64X4,
F_VPBLENDMB,
F_VPBLENDMW,
F_VPBLENDMD,
F_VPBLENDMQ,
F_VZEROALL,
F_VZEROUPPER,
F_VPCOMB,
F_VPCOMW,
F_VPCOMD,
F_VPCOMQ,
F_VPCOMUB,
F_VPCOMUW,
F_VPCOMUD,
F_VPCOMUQ,
F_WAIT,
F_FWAIT = F_WAIT,
F_WBINVD,
F_WRFSBASE,
F_WRGSBASE,
F_WRMSR,
F_XLAT,
F_XOR,
F_XADD,
F_XCHG,
F_XGETBV,
F_XORPD,
F_VXORPD,
F_XORPS,
F_VXORPS,
F_XRSTOR,
F_XRSTOR64,
F_XSAVE,
F_XSAVE64,
F_XSAVEOPT,
F_XSAVEOPT64,
F_XSETBV,
F_MULX,
F_PDEP,
F_PEXT,
F_RORX,
F_SHLX,
F_SHRX,
F_SARX,
F_TZCNT,
F_TZMSK,
F_XABORT,
F_XBEGIN,
F_XEND,
F_XTEST,
F_RDSEED,
F_CLAC,
F_STAC,
F_V4FMADDPS,
F_V4FNMADDPS,
F_V4FMADDSS,
F_V4FNMADDSS,
F_VEXP2PD,
F_VEXP2PS,
F_VGATHERPF0DPS,
F_VGATHERPF0QPS,
F_VGATHERPF0DPD,
F_VGATHERPF0QPD,
F_VGATHERPF1DPS,
F_VGATHERPF1QPS,
F_VGATHERPF1DPD,
F_VGATHERPF1QPD,
F_VP4DPWSSDS,
F_VP4DPWSSD,
F_VRCP28PD,
F_VRCP28SD,
F_VRCP28PS,
F_VRCP28SS,
F_VRSQRT28PD,
F_VRSQRT28SD,
F_VRSQRT28PS,
F_VRSQRT28SS,
F_VSCATTERPF0DPS,
F_VSCATTERPF0QPS,
F_VSCATTERPF0DPD,
F_VSCATTERPF0QPD,
F_VSCATTERPF1DPS,
F_VSCATTERPF1QPS,
F_VSCATTERPF1DPD,
F_VSCATTERPF1QPD
} fcml_en_instruction;
/** @} */
/**
* @defgroup PSEUDO_OPERATIONS_GROUP Supported pseudo operations.
* @{
*/
/** Pseudo operations. */
typedef enum fcml_en_pseudo_operations {
/** Set if there is no pseudo operation. */
FP_NO_PSEUDO_OP,
/** db / .byte */
FP_DB
} fcml_en_pseudo_operations;
/** @} */
#endif /* FCML_INSTRUCTIONS_H_ */