diff options
author | iximeow <me@iximeow.net> | 2022-07-22 02:15:40 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2023-01-02 08:50:22 -0800 |
commit | e6e7fabfc907eaf016520d9c2a2e128b0d28f019 (patch) | |
tree | c08280a4dc9cbd3d02926fd8e6476d514c10393d /src/generated | |
parent | 78b40bb12a265d866b01547924defb10aec283a8 (diff) |
yax builds again with opcodes generated by type
Diffstat (limited to 'src/generated')
-rw-r--r-- | src/generated/imp.rs | 7234 | ||||
-rw-r--r-- | src/generated/mod.rs | 15 | ||||
-rw-r--r-- | src/generated/opcode.rs | 7186 |
3 files changed, 14435 insertions, 0 deletions
diff --git a/src/generated/imp.rs b/src/generated/imp.rs new file mode 100644 index 0000000..c028ff7 --- /dev/null +++ b/src/generated/imp.rs @@ -0,0 +1,7234 @@ +pub(crate) mod real_mode { + use crate::generated::real_mode::Opcode; + use crate::real_mode::{InstDecoder, Instruction, DecodeError}; + impl InstDecoder { + fn feature_sgx(&self) -> bool { + true + } + fn feature_smap(&self) -> bool { + true + } + fn feature_avx_unimplemented(&self) -> bool { + true + } + fn feature_uintr(&self) -> bool { + true + } + fn feature_pentium(&self) -> bool { + true + } + fn feature_aesni(&self) -> bool { + true + } + fn feature_invlpgb(&self) -> bool { + true + } + fn feature_fsgsbase(&self) -> bool { + true + } + fn feature_vmx(&self) -> bool { + true + } + fn feature_simd(&self) -> bool { + true + } + fn feature_avx(&self) -> bool { + true + } + fn feature_hreset(&self) -> bool { + true + } + fn feature_avx512_vp2intersect(&self) -> bool { + true + } + fn feature_rdpru(&self) -> bool { + true + } + fn feature_sse4_2(&self) -> bool { + true + } + fn feature_monitor(&self) -> bool { + true + } + fn feature_avx512_f_typo(&self) -> bool { + true + } + fn feature_sse4_1(&self) -> bool { + true + } + fn feature_avx512_dq(&self) -> bool { + true + } + fn feature_adx(&self) -> bool { + true + } + fn feature_fxsr(&self) -> bool { + true + } + fn feature_tsx(&self) -> bool { + true + } + fn feature_waitpkg(&self) -> bool { + true + } + fn feature_80286(&self) -> bool { + true + } + fn feature_sysenter(&self) -> bool { + true + } + fn feature_invpcid_unimplemented(&self) -> bool { + true + } + fn feature_avx512_4vnniw(&self) -> bool { + true + } + fn feature_avx512_vnni(&self) -> bool { + true + } + fn feature_avx512_pf(&self) -> bool { + true + } + fn feature_avx512_cd(&self) -> bool { + true + } + fn feature_avx512_bf16(&self) -> bool { + true + } + fn feature_avx512bw_unimplemented(&self) -> bool { + true + } + fn feature_mpk(&self) -> bool { + true + } + fn feature_avx512_f__vl_unimplemented(&self) -> bool { + true + } + fn feature_sha(&self) -> bool { + true + } + fn feature_cet(&self) -> bool { + true + } + fn feature_80486(&self) -> bool { + true + } + fn feature_sse(&self) -> bool { + true + } + fn feature_pentium_pro(&self) -> bool { + true + } + fn feature_itanium(&self) -> bool { + true + } + fn feature_mpx(&self) -> bool { + true + } + fn feature_extra_instructions(&self) -> bool { + true + } + fn feature_rdtscp(&self) -> bool { + true + } + fn feature_avx2(&self) -> bool { + true + } + fn feature_pconfig(&self) -> bool { + true + } + fn feature_avx512_ifma(&self) -> bool { + true + } + fn feature_gfni(&self) -> bool { + true + } + fn feature_vpclmulqdq(&self) -> bool { + true + } + fn feature_80386(&self) -> bool { + true + } + fn feature_movbe(&self) -> bool { + true + } + fn feature_avx512_f(&self) -> bool { + true + } + fn feature_emx(&self) -> bool { + true + } + fn feature_pclmulqdq(&self) -> bool { + true + } + fn feature_fma3(&self) -> bool { + true + } + fn feature_fma4(&self) -> bool { + true + } + fn feature_xsaveopt(&self) -> bool { + true + } + fn feature_syscall(&self) -> bool { + true + } + fn feature_sse4a(&self) -> bool { + true + } + fn feature_avx512_vpopcntdq(&self) -> bool { + true + } + fn feature_invpcid(&self) -> bool { + true + } + fn feature_80186_bound(&self) -> bool { + true + } + fn feature_tsxldtrk(&self) -> bool { + true + } + fn feature_cmov(&self) -> bool { + true + } + fn feature_avx512_bw(&self) -> bool { + true + } + fn feature_ssse3(&self) -> bool { + true + } + fn feature_clflushopt(&self) -> bool { + true + } + fn feature_80186_pusha(&self) -> bool { + true + } + fn feature_smx(&self) -> bool { + true + } + fn feature_8086_bcd(&self) -> bool { + true + } + fn feature_abm(&self) -> bool { + true + } + fn feature_3dnowprefetch(&self) -> bool { + true + } + fn feature_rdpid(&self) -> bool { + true + } + fn feature_lahfsahf(&self) -> bool { + true + } + fn feature_jcxz(&self) -> bool { + true + } + fn feature_enqcmd(&self) -> bool { + true + } + fn feature_new(&self) -> bool { + true + } + fn feature_ptwrite(&self) -> bool { + true + } + fn feature_avx512_vbmi(&self) -> bool { + true + } + fn feature_x87(&self) -> bool { + true + } + fn feature_mmx(&self) -> bool { + true + } + fn feature_avx512_bitalg(&self) -> bool { + true + } + fn feature_keylocker(&self) -> bool { + true + } + fn feature_80186(&self) -> bool { + true + } + fn feature_clwb(&self) -> bool { + true + } + fn feature_avx512_4fmaps(&self) -> bool { + true + } + fn feature_tdx(&self) -> bool { + true + } + fn feature_popcnt(&self) -> bool { + true + } + fn feature_snp(&self) -> bool { + true + } + fn feature_avx512_gfni(&self) -> bool { + true + } + fn feature_3dnow(&self) -> bool { + true + } + fn feature_avx512_vbmi2(&self) -> bool { + true + } + fn feature_8086(&self) -> bool { + true + } + fn feature_svm(&self) -> bool { + true + } + fn feature_sse3(&self) -> bool { + true + } + fn feature_sse2(&self) -> bool { + true + } + fn feature_avx512_er(&self) -> bool { + true + } + fn feature_xsave64(&self) -> bool { + true + } + fn feature_80286_arpl(&self) -> bool { + true + } + fn feature_bmi1(&self) -> bool { + true + } + fn feature_bmi2(&self) -> bool { + true + } + fn feature_movdir(&self) -> bool { + true + } + fn feature_vaes(&self) -> bool { + true + } + fn feature_xsave(&self) -> bool { + true + } + fn feature_rdrand(&self) -> bool { + true + } + fn feature_clzero(&self) -> bool { + true + } + fn feature_rdseed(&self) -> bool { + true + } + } + pub(crate) fn revise_instruction(decoder: &InstDecoder, inst: &mut Instruction) -> Result<(), DecodeError> { + if inst.prefixes.evex().is_some() { + if !decoder.avx512() { + return Err(DecodeError::InvalidOpcode); + } else { + return Ok(()); + } + } + + // for some instructions (tzcnt), not having an extension means the instruction is + // interpreted as another, rather than being simply rejected. + // we might still reject the alternate instruction later, if the extension adding *it* + // is also not supported. + if inst.opcode == Opcode::TZCNT { + if !decoder.bmi1() { + // tzcnt is only supported if bmi1 is enabled. without bmi1, this decodes as bsf. + inst.opcode = Opcode::BSF; + } + } + + match inst.opcode { + // we'll never be rejecting the instruction `Invalid` + Opcode::Invalid => {} + Opcode::ENCLS | + Opcode::ENCLU | + Opcode::ENCLV => { + if !decoder.feature_sgx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLAC | + Opcode::STAC => { + if !decoder.feature_smap() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMAXUB | + Opcode::VPMAXUB => { + if !decoder.feature_avx_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::UIRET | + Opcode::TESTUI | + Opcode::CLUI | + Opcode::STUI | + Opcode::SENDUIPI => { + if !decoder.feature_uintr() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CPUID | + Opcode::WRMSR | + Opcode::RDTSC | + Opcode::RDMSR | + Opcode::RSM | + Opcode::CMPXCHG8B => { + if !decoder.feature_pentium() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::AESKEYGENASSIST | + Opcode::AESIMC | + Opcode::AESENC | + Opcode::AESENCLAST | + Opcode::AESDEC | + Opcode::AESDECLAST => { + if !decoder.feature_aesni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVLPGB | + Opcode::TLBSYNC => { + if !decoder.feature_invlpgb() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDFSBASE | + Opcode::RDGSBASE | + Opcode::WRFSBASE | + Opcode::WRGSBASE => { + if !decoder.feature_fsgsbase() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VMPTRLD | + Opcode::VMPTRST | + Opcode::VMCLEAR | + Opcode::VMREAD | + Opcode::VMWRITE | + Opcode::VMCALL | + Opcode::VMLAUNCH | + Opcode::VMRESUME | + Opcode::VMXOFF | + Opcode::VMXON | + Opcode::INVEPT | + Opcode::INVVPID | + Opcode::VMFUNC => { + if !decoder.feature_vmx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VLDDQU | + Opcode::VPADDB | + Opcode::VPADDD | + Opcode::VPADDQ | + Opcode::VPADDW | + Opcode::VPABSB | + Opcode::VPABSW | + Opcode::VPABSD | + Opcode::VMAXSD | + Opcode::VMAXSS | + Opcode::VMINSD | + Opcode::VMINSS | + Opcode::VMULSD | + Opcode::VMULSS | + Opcode::VRCPSS | + Opcode::VPSUBUSB | + Opcode::VPSUBUSW | + Opcode::VXORPD | + Opcode::VXORPS | + Opcode::VPAVGB | + Opcode::VPAVGW | + Opcode::VANDNPD | + Opcode::VANDNPS | + Opcode::VPHADDD | + Opcode::VPHADDSW | + Opcode::VPHADDW | + Opcode::VANDPD | + Opcode::VANDPS | + Opcode::VPADDSB | + Opcode::VPADDSW | + Opcode::VPADDUSB | + Opcode::VPADDUSW | + Opcode::VPHSUBD | + Opcode::VPHSUBSW | + Opcode::VPHSUBW | + Opcode::VHADDPD | + Opcode::VHADDPS | + Opcode::VHSUBPD | + Opcode::VHSUBPS | + Opcode::VORPD | + Opcode::VORPS | + Opcode::VPBLENDVB | + Opcode::VPBLENDW | + Opcode::VADDSUBPD | + Opcode::VADDSUBPS | + Opcode::VRSQRTPS | + Opcode::VRSQRTSS | + Opcode::VPALIGNR | + Opcode::VPSUBSB | + Opcode::VPSUBSW | + Opcode::VPMULHUW | + Opcode::VPMULHW | + Opcode::VPMULLW | + Opcode::VPSHUFB | + Opcode::VPSHUFHW | + Opcode::VPSHUFLW | + Opcode::VPHMINPOSUW | + Opcode::VRCPPS | + Opcode::VMPSADBW | + Opcode::VPMADDUBSW | + Opcode::VPMADDWD | + Opcode::VMASKMOVDQU | + Opcode::VPMOVMSKB | + Opcode::VPSADBW | + Opcode::VPSLLDQ | + Opcode::VPSRLDQ | + Opcode::VDPPD | + Opcode::VDPPS | + Opcode::VLDMXCSR | + Opcode::VSTMXCSR | + Opcode::VMOVMSKPD | + Opcode::VMOVMSKPS | + Opcode::VPTEST | + Opcode::VTESTPD | + Opcode::VTESTPS | + Opcode::VPEXTRB | + Opcode::VPEXTRW | + Opcode::VPEXTRD | + Opcode::VPEXTRQ | + Opcode::VPACKSSDW | + Opcode::VPACKUSDW | + Opcode::VPACKSSWB | + Opcode::VPACKUSWB | + Opcode::VBLENDPD | + Opcode::VBLENDPS | + Opcode::VBLENDVPD | + Opcode::VBLENDVPS | + Opcode::VPMULHRSW | + Opcode::VPAND | + Opcode::VPANDN | + Opcode::VPOR | + Opcode::VPCMPEQB | + Opcode::VPCMPEQD | + Opcode::VPCMPEQQ | + Opcode::VPCMPEQW | + Opcode::VPCMPGTB | + Opcode::VPCMPGTD | + Opcode::VPCMPGTQ | + Opcode::VPCMPGTW | + Opcode::VPMAXSB | + Opcode::VPMAXSD | + Opcode::VPMAXSW | + Opcode::VPMAXUB | + Opcode::VPMAXUW | + Opcode::VPMINSB | + Opcode::VPMINSW | + Opcode::VPMINUB | + Opcode::VPMINUW | + Opcode::VPMAXUD | + Opcode::VPMINSD | + Opcode::VPSIGNB | + Opcode::VPSIGNW | + Opcode::VPSIGND | + Opcode::VPINSRB | + Opcode::VPINSRW | + Opcode::VPINSRD | + Opcode::VPINSRQ | + Opcode::VPMOVSXBD | + Opcode::VPMOVSXBQ | + Opcode::VPMOVSXBW | + Opcode::VPMOVSXDQ | + Opcode::VPMOVSXWD | + Opcode::VPMOVSXWQ | + Opcode::VPMOVZXBD | + Opcode::VPMOVZXBQ | + Opcode::VPMOVZXBW | + Opcode::VPMOVZXDQ | + Opcode::VPMOVZXWD | + Opcode::VPMOVZXWQ | + Opcode::VPMULDQ | + Opcode::VPMULLQ | + Opcode::VPMULLD | + Opcode::VPMULUDQ | + Opcode::VPSHUFD | + Opcode::VSHUFPD | + Opcode::VSHUFPS | + Opcode::VSQRTPD | + Opcode::VSQRTPS | + Opcode::VSQRTSS | + Opcode::VSQRTSD | + Opcode::VSUBPD | + Opcode::VSUBPS | + Opcode::VSUBSD | + Opcode::VSUBSS | + Opcode::VUCOMISD | + Opcode::VUCOMISS | + Opcode::VROUNDPD | + Opcode::VROUNDPS | + Opcode::VROUNDSD | + Opcode::VROUNDSS | + Opcode::VPSLLD | + Opcode::VPSLLQ | + Opcode::VPSLLW | + Opcode::VPSRAD | + Opcode::VPSRAW | + Opcode::VPSRLD | + Opcode::VPSRLQ | + Opcode::VPSRLW | + Opcode::VPSUBB | + Opcode::VPSUBW | + Opcode::VPSUBD | + Opcode::VPSUBQ | + Opcode::VPXOR | + Opcode::VPUNPCKHBW | + Opcode::VPUNPCKHWD | + Opcode::VPUNPCKHDQ | + Opcode::VPUNPCKHQDQ | + Opcode::VPUNPCKLBW | + Opcode::VPUNPCKLWD | + Opcode::VPUNPCKLDQ | + Opcode::VPUNPCKLQDQ | + Opcode::VUNPCKHPD | + Opcode::VUNPCKHPS | + Opcode::VUNPCKLPD | + Opcode::VUNPCKLPS | + Opcode::VPCMPESTRI | + Opcode::VPCMPESTRM | + Opcode::VPCMPISTRI | + Opcode::VPCMPISTRM | + Opcode::VBROADCASTSS | + Opcode::VBROADCASTSD | + Opcode::VBROADCASTF128 | + Opcode::VBROADCASTSD | + Opcode::VBROADCASTSS | + Opcode::VINSERTF128 | + Opcode::VEXTRACTF128 | + Opcode::VMASKMOVPD | + Opcode::VMASKMOVPS | + Opcode::VPERMILPD | + Opcode::VPERMILPS | + Opcode::VPERM2F128 | + Opcode::VZEROUPPER | + Opcode::VZEROALL => { + if !decoder.feature_avx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::HRESET => { + if !decoder.feature_hreset() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VP2INTERSECTD | + Opcode::VP2INTERSECTQ => { + if !decoder.feature_avx512_vp2intersect() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPRU => { + if !decoder.feature_rdpru() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CRC32 | + Opcode::PCMPESTRI | + Opcode::PCMPESTRM | + Opcode::PCMPISTRI | + Opcode::PCMPISTRM | + Opcode::PCMPGTQ => { + if !decoder.feature_sse4_2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MONITOR | + Opcode::MWAIT => { + if !decoder.feature_monitor() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPRORRD | + Opcode::VPRORRQ => { + if !decoder.feature_avx512_f_typo() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PHMINPOSUW | + Opcode::PMULDQ | + Opcode::PMULLD | + Opcode::DPPS | + Opcode::DPPD | + Opcode::PACKUSDW | + Opcode::PCMPEQQ | + Opcode::PTEST | + Opcode::MOVNTDQA | + Opcode::ROUNDSS | + Opcode::ROUNDSD | + Opcode::ROUNDPS | + Opcode::ROUNDPD | + Opcode::PMAXSB | + Opcode::PMAXSD | + Opcode::PMAXUW | + Opcode::PMAXUD | + Opcode::PMINSD | + Opcode::PMINSB | + Opcode::PMINUD | + Opcode::PMINUW | + Opcode::BLENDW | + Opcode::PBLENDW | + Opcode::BLENDVPS | + Opcode::BLENDVPD | + Opcode::PBLENDVB | + Opcode::BLENDPS | + Opcode::BLENDPD | + Opcode::MPSADBW | + Opcode::PMOVZXDQ | + Opcode::PMOVSXDQ | + Opcode::PMOVZXBD | + Opcode::PMOVSXBD | + Opcode::PMOVZXWQ | + Opcode::PMOVSXWQ | + Opcode::PMOVZXBQ | + Opcode::PMOVSXBQ | + Opcode::PMOVSXWD | + Opcode::PMOVZXWD | + Opcode::PEXTRQ | + Opcode::PEXTRD | + Opcode::PEXTRB | + Opcode::PMOVSXBW | + Opcode::PMOVZXBW | + Opcode::PINSRQ | + Opcode::PINSRD | + Opcode::PINSRB | + Opcode::EXTRACTPS | + Opcode::INSERTPS => { + if !decoder.feature_sse4_1() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::KANDB | + Opcode::KANDNB | + Opcode::KADDB | + Opcode::KTESTB | + Opcode::KADDW | + Opcode::KTESTW | + Opcode::KMOVB | + Opcode::KNOTB | + Opcode::KORB | + Opcode::KORTESTB | + Opcode::KSHIFTLB | + Opcode::KSHIFTRB | + Opcode::KXNORB | + Opcode::KXORB | + Opcode::VBROADCASTF32X2 | + Opcode::VBROADCASTF64X2 | + Opcode::VBROADCASTF32X8 | + Opcode::VBROADCASTI32X8 | + Opcode::VBROADCASTI64X2 | + Opcode::VBROADCASTI32X2 | + Opcode::VEXTRACTF32X8 | + Opcode::VEXTRACTI32X8 | + Opcode::VGETEXPSD | + Opcode::VGETEXPSS | + Opcode::VXORPD | + Opcode::VXORPS | + Opcode::VPEXTRD | + Opcode::VPEXTRQ | + Opcode::VPINSRD | + Opcode::VPINSRQ | + Opcode::VANDNPD | + Opcode::VANDNPS | + Opcode::VANDPD | + Opcode::VANDPS | + Opcode::VORPD | + Opcode::VORPS | + Opcode::VCVTTPD2QQ | + Opcode::VCVTPD2QQ | + Opcode::VCVTTPD2UQQ | + Opcode::VCVTPD2UQQ | + Opcode::VCVTTPS2QQ | + Opcode::VCVTPS2QQ | + Opcode::VCVTTPS2UQQ | + Opcode::VCVTPS2UQQ | + Opcode::VCVTUQQ2PD | + Opcode::VCVTUQQ2PS | + Opcode::VEXTRACTF64X2 | + Opcode::VEXTRACTI64X2 | + Opcode::VFPCLASSPD | + Opcode::VFPCLASSPS | + Opcode::VFPCLASSSD | + Opcode::VFPCLASSSS | + Opcode::VINSERTF64X2 | + Opcode::VINSERTF32X8 | + Opcode::VINSERTI32X8 | + Opcode::VINSERTI64X2 | + Opcode::VPMOVM2D | + Opcode::VPMOVM2Q | + Opcode::VPMOVB2D | + Opcode::VPMOVQ2M | + Opcode::VRANGEPD | + Opcode::VRANGEPS | + Opcode::VRANGESD | + Opcode::VRANGESS | + Opcode::VREDUCEPD | + Opcode::VREDUCEPS | + Opcode::VREDUCESD | + Opcode::VREDUCESS => { + if !decoder.feature_avx512_dq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ADCX | + Opcode::ADOX => { + if !decoder.feature_adx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::FXSAVE | + Opcode::FXRSTOR => { + if !decoder.feature_fxsr() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XABORT | + Opcode::XBEGIN | + Opcode::XEND | + Opcode::XTEST => { + if !decoder.feature_tsx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::TPAUSE | + Opcode::UMONITOR | + Opcode::UMWAIT => { + if !decoder.feature_waitpkg() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLTS | + Opcode::LAR | + Opcode::LGDT | + Opcode::LIDT | + Opcode::LLDT | + Opcode::LMSW | + Opcode::LSL | + Opcode::SGDT | + Opcode::SIDT | + Opcode::SLDT | + Opcode::SMSW | + Opcode::STR | + Opcode::LTR | + Opcode::VERR | + Opcode::VERW => { + if !decoder.feature_80286() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SYSENTER | + Opcode::SYSEXIT => { + if !decoder.feature_sysenter() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVVPID => { + if !decoder.feature_invpcid_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VP4DPWSSDS | + Opcode::VP4DPWSSD => { + if !decoder.feature_avx512_4vnniw() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPDPBUSDS | + Opcode::VPDPBUSD | + Opcode::VPDPWSSDS | + Opcode::VPDPWSSD => { + if !decoder.feature_avx512_vnni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VGATHERPF0DPD | + Opcode::VGATHERPF0DPS | + Opcode::VGATHERPF0QPD | + Opcode::VGATHERPF0QPS | + Opcode::VGATHERPF1DPD | + Opcode::VGATHERPF1DPS | + Opcode::VGATHERPF1QPD | + Opcode::VGATHERPF1QPS | + Opcode::VSCATTERPF0DPD | + Opcode::VSCATTERPF0DPS | + Opcode::VSCATTERPF0QPD | + Opcode::VSCATTERPF0QPS | + Opcode::VSCATTERPF1DPD | + Opcode::VSCATTERPF1DPS | + Opcode::VSCATTERPF1QPD | + Opcode::VSCATTERPF1QPS => { + if !decoder.feature_avx512_pf() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPBROADCASTMW2D | + Opcode::VPBROADCASTMB2Q | + Opcode::VPBROADCASTM | + Opcode::VPCONFLICTD | + Opcode::VPCONFLICTQ | + Opcode::VPLZCNTD | + Opcode::VPLZCNTQ => { + if !decoder.feature_avx512_cd() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VCVTNE2PS2BF16 | + Opcode::VCVTNEPS2BF16 | + Opcode::VDPBF16PS => { + if !decoder.feature_avx512_bf16() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMOVQ2M => { + if !decoder.feature_avx512bw_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPKRU | + Opcode::WRPKRU => { + if !decoder.feature_mpk() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VSCATTERDPS | + Opcode::VSCATTERDPD | + Opcode::VSCATTERQPS | + Opcode::VSCATTERQPD => { + if !decoder.feature_avx512_f__vl_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SHA1RNDS4 | + Opcode::SHA1NEXTE | + Opcode::SHA1MSG1 | + Opcode::SHA1MSG2 | + Opcode::SHA256RNDS2 | + Opcode::SHA256MSG1 | + Opcode::SHA256MSG2 => { + if !decoder.feature_sha() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::WRUSS | + Opcode::WRSS | + Opcode::INCSSP | + Opcode::SAVEPREVSSP | + Opcode::SETSSBSY | + Opcode::CLRSSBSY | + Opcode::RSTORSSP | + Opcode::ENDBR64 | + Opcode::ENDBR32 => { + if !decoder.feature_cet() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BSWAP | + Opcode::CMPXCHG | + Opcode::INVD | + Opcode::WBINVD | + Opcode::INVLPG | + Opcode::XADD => { + if !decoder.feature_80486() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVSS | + Opcode::ADDSS | + Opcode::SUBSS | + Opcode::MULSS | + Opcode::DIVSS | + Opcode::MINSS | + Opcode::MAXSS | + Opcode::SQRTSS | + Opcode::MOVUPS | + Opcode::MOVHLPS | + Opcode::MOVLPS | + Opcode::MOVHPS | + Opcode::MOVLHPS | + Opcode::UNPCKLPS | + Opcode::UNPCKHPS | + Opcode::PREFETCHNTA | + Opcode::PREFETCH0 | + Opcode::PREFETCH1 | + Opcode::PREFETCH2 | + Opcode::MOVAPS | + Opcode::CVTPI2PS | + Opcode::CVTSI2SS | + Opcode::MOVNTPS | + Opcode::CVTTSS2SI | + Opcode::CVTTPS2PI | + Opcode::CVTSS2SI | + Opcode::CVTPS2PI | + Opcode::UCOMISS | + Opcode::COMISS | + Opcode::SQRTPS | + Opcode::MOVMSKPS | + Opcode::RSQRTSS | + Opcode::RSQRTPS | + Opcode::RCPPS | + Opcode::RCPSS | + Opcode::ANDPS | + Opcode::ANDNPS | + Opcode::XORPS | + Opcode::ORPS | + Opcode::ADDPS | + Opcode::MULPS | + Opcode::SUBPS | + Opcode::MINPS | + Opcode::DIVPS | + Opcode::MAXPS | + Opcode::PSHUFW | + Opcode::LDMXCSR | + Opcode::STMXCSR | + Opcode::SFENCE | + Opcode::CMPPS | + Opcode::CMPSS | + Opcode::PINSRW | + Opcode::PEXTRW | + Opcode::SHUFPS | + Opcode::PMOVMSKB | + Opcode::PMINUB | + Opcode::PMAXUB | + Opcode::PAVGB | + Opcode::PAVGW | + Opcode::PMULHUW | + Opcode::MOVNTQ | + Opcode::PMINSW | + Opcode::PMAXSW | + Opcode::PSADBW | + Opcode::MASKMOVQ | + Opcode::LDMXCSR | + Opcode::STMXCSR => { + if !decoder.feature_sse() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::UD2 => { + if !decoder.feature_pentium_pro() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::JMPE => { + if !decoder.feature_itanium() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BNDMK | + Opcode::BNDCL | + Opcode::BNDCU | + Opcode::BNDCN | + Opcode::BNDMOV | + Opcode::BNDLDX | + Opcode::BNDSTX => { + if !decoder.feature_mpx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SWAPGS | + Opcode::SLHD | + Opcode::CDQE | + Opcode::MOVSXD | + Opcode::CMPXCHG16B => { + if !decoder.feature_extra_instructions() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDTSCP => { + if !decoder.feature_rdtscp() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VBROADCASTI128 | + Opcode::VPBROADCASTB | + Opcode::VPBROADCASTW | + Opcode::VPBROADCASTD | + Opcode::VPBROADCASTQ | + Opcode::VINSERTI128 | + Opcode::VEXTRACTI128 | + Opcode::VPMASKMOVD | + Opcode::VPMASKMOVQ | + Opcode::VPERMPS | + Opcode::VPERMD | + Opcode::VPERMPD | + Opcode::VPERMQ | + Opcode::VPERM2I128 | + Opcode::VPBLENDD | + Opcode::VPSLLVD | + Opcode::VPSLLVQ | + Opcode::VPSRLVD | + Opcode::VPSRLVQ | + Opcode::VPSRAVD => { + if !decoder.feature_avx2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PCONFIG => { + if !decoder.feature_pconfig() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMADD52HUQ | + Opcode::VPMADD52LUQ => { + if !decoder.feature_avx512_ifma() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::GF2P8AFFINEQB | + Opcode::GF2P8AFFINEINVQB | + Opcode::GF2P8MULB => { + if !decoder.feature_gfni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPCLMULQDQ => { + if !decoder.feature_vpclmulqdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BSF | + Opcode::BSR | + Opcode::BT | + Opcode::BTS | + Opcode::BTC | + Opcode::BTR | + Opcode::CDQ | + Opcode::CWDE | + Opcode::LDS | + Opcode::LES | + Opcode::LFS | + Opcode::LGS | + Opcode::LSS | + Opcode::MOVZX | + Opcode::MOVSX | + Opcode::SETO | + Opcode::SETNO | + Opcode::SETB | + Opcode::SETAE | + Opcode::SETZ | + Opcode::SETNZ | + Opcode::SETBE | + Opcode::SETA | + Opcode::SETS | + Opcode::SETNS | + Opcode::SETP | + Opcode::SETNP | + Opcode::SETL | + Opcode::SETGE | + Opcode::SETLE | + Opcode::SETG | + Opcode::SHLD | + Opcode::SHRD => { + if !decoder.feature_80386() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVBE => { + if !decoder.feature_movbe() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VCVTQQ2PD | + Opcode::VCVTQQ2PS | + Opcode::VCVTUSI2USD | + Opcode::VCVTUSI2USS | + Opcode::VEXTRACTF32X4 | + Opcode::VEXTRACTF64X4 | + Opcode::VEXTRACTI32X4 | + Opcode::VEXTRACTI64X4 | + Opcode::VFIXUPIMMSD | + Opcode::VFIXUPIMMSS | + Opcode::VINSERTI64X4 | + Opcode::VMOVDQA32 | + Opcode::VMOVDQA64 | + Opcode::VMOVDQU32 | + Opcode::VMOVDQU64 | + Opcode::VPCOMPRESSQ | + Opcode::VPCOMPRESSD | + Opcode::VSCALEDPD | + Opcode::VSCALEDPS | + Opcode::VSCALEDSD | + Opcode::VSCALEDSS | + Opcode::VSCATTERDD | + Opcode::VSCATTERDQ | + Opcode::VSCATTERQD | + Opcode::VSCATTERQQ | + Opcode::VADDPD | + Opcode::VADDPS | + Opcode::VCMPPD | + Opcode::VCMPPS | + Opcode::VCVTDQ2PD | + Opcode::VCVTDQ2PS | + Opcode::VCVTPD2DQ | + Opcode::VCVTPD2PS | + Opcode::VCVTPS2DQ | + Opcode::VCVTPS2PD | + Opcode::VCVTTPD2DQ | + Opcode::VCVTTPS2DQ | + Opcode::VDIVPD | + Opcode::VDIVPS | + Opcode::VMAXPD | + Opcode::VMAXPS | + Opcode::VMINPD | + Opcode::VMINPS | + Opcode::VMOVAPD | + Opcode::VMOVAPS | + Opcode::VMOVDDUP | + Opcode::VMOVDQA | + Opcode::VMOVDQU | + Opcode::VMOVNTDQA | + Opcode::VMOVNTDQ | + Opcode::VMOVNTPD | + Opcode::VMOVNTPS | + Opcode::VMOVSHDUP | + Opcode::VMOVSLDUP | + Opcode::VMOVUPD | + Opcode::VMOVUPS | + Opcode::VMULPD | + Opcode::VMULPS | + Opcode::VPANDD | + Opcode::VPANDQ | + Opcode::VPANDND | + Opcode::VPANDNQ | + Opcode::VPCMPEQD | + Opcode::VPCMPEQQ | + Opcode::VPCMPGTD | + Opcode::VPCMPGTQ | + Opcode::VPMAXSD | + Opcode::VPMAXSQ | + Opcode::VPMAXUD | + Opcode::VPMAXUQ | + Opcode::VPMINSD | + Opcode::VPMINSQ | + Opcode::VPMINUD | + Opcode::VPMINUQ | + Opcode::VPCMPD | + Opcode::VPCMPQ | + Opcode::VPCMPUD | + Opcode::VPCMPUQ | + Opcode::VPORD | + Opcode::VPORQ | + Opcode::VPXORD | + Opcode::VPXORQ | + Opcode::VPSLLD | + Opcode::VPSLLQ | + Opcode::VPSLLW | + Opcode::VPSRAD | + Opcode::VPSRAQ | + Opcode::VALIGND | + Opcode::VALIGNQ | + Opcode::VBLENDMPD | + Opcode::VBLENDMPS | + Opcode::VPROLD | + Opcode::VPROLQ | + Opcode::VPROLVD | + Opcode::VPROLVQ | + Opcode::VPRORD | + Opcode::VPRORQ | + Opcode::VPRORVD | + Opcode::VPRORVQ | + Opcode::VPUNPCKHDQ | + Opcode::VPUNPCKHQDQ | + Opcode::VPUNPCKLDQ | + Opcode::VPUNPCKLQDQ | + Opcode::VUNPCKHPD | + Opcode::VUNPCKHPS | + Opcode::VUNPCKLPD | + Opcode::VUNPCKLPS | + Opcode::VBROADCASTF32X4 | + Opcode::VBROADCASTF64X4 | + Opcode::VBROADCASTI64X4 | + Opcode::VBROADCASTI32X4 | + Opcode::VINSERTF32X4 | + Opcode::VINSERTI32X4 | + Opcode::VSHUFF32X4 | + Opcode::VSHUFF64X2 | + Opcode::VSHUFI32X4 | + Opcode::VSHUFI64X2 | + Opcode::VCOMPRESSD | + Opcode::VCOMPRESSQ | + Opcode::VCOMPRESSPD | + Opcode::VCOMPRESSPS | + Opcode::VEXPANDPD | + Opcode::VEXPANDPS | + Opcode::VCVTPD2UDQ | + Opcode::VCVTPS2UDQ | + Opcode::VCVTUDQ2PD | + Opcode::VCVTUDQ2PS | + Opcode::VCVTTPD2UDQ | + Opcode::VCVTTPS2UDQ | + Opcode::VFIXUPIMMPD | + Opcode::VFIXUPIMMPS | + Opcode::VCVTPH2PS | + Opcode::VCVTPS2PH | + Opcode::VFMADD132PD | + Opcode::VFMADD132PS | + Opcode::VFMADD213PD | + Opcode::VFMADD213PS | + Opcode::VFMADD231PD | + Opcode::VFMADD231PS | + Opcode::VFMADDSUB132PD | + Opcode::VFMADDSUB132PS | + Opcode::VFMADDSUB213PD | + Opcode::VFMADDSUB213PS | + Opcode::VFMADDSUB231PD | + Opcode::VFMADDSUB231PS | + Opcode::VFMSUB132PD | + Opcode::VFMSUB132PS | + Opcode::VFMSUB213PD | + Opcode::VFMSUB213PS | + Opcode::VFMSUB231PD | + Opcode::VFMSUB231PS | + Opcode::VFMSUBADD132PD | + Opcode::VFMSUBADD132PS | + Opcode::VFMSUBADD213PD | + Opcode::VFMSUBADD213PS | + Opcode::VFMSUBADD231PD | + Opcode::VFMSUBADD231PS | + Opcode::VFNMADD132PD | + Opcode::VFNMADD132PS | + Opcode::VFNMADD213PD | + Opcode::VFNMADD213PS | + Opcode::VFNMADD231PD | + Opcode::VFNMADD231PS | + Opcode::VFNMSUB132PD | + Opcode::VFNMSUB132PS | + Opcode::VFNMSUB213PD | + Opcode::VFNMSUB213PS | + Opcode::VFNMSUB231PD | + Opcode::VFNMSUB231PS | + Opcode::VSCATTERDPS | + Opcode::VSCATTERDPD | + Opcode::VSCATTERQPS | + Opcode::VSCATTERQPD | + Opcode::VGATHERDPD | + Opcode::VGATHERDPS | + Opcode::VGATHERQPD | + Opcode::VGATHERQPS | + Opcode::VGETEXPPD | + Opcode::VGETEXPPS | + Opcode::VGETMANTPD | + Opcode::VGETMANTPS | + Opcode::VPBLENDMD | + Opcode::VPBLENDMQ | + Opcode::VPERMD | + Opcode::VPERMQ | + Opcode::VPERMI2D | + Opcode::VPERMI2Q | + Opcode::VPERMI2PD | + Opcode::VPERMI2PS | + Opcode::VPERMT2D | + Opcode::VPERMT2Q | + Opcode::VPERMT2PD | + Opcode::VPERMT2PS | + Opcode::VPEXPANDD | + Opcode::VPEXPANDQ | + Opcode::VPGATHERDD | + Opcode::VPGATHERDQ | + Opcode::VPGATHERQD | + Opcode::VPGATHERQQ | + Opcode::VPSCATTERDD | + Opcode::VPSCATTERDQ | + Opcode::VPSCATTERQD | + Opcode::VPSCATTERQQ | + Opcode::VPMOVDB | + Opcode::VPMOVSDB | + Opcode::VPMOVUSDB | + Opcode::VPMOVDW | + Opcode::VPMOVSDW | + Opcode::VPMOVUSDW | + Opcode::VPMOVQB | + Opcode::VPMOVSQB | + Opcode::VPMOVUSQB | + Opcode::VPMOVQD | + Opcode::VPMOVSQD | + Opcode::VPMOVUSQD | + Opcode::VPMOVQW | + Opcode::VPMOVSQW | + Opcode::VPMOVUSQW | + Opcode::VPSRAVQ | + Opcode::VPTERNLOGD | + Opcode::VPTERNLOGQ | + Opcode::VPTESTMD | + Opcode::VPTESTMQ | + Opcode::VPTESTNMD | + Opcode::VPTESTNMQ | + Opcode::VRCP14PD | + Opcode::VRCP14PS | + Opcode::VRNDSCALEPD | + Opcode::VRNDSCALEPS | + Opcode::VRSQRT14PD | + Opcode::VRSQRT14PS | + Opcode::VSCALEFPS | + Opcode::VSCALEFPD | + Opcode::VPABSQ | + Opcode::VADDSD | + Opcode::VADDSS | + Opcode::VCMPSD | + Opcode::VCMPSS | + Opcode::VCOMISD | + Opcode::VCOMISS | + Opcode::VCVTSD2SI | + Opcode::VCVTSD2SS | + Opcode::VCVTSI2SS | + Opcode::VCVTSI2SD | + Opcode::VCVTSS2SD | + Opcode::VCVTSS2SI | + Opcode::VCVTTSS2SI | + Opcode::VCVTTSD2SI | + Opcode::VDIVSD | + Opcode::VDIVSS | + Opcode::VEXTRACTPS | + Opcode::VINSERTPS | + Opcode::VGETMANTSD | + Opcode::VGETMANTSS | + Opcode::VMOVD | + Opcode::VMOVQ | + Opcode::VMOVHLPS | + Opcode::VMOVHPD | + Opcode::VMOVHPS | + Opcode::VMOVLHPS | + Opcode::VMOVLPD | + Opcode::VMOVLPS | + Opcode::VMOVSS | + Opcode::VMOVSD | + Opcode::VSQRTSS | + Opcode::VSQRTSD | + Opcode::VSUBSD | + Opcode::VSUBSS | + Opcode::VUCOMISD | + Opcode::VUCOMISS | + Opcode::VRCP14SD | + Opcode::VRCP14SS | + Opcode::VRNDSCALESD | + Opcode::VRNDSCALESS | + Opcode::VRSQRT14SD | + Opcode::VRSQRT14SS | + Opcode::VSCALEFSS | + Opcode::VSCALEFSD | + Opcode::VINSERTF64X4 | + Opcode::VCVTUSI2SD | + Opcode::VCVTUSI2SS | + Opcode::VCVTSD2USI | + Opcode::VCVTSS2USI | + Opcode::VCVTTSD2USI | + Opcode::VCVTTSS2USI | + Opcode::KANDW | + Opcode::KANDNW | + Opcode::KMOVW | + Opcode::KNOTW | + Opcode::KORW | + Opcode::KORTESTW | + Opcode::KSHIFTLW | + Opcode::KSHIFTRW | + Opcode::KUNPCKBW | + Opcode::KXNORW | + Opcode::KXORW => { + if !decoder.feature_avx512_f() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MONITORX | + Opcode::MWAITX => { + if !decoder.feature_emx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PCLMULQDQ => { + if !decoder.feature_pclmulqdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VFMADD132PD | + Opcode::VFMADD132PS | + Opcode::VFMADD132SD | + Opcode::VFMADD132SS | + Opcode::VFMADD213PD | + Opcode::VFMADD213PS | + Opcode::VFMADD213SD | + Opcode::VFMADD213SS | + Opcode::VFMADD231PD | + Opcode::VFMADD231PS | + Opcode::VFMADD231SD | + Opcode::VFMADD231SS | + Opcode::VFMADDSUB132PD | + Opcode::VFMADDSUB132PS | + Opcode::VFMADDSUB213PD | + Opcode::VFMADDSUB213PS | + Opcode::VFMADDSUB231PD | + Opcode::VFMADDSUB231PS | + Opcode::VFMSUB132PD | + Opcode::VFMSUB132PS | + Opcode::VFMSUB132SD | + Opcode::VFMSUB132SS | + Opcode::VFMSUB213PD | + Opcode::VFMSUB213PS | + Opcode::VFMSUB213SD | + Opcode::VFMSUB213SS | + Opcode::VFMSUB231PD | + Opcode::VFMSUB231PS | + Opcode::VFMSUB231SD | + Opcode::VFMSUB231SS | + Opcode::VFMSUBADD132PD | + Opcode::VFMSUBADD132PS | + Opcode::VFMSUBADD213PD | + Opcode::VFMSUBADD213PS | + Opcode::VFMSUBADD231PD | + Opcode::VFMSUBADD231PS | + Opcode::VFNMADD132PD | + Opcode::VFNMADD132PS | + Opcode::VFNMADD132SD | + Opcode::VFNMADD132SS | + Opcode::VFNMADD213PD | + Opcode::VFNMADD213PS | + Opcode::VFNMADD213SD | + Opcode::VFNMADD213SS | + Opcode::VFNMADD231PD | + Opcode::VFNMADD231PS | + Opcode::VFNMADD231SD | + Opcode::VFNMADD231SS | + Opcode::VFNMSUB132PD | + Opcode::VFNMSUB132PS | + Opcode::VFNMSUB132SD | + Opcode::VFNMSUB132SS | + Opcode::VFNMSUB213PD | + Opcode::VFNMSUB213PS | + Opcode::VFNMSUB213SD | + Opcode::VFNMSUB213SS | + Opcode::VFNMSUB231PD | + Opcode::VFNMSUB231PS | + Opcode::VFNMSUB231SD | + Opcode::VFNMSUB231SS => { + if !decoder.feature_fma3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XSAVEOPT => { + if !decoder.feature_xsaveopt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SYSCALL | + Opcode::SYSRET => { + if !decoder.feature_syscall() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::EXTRQ | + Opcode::INSERTQ | + Opcode::MOVNTSD | + Opcode::MOVNTSS => { + if !decoder.feature_sse4a() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPOPCNTD | + Opcode::VPOPCNTQ => { + if !decoder.feature_avx512_vpopcntdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVEPT | + Opcode::INVVPID | + Opcode::INVPCID => { + if !decoder.feature_invpcid() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BOUND => { + if !decoder.feature_80186_bound() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XSUSLDTRK | + Opcode::XRESLDTRK => { + if !decoder.feature_tsxldtrk() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CMOVA | + Opcode::CMOVB | + Opcode::CMOVG | + Opcode::CMOVGE | + Opcode::CMOVL | + Opcode::CMOVLE | + Opcode::CMOVNA | + Opcode::CMOVNB | + Opcode::CMOVNO | + Opcode::CMOVNP | + Opcode::CMOVNS | + Opcode::CMOVNZ | + Opcode::CMOVO | + Opcode::CMOVP | + Opcode::CMOVS | + Opcode::CMOVZ => { + if !decoder.feature_cmov() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::KANDQ | + Opcode::KANDD | + Opcode::KANDNQ | + Opcode::KANDND | + Opcode::KMOVD | + Opcode::KMOVQ | + Opcode::KNOTD | + Opcode::KNOTQ | + Opcode::KORD | + Opcode::KORQ | + Opcode::KADDD | + Opcode::KTESTD | + Opcode::KADDQ | + Opcode::KTESTQ | + Opcode::KORTESTD | + Opcode::KORTESTQ | + Opcode::KSHIFTLD | + Opcode::KSHIFTRD | + Opcode::KSHIFTLQ | + Opcode::KSHIFTRQ | + Opcode::KUNPCKWD | + Opcode::KUNPCKDQ | + Opcode::KXNORD | + Opcode::KXNORQ | + Opcode::KXORD | + Opcode::KXORQ | + Opcode::VPCMPEQB | + Opcode::VPCMPEQW | + Opcode::VPCMPGTB | + Opcode::VPCMPGTW | + Opcode::VPSUBUSB | + Opcode::VPSUBUSW | + Opcode::VPERMW | + Opcode::VPERMI2W | + Opcode::VPERMT2W | + Opcode::VPSLLVW | + Opcode::VPSRAVW | + Opcode::VPSRLVW | + Opcode::VPEXTRB | + Opcode::VPEXTRW | + Opcode::VPINSRB | + Opcode::VPINSRW | + Opcode::VPMULHUW | + Opcode::VPMULHRSW | + Opcode::VPADDSB | + Opcode::VPADDSW | + Opcode::VPADDUSB | + Opcode::VPADDUSW | + Opcode::VPALIGNR | + Opcode::VPMOVD2M | + Opcode::VPMOVQ2M | + Opcode::VPMOVWB | + Opcode::VDBPSADBW | + Opcode::VMOVDQU8 | + Opcode::VMOVDQU16 | + Opcode::VPBLENDMB | + Opcode::VPBLENDMW | + Opcode::VPCMPB | + Opcode::VPCMPUB | + Opcode::VPCMPW | + Opcode::VPCMPUW | + Opcode::VPERMW | + Opcode::VPERMI2B | + Opcode::VPERMI2W | + Opcode::VPMOVM2B | + Opcode::VPMOVM2W | + Opcode::VPMOVB2M | + Opcode::VPMOVW2M | + Opcode::VPMOVSWB | + Opcode::VPMOVUSWB | + Opcode::VPSLLVW | + Opcode::VPSRAVW | + Opcode::VPSRLVW | + Opcode::VPTESTNMB | + Opcode::VPTESTNMW | + Opcode::VPTESTMB | + Opcode::VPTESTMW => { + if !decoder.feature_avx512_bw() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PALIGNR | + Opcode::PSIGNW | + Opcode::PSIGND | + Opcode::PSIGNB | + Opcode::PSHUFB | + Opcode::PMULHRSW | + Opcode::PMADDUBSW | + Opcode::PABSD | + Opcode::PABSW | + Opcode::PABSB | + Opcode::PHSUBSW | + Opcode::PHSUBW | + Opcode::PHSUBD | + Opcode::PHADDD | + Opcode::PHADDSW | + Opcode::PHADDW => { + if !decoder.feature_ssse3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLFLUSHOPT => { + if !decoder.feature_clflushopt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PUSHA | + Opcode::POPA => { + if !decoder.feature_80186_pusha() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::GETSEC => { + if !decoder.feature_smx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::AAA | + Opcode::AAD | + Opcode::AAM | + Opcode::AAS | + Opcode::DAA | + Opcode::DAS => { + if !decoder.feature_8086_bcd() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::POPCNT | + Opcode::LZCNT => { + if !decoder.feature_abm() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PREFETCHW => { + if !decoder.feature_3dnowprefetch() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPID => { + if !decoder.feature_rdpid() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::LAHF | + Opcode::SAHF => { + if !decoder.feature_lahfsahf() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::JCXZ => { + if !decoder.feature_jcxz() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ENQCMD | + Opcode::ENQCMDS => { + if !decoder.feature_enqcmd() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PTWRITE => { + if !decoder.feature_ptwrite() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPERMT2B | + Opcode::VPERMB => { + if !decoder.feature_avx512_vbmi() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::F2XM1 | + Opcode::FABS | + Opcode::FADD | + Opcode::FADDP | + Opcode::FBLD | + Opcode::FBSTP | + Opcode::FCHS | + Opcode::FCMOVB | + Opcode::FCMOVBE | + Opcode::FCMOVE | + Opcode::FCMOVNB | + Opcode::FCMOVNBE | + Opcode::FCMOVNE | + Opcode::FCMOVNU | + Opcode::FCMOVU | + Opcode::FCOM | + Opcode::FCOMI | + Opcode::FCOMIP | + Opcode::FCOMP | + Opcode::FCOMPP | + Opcode::FCOS | + Opcode::FDECSTP | + Opcode::FDISI8087_NOP | + Opcode::FDIV | + Opcode::FDIVP | + Opcode::FDIVR | + Opcode::FDIVRP | + Opcode::FENI8087_NOP | + Opcode::FFREE | + Opcode::FFREEP | + Opcode::FIADD | + Opcode::FICOM | + Opcode::FICOMP | + Opcode::FIDIV | + Opcode::FIDIVR | + Opcode::FILD | + Opcode::FIMUL | + Opcode::FINCSTP | + Opcode::FIST | + Opcode::FISTP | + Opcode::FISTTP | + Opcode::FISUB | + Opcode::FISUBR | + Opcode::FLD | + Opcode::FLD1 | + Opcode::FLDCW | + Opcode::FLDENV | + Opcode::FLDL2E | + Opcode::FLDL2T | + Opcode::FLDLG2 | + Opcode::FLDLN2 | + Opcode::FLDPI | + Opcode::FLDZ | + Opcode::FMUL | + Opcode::FMULP | + Opcode::FNCLEX | + Opcode::FNINIT | + Opcode::FNOP | + Opcode::FNSAVE | + Opcode::FNSTCW | + Opcode::FNSTENV | + Opcode::FNSTOR | + Opcode::FNSTSW | + Opcode::FPATAN | + Opcode::FPREM | + Opcode::FPREM1 | + Opcode::FPTAN | + Opcode::FRNDINT | + Opcode::FRSTOR | + Opcode::FSCALE | + Opcode::FSETPM287_NOP | + Opcode::FSIN | + Opcode::FSINCOS | + Opcode::FSQRT | + Opcode::FST | + Opcode::FSTP | + Opcode::FSTPNCE | + Opcode::FSUB | + Opcode::FSUBP | + Opcode::FSUBR | + Opcode::FSUBRP | + Opcode::FTST | + Opcode::FUCOM | + Opcode::FUCOMI | + Opcode::FUCOMIP | + Opcode::FUCOMP | + Opcode::FUCOMPP | + Opcode::FXAM | + Opcode::FXCH | + Opcode::FXTRACT | + Opcode::FYL2X | + Opcode::FYL2XP1 => { + if !decoder.feature_x87() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPMC | + Opcode::PUNPCKLBW | + Opcode::PUNPCKLWD | + Opcode::PUNPCKLDQ | + Opcode::PACKSSWB | + Opcode::PCMPGTB | + Opcode::PCMPGTD | + Opcode::PCMPGTW | + Opcode::PACKUSWB | + Opcode::PUNPCKHBW | + Opcode::PUNPCKHWD | + Opcode::PUNPCKHDQ | + Opcode::PACKSSDW | + Opcode::MOVD | + Opcode::MOVQ | + Opcode::PCMPEQB | + Opcode::PCMPEQD | + Opcode::PCMPEQW | + Opcode::PSRLW | + Opcode::PSRLD | + Opcode::PSRLQ | + Opcode::PMULLW | + Opcode::PSUBUSB | + Opcode::PSUBUSW | + Opcode::PAND | + Opcode::PADDUSB | + Opcode::PADDUSW | + Opcode::PANDN | + Opcode::PSRAW | + Opcode::PSRAD | + Opcode::PMULHW | + Opcode::PSUBSB | + Opcode::PSUBSW | + Opcode::POR | + Opcode::PADDSB | + Opcode::PADDSW | + Opcode::PXOR | + Opcode::PSLLW | + Opcode::PSLLD | + Opcode::PSLLQ | + Opcode::PMADDWD | + Opcode::PSUBB | + Opcode::PSUBW | + Opcode::PSUBD | + Opcode::PADDB | + Opcode::PADDW | + Opcode::PADDD | + Opcode::EMMS => { + if !decoder.feature_mmx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPOPCNTD | + Opcode::VPOPCNTQ | + Opcode::VPOPCNTB | + Opcode::VPOPCNTW | + Opcode::VPSHUFBITQMB | + Opcode::VPMULTISHIFTQB => { + if !decoder.feature_avx512_bitalg() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::AESDEC128KL | + Opcode::AESDEC256KL | + Opcode::AESDECWIDE128KL | + Opcode::AESDECWIDE256KL | + Opcode::AESENC128KL | + Opcode::AESENC256KL | + Opcode::AESENCWIDE128KL | + Opcode::AESENCWIDE256KL | + Opcode::ENCODEKEY128 | + Opcode::ENCODEKEY256 | + Opcode::LOADIWKEY => { + if !decoder.feature_keylocker() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ENTER | + Opcode::LEAVE | + Opcode::INS | + Opcode::OUTS => { + if !decoder.feature_80186() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLWB => { + if !decoder.feature_clwb() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::V4FNMADDSS | + Opcode::V4FNMADDPS | + Opcode::V4FMADDSS | + Opcode::V4FMADDPS => { + if !decoder.feature_avx512_4fmaps() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::TDCALL | + Opcode::SEAMRET | + Opcode::SEAMOPS | + Opcode::SEAMCALL => { + if !decoder.feature_tdx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::POPCNT => { + if !decoder.feature_popcnt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PSMASH | + Opcode::PVALIDATE | + Opcode::RMPADJUST | + Opcode::RMPUPDATE => { + if !decoder.feature_snp() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VGF2P8AFFINEQB | + Opcode::VGF2P8AFFINEINVQB | + Opcode::VGF2P8MULB => { + if !decoder.feature_avx512_gfni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::FEMMS | + Opcode::PI2FW | + Opcode::PI2FD | + Opcode::PF2IW | + Opcode::PF2ID | + Opcode::PMULHRW | + Opcode::PFCMPGE | + Opcode::PFMIN | + Opcode::PFRCP | + Opcode::PFRSQRT | + Opcode::PFSUB | + Opcode::PFADD | + Opcode::PFCMPGT | + Opcode::PFMAX | + Opcode::PFRCPIT1 | + Opcode::PFRSQIT1 | + Opcode::PFSUBR | + Opcode::PFACC | + Opcode::PFCMPEQ | + Opcode::PFMUL | + Opcode::PFMULHRW | + Opcode::PFRCPIT2 | + Opcode::PFNACC | + Opcode::PFPNACC | + Opcode::PSWAPD | + Opcode::PAVGUSB => { + if !decoder.feature_3dnow() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPCOMPRESSB | + Opcode::VPCOMPRESSW | + Opcode::VPSHLDVW | + Opcode::VPSHLDW | + Opcode::VPEXPANDB | + Opcode::VPEXPANDW | + Opcode::VPSHRDVW | + Opcode::VPSHRDW | + Opcode::VPSHLDVQ | + Opcode::VPSHLDVD | + Opcode::VPSHLDQ | + Opcode::VPSHLDD | + Opcode::VPSHRDQ | + Opcode::VPSHRDD | + Opcode::VPSHRDVQ | + Opcode::VPSHRDVD => { + if !decoder.feature_avx512_vbmi2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CMC | + Opcode::CLC | + Opcode::STC | + Opcode::CLI | + Opcode::STI | + Opcode::CLD | + Opcode::STD | + Opcode::ADD | + Opcode::OR | + Opcode::ADC | + Opcode::SBB | + Opcode::AND | + Opcode::XOR | + Opcode::SUB | + Opcode::CMP | + Opcode::SAR | + Opcode::SAL | + Opcode::SHR | + Opcode::SHL | + Opcode::RCR | + Opcode::RCL | + Opcode::ROR | + Opcode::ROL | + Opcode::INC | + Opcode::DEC | + Opcode::HLT | + Opcode::CALL | + Opcode::CALLF | + Opcode::JMP | + Opcode::JMPF | + Opcode::PUSH | + Opcode::POP | + Opcode::LEA | + Opcode::NOP | + Opcode::XCHG | + Opcode::POPF | + Opcode::INT | + Opcode::INTO | + Opcode::IRET | + Opcode::IRETD | + Opcode::IRETQ | + Opcode::RETF | + Opcode::ENTER | + Opcode::LEAVE | + Opcode::MOV | + Opcode::RETURN | + Opcode::PUSHF | + Opcode::WAIT | + Opcode::CBW | + Opcode::CWD | + Opcode::CQO | + Opcode::LODS | + Opcode::STOS | + Opcode::CMPS | + Opcode::SCAS | + Opcode::MOVS | + Opcode::TEST | + Opcode::IN | + Opcode::OUT | + Opcode::IMUL | + Opcode::JO | + Opcode::JNO | + Opcode::JB | + Opcode::JNB | + Opcode::JZ | + Opcode::JNZ | + Opcode::JA | + Opcode::JNA | + Opcode::JS | + Opcode::JNS | + Opcode::JP | + Opcode::JNP | + Opcode::JL | + Opcode::JGE | + Opcode::JLE | + Opcode::JG | + Opcode::UD0 | + Opcode::UD1 | + Opcode::UD2 | + Opcode::DIV | + Opcode::IDIV | + Opcode::MUL | + Opcode::NEG | + Opcode::NOT | + Opcode::XLAT | + Opcode::LOOPNZ | + Opcode::LOOPZ | + Opcode::LOOP | + Opcode::SALC => { + if !decoder.feature_8086() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLGI | + Opcode::STGI | + Opcode::SKINIT | + Opcode::VMLOAD | + Opcode::VMMCALL | + Opcode::VMSAVE | + Opcode::VMRUN | + Opcode::INVLPGA => { + if !decoder.feature_svm() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ADDSUBPD | + Opcode::ADDSUBPS | + Opcode::HSUBPD | + Opcode::HADDPD | + Opcode::MOVSLDUP | + Opcode::MOVSHDUP | + Opcode::MOVDDUP | + Opcode::HADDPS | + Opcode::HSUBPS | + Opcode::LDDQU => { + if !decoder.feature_sse3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVUPD | + Opcode::PSRLDQ | + Opcode::PSLLDQ | + Opcode::MOVSD | + Opcode::MOVLPD | + Opcode::UNPCKLPD | + Opcode::UNPCKHPD | + Opcode::MOVHPD | + Opcode::MOVAPD | + Opcode::MOVMSKPD | + Opcode::CVTPI2PD | + Opcode::CVTSI2SD | + Opcode::MOVNTPD | + Opcode::MOVNTI | + Opcode::MOVNTDQ | + Opcode::CVTTPD2PI | + Opcode::CVTTSD2SI | + Opcode::CVTPD2PI | + Opcode::CVTSD2SI | + Opcode::UCOMISD | + Opcode::COMISD | + Opcode::SQRTPD | + Opcode::SQRTSD | + Opcode::ANDPD | + Opcode::ANDNPD | + Opcode::ORPD | + Opcode::XORPD | + Opcode::ADDPD | + Opcode::ADDSD | + Opcode::MULSD | + Opcode::MULPD | + Opcode::CVTPS2PD | + Opcode::CVTPD2PS | + Opcode::CVTSS2SD | + Opcode::CVTSD2SS | + Opcode::CVTPS2DQ | + Opcode::CVTDQ2PS | + Opcode::CVTTPS2DQ | + Opcode::SUBSD | + Opcode::SUBPD | + Opcode::MINPD | + Opcode::MINSD | + Opcode::DIVPD | + Opcode::DIVSD | + Opcode::MAXPD | + Opcode::MAXSD | + Opcode::PUNPCKLQDQ | + Opcode::PUNPCKHQDQ | + Opcode::MOVDQA | + Opcode::MOVDQU | + Opcode::PSHUFHW | + Opcode::PSHUFLW | + Opcode::PSHUFD | + Opcode::LFENCE | + Opcode::MFENCE | + Opcode::CLFLUSH | + Opcode::CMPPD | + Opcode::CMPPS | + Opcode::CMPSD | + Opcode::SHUFPD | + Opcode::PADDQ | + Opcode::MOVQ2DQ | + Opcode::MOVDQ2Q | + Opcode::CVTPD2DQ | + Opcode::CVTTPD2DQ | + Opcode::CVTDQ2PD | + Opcode::PMULUDQ | + Opcode::MASKMOVDQU | + Opcode::PSUBQ => { + if !decoder.feature_sse2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VEXP2PD | + Opcode::VEXP2PS | + Opcode::VEXP2SD | + Opcode::VEXP2SS | + Opcode::VRCP28PD | + Opcode::VRCP28PS | + Opcode::VRCP28SD | + Opcode::VRCP28SS | + Opcode::VRSQRT28PD | + Opcode::VRSQRT28PS | + Opcode::VRSQRT28SD | + Opcode::VRSQRT28SS => { + if !decoder.feature_avx512_er() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XRSTORS64 | + Opcode::XSAVEC64 | + Opcode::XSAVES64 => { + if !decoder.feature_xsave64() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ARPL => { + if !decoder.feature_80286_arpl() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ANDN | + Opcode::BEXTR | + Opcode::BLSI | + Opcode::BLSMSK | + Opcode::BLSR | + Opcode::TZCNT => { + if !decoder.feature_bmi1() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BZHI | + Opcode::MULX | + Opcode::PDEP | + Opcode::PEXT | + Opcode::RORX | + Opcode::SARX | + Opcode::SHRX | + Opcode::SHLX => { + if !decoder.feature_bmi2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVDIRI | + Opcode::MOVDIR64B => { + if !decoder.feature_movdir() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VAESDEC | + Opcode::VAESDECLAST | + Opcode::VAESENC | + Opcode::VAESENCLAST | + Opcode::VAESIMC | + Opcode::VAESKEYGENASSIST => { + if !decoder.feature_vaes() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XGETBV | + Opcode::XRSTOR | + Opcode::XRSTORS | + Opcode::XSAVE | + Opcode::XSAVEC | + Opcode::XSAVES | + Opcode::XSETBV => { + if !decoder.feature_xsave() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDRAND => { + if !decoder.feature_rdrand() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLZERO => { + if !decoder.feature_clzero() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDSEED => { + if !decoder.feature_rdseed() { + return Err(DecodeError::InvalidOpcode); + + } + } + } + Ok(()) + } +} + +pub(crate) mod protected_mode { + use crate::generated::protected_mode::Opcode; + use crate::protected_mode::{InstDecoder, Instruction, DecodeError}; + impl InstDecoder { + fn feature_sgx(&self) -> bool { + true + } + fn feature_smap(&self) -> bool { + true + } + fn feature_avx_unimplemented(&self) -> bool { + true + } + fn feature_uintr(&self) -> bool { + true + } + fn feature_pentium(&self) -> bool { + true + } + fn feature_aesni(&self) -> bool { + true + } + fn feature_invlpgb(&self) -> bool { + true + } + fn feature_fsgsbase(&self) -> bool { + true + } + fn feature_vmx(&self) -> bool { + true + } + fn feature_simd(&self) -> bool { + true + } + fn feature_avx(&self) -> bool { + true + } + fn feature_hreset(&self) -> bool { + true + } + fn feature_avx512_vp2intersect(&self) -> bool { + true + } + fn feature_rdpru(&self) -> bool { + true + } + fn feature_sse4_2(&self) -> bool { + true + } + fn feature_monitor(&self) -> bool { + true + } + fn feature_avx512_f_typo(&self) -> bool { + true + } + fn feature_sse4_1(&self) -> bool { + true + } + fn feature_avx512_dq(&self) -> bool { + true + } + fn feature_adx(&self) -> bool { + true + } + fn feature_fxsr(&self) -> bool { + true + } + fn feature_tsx(&self) -> bool { + true + } + fn feature_waitpkg(&self) -> bool { + true + } + fn feature_80286(&self) -> bool { + true + } + fn feature_sysenter(&self) -> bool { + true + } + fn feature_invpcid_unimplemented(&self) -> bool { + true + } + fn feature_avx512_4vnniw(&self) -> bool { + true + } + fn feature_avx512_vnni(&self) -> bool { + true + } + fn feature_avx512_pf(&self) -> bool { + true + } + fn feature_avx512_cd(&self) -> bool { + true + } + fn feature_avx512_bf16(&self) -> bool { + true + } + fn feature_avx512bw_unimplemented(&self) -> bool { + true + } + fn feature_mpk(&self) -> bool { + true + } + fn feature_avx512_f__vl_unimplemented(&self) -> bool { + true + } + fn feature_sha(&self) -> bool { + true + } + fn feature_cet(&self) -> bool { + true + } + fn feature_80486(&self) -> bool { + true + } + fn feature_sse(&self) -> bool { + true + } + fn feature_pentium_pro(&self) -> bool { + true + } + fn feature_itanium(&self) -> bool { + true + } + fn feature_mpx(&self) -> bool { + true + } + fn feature_extra_instructions(&self) -> bool { + true + } + fn feature_rdtscp(&self) -> bool { + true + } + fn feature_avx2(&self) -> bool { + true + } + fn feature_pconfig(&self) -> bool { + true + } + fn feature_avx512_ifma(&self) -> bool { + true + } + fn feature_gfni(&self) -> bool { + true + } + fn feature_vpclmulqdq(&self) -> bool { + true + } + fn feature_80386(&self) -> bool { + true + } + fn feature_movbe(&self) -> bool { + true + } + fn feature_avx512_f(&self) -> bool { + true + } + fn feature_emx(&self) -> bool { + true + } + fn feature_pclmulqdq(&self) -> bool { + true + } + fn feature_fma3(&self) -> bool { + true + } + fn feature_fma4(&self) -> bool { + true + } + fn feature_xsaveopt(&self) -> bool { + true + } + fn feature_syscall(&self) -> bool { + true + } + fn feature_sse4a(&self) -> bool { + true + } + fn feature_avx512_vpopcntdq(&self) -> bool { + true + } + fn feature_invpcid(&self) -> bool { + true + } + fn feature_80186_bound(&self) -> bool { + true + } + fn feature_tsxldtrk(&self) -> bool { + true + } + fn feature_cmov(&self) -> bool { + true + } + fn feature_avx512_bw(&self) -> bool { + true + } + fn feature_ssse3(&self) -> bool { + true + } + fn feature_clflushopt(&self) -> bool { + true + } + fn feature_80186_pusha(&self) -> bool { + true + } + fn feature_smx(&self) -> bool { + true + } + fn feature_8086_bcd(&self) -> bool { + true + } + fn feature_abm(&self) -> bool { + true + } + fn feature_3dnowprefetch(&self) -> bool { + true + } + fn feature_rdpid(&self) -> bool { + true + } + fn feature_lahfsahf(&self) -> bool { + true + } + fn feature_enqcmd(&self) -> bool { + true + } + fn feature_jecxz(&self) -> bool { + true + } + fn feature_new(&self) -> bool { + true + } + fn feature_ptwrite(&self) -> bool { + true + } + fn feature_avx512_vbmi(&self) -> bool { + true + } + fn feature_x87(&self) -> bool { + true + } + fn feature_mmx(&self) -> bool { + true + } + fn feature_avx512_bitalg(&self) -> bool { + true + } + fn feature_keylocker(&self) -> bool { + true + } + fn feature_80186(&self) -> bool { + true + } + fn feature_clwb(&self) -> bool { + true + } + fn feature_avx512_4fmaps(&self) -> bool { + true + } + fn feature_tdx(&self) -> bool { + true + } + fn feature_popcnt(&self) -> bool { + true + } + fn feature_snp(&self) -> bool { + true + } + fn feature_avx512_gfni(&self) -> bool { + true + } + fn feature_3dnow(&self) -> bool { + true + } + fn feature_avx512_vbmi2(&self) -> bool { + true + } + fn feature_8086(&self) -> bool { + true + } + fn feature_svm(&self) -> bool { + true + } + fn feature_sse3(&self) -> bool { + true + } + fn feature_sse2(&self) -> bool { + true + } + fn feature_avx512_er(&self) -> bool { + true + } + fn feature_xsave64(&self) -> bool { + true + } + fn feature_80286_arpl(&self) -> bool { + true + } + fn feature_bmi1(&self) -> bool { + true + } + fn feature_bmi2(&self) -> bool { + true + } + fn feature_movdir(&self) -> bool { + true + } + fn feature_vaes(&self) -> bool { + true + } + fn feature_xsave(&self) -> bool { + true + } + fn feature_rdrand(&self) -> bool { + true + } + fn feature_clzero(&self) -> bool { + true + } + fn feature_rdseed(&self) -> bool { + true + } + } + pub(crate) fn revise_instruction(decoder: &InstDecoder, inst: &mut Instruction) -> Result<(), DecodeError> { + if inst.prefixes.evex().is_some() { + if !decoder.avx512() { + return Err(DecodeError::InvalidOpcode); + } else { + return Ok(()); + } + } + + // for some instructions (tzcnt), not having an extension means the instruction is + // interpreted as another, rather than being simply rejected. + // we might still reject the alternate instruction later, if the extension adding *it* + // is also not supported. + if inst.opcode == Opcode::TZCNT { + if !decoder.bmi1() { + // tzcnt is only supported if bmi1 is enabled. without bmi1, this decodes as bsf. + inst.opcode = Opcode::BSF; + } + } + + match inst.opcode { + // we'll never be rejecting the instruction `Invalid` + Opcode::Invalid => {} + Opcode::ENCLS | + Opcode::ENCLU | + Opcode::ENCLV => { + if !decoder.feature_sgx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLAC | + Opcode::STAC => { + if !decoder.feature_smap() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMAXUB | + Opcode::VPMAXUB => { + if !decoder.feature_avx_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::UIRET | + Opcode::TESTUI | + Opcode::CLUI | + Opcode::STUI | + Opcode::SENDUIPI => { + if !decoder.feature_uintr() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CPUID | + Opcode::WRMSR | + Opcode::RDTSC | + Opcode::RDMSR | + Opcode::RSM | + Opcode::CMPXCHG8B => { + if !decoder.feature_pentium() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::AESKEYGENASSIST | + Opcode::AESIMC | + Opcode::AESENC | + Opcode::AESENCLAST | + Opcode::AESDEC | + Opcode::AESDECLAST => { + if !decoder.feature_aesni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVLPGB | + Opcode::TLBSYNC => { + if !decoder.feature_invlpgb() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDFSBASE | + Opcode::RDGSBASE | + Opcode::WRFSBASE | + Opcode::WRGSBASE => { + if !decoder.feature_fsgsbase() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VMPTRLD | + Opcode::VMPTRST | + Opcode::VMCLEAR | + Opcode::VMREAD | + Opcode::VMWRITE | + Opcode::VMCALL | + Opcode::VMLAUNCH | + Opcode::VMRESUME | + Opcode::VMXOFF | + Opcode::VMXON | + Opcode::INVEPT | + Opcode::INVVPID | + Opcode::VMFUNC => { + if !decoder.feature_vmx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VLDDQU | + Opcode::VPADDB | + Opcode::VPADDD | + Opcode::VPADDQ | + Opcode::VPADDW | + Opcode::VPABSB | + Opcode::VPABSW | + Opcode::VPABSD | + Opcode::VMAXSD | + Opcode::VMAXSS | + Opcode::VMINSD | + Opcode::VMINSS | + Opcode::VMULSD | + Opcode::VMULSS | + Opcode::VRCPSS | + Opcode::VPSUBUSB | + Opcode::VPSUBUSW | + Opcode::VXORPD | + Opcode::VXORPS | + Opcode::VPAVGB | + Opcode::VPAVGW | + Opcode::VANDNPD | + Opcode::VANDNPS | + Opcode::VPHADDD | + Opcode::VPHADDSW | + Opcode::VPHADDW | + Opcode::VANDPD | + Opcode::VANDPS | + Opcode::VPADDSB | + Opcode::VPADDSW | + Opcode::VPADDUSB | + Opcode::VPADDUSW | + Opcode::VPHSUBD | + Opcode::VPHSUBSW | + Opcode::VPHSUBW | + Opcode::VHADDPD | + Opcode::VHADDPS | + Opcode::VHSUBPD | + Opcode::VHSUBPS | + Opcode::VORPD | + Opcode::VORPS | + Opcode::VPBLENDVB | + Opcode::VPBLENDW | + Opcode::VADDSUBPD | + Opcode::VADDSUBPS | + Opcode::VRSQRTPS | + Opcode::VRSQRTSS | + Opcode::VPALIGNR | + Opcode::VPSUBSB | + Opcode::VPSUBSW | + Opcode::VPMULHUW | + Opcode::VPMULHW | + Opcode::VPMULLW | + Opcode::VPSHUFB | + Opcode::VPSHUFHW | + Opcode::VPSHUFLW | + Opcode::VPHMINPOSUW | + Opcode::VRCPPS | + Opcode::VMPSADBW | + Opcode::VPMADDUBSW | + Opcode::VPMADDWD | + Opcode::VMASKMOVDQU | + Opcode::VPMOVMSKB | + Opcode::VPSADBW | + Opcode::VPSLLDQ | + Opcode::VPSRLDQ | + Opcode::VDPPD | + Opcode::VDPPS | + Opcode::VLDMXCSR | + Opcode::VSTMXCSR | + Opcode::VMOVMSKPD | + Opcode::VMOVMSKPS | + Opcode::VPTEST | + Opcode::VTESTPD | + Opcode::VTESTPS | + Opcode::VPEXTRB | + Opcode::VPEXTRW | + Opcode::VPEXTRD | + Opcode::VPEXTRQ | + Opcode::VPACKSSDW | + Opcode::VPACKUSDW | + Opcode::VPACKSSWB | + Opcode::VPACKUSWB | + Opcode::VBLENDPD | + Opcode::VBLENDPS | + Opcode::VBLENDVPD | + Opcode::VBLENDVPS | + Opcode::VPMULHRSW | + Opcode::VPAND | + Opcode::VPANDN | + Opcode::VPOR | + Opcode::VPCMPEQB | + Opcode::VPCMPEQD | + Opcode::VPCMPEQQ | + Opcode::VPCMPEQW | + Opcode::VPCMPGTB | + Opcode::VPCMPGTD | + Opcode::VPCMPGTQ | + Opcode::VPCMPGTW | + Opcode::VPMAXSB | + Opcode::VPMAXSD | + Opcode::VPMAXSW | + Opcode::VPMAXUB | + Opcode::VPMAXUW | + Opcode::VPMINSB | + Opcode::VPMINSW | + Opcode::VPMINUB | + Opcode::VPMINUW | + Opcode::VPMAXUD | + Opcode::VPMINSD | + Opcode::VPSIGNB | + Opcode::VPSIGNW | + Opcode::VPSIGND | + Opcode::VPINSRB | + Opcode::VPINSRW | + Opcode::VPINSRD | + Opcode::VPINSRQ | + Opcode::VPMOVSXBD | + Opcode::VPMOVSXBQ | + Opcode::VPMOVSXBW | + Opcode::VPMOVSXDQ | + Opcode::VPMOVSXWD | + Opcode::VPMOVSXWQ | + Opcode::VPMOVZXBD | + Opcode::VPMOVZXBQ | + Opcode::VPMOVZXBW | + Opcode::VPMOVZXDQ | + Opcode::VPMOVZXWD | + Opcode::VPMOVZXWQ | + Opcode::VPMULDQ | + Opcode::VPMULLQ | + Opcode::VPMULLD | + Opcode::VPMULUDQ | + Opcode::VPSHUFD | + Opcode::VSHUFPD | + Opcode::VSHUFPS | + Opcode::VSQRTPD | + Opcode::VSQRTPS | + Opcode::VSQRTSS | + Opcode::VSQRTSD | + Opcode::VSUBPD | + Opcode::VSUBPS | + Opcode::VSUBSD | + Opcode::VSUBSS | + Opcode::VUCOMISD | + Opcode::VUCOMISS | + Opcode::VROUNDPD | + Opcode::VROUNDPS | + Opcode::VROUNDSD | + Opcode::VROUNDSS | + Opcode::VPSLLD | + Opcode::VPSLLQ | + Opcode::VPSLLW | + Opcode::VPSRAD | + Opcode::VPSRAW | + Opcode::VPSRLD | + Opcode::VPSRLQ | + Opcode::VPSRLW | + Opcode::VPSUBB | + Opcode::VPSUBW | + Opcode::VPSUBD | + Opcode::VPSUBQ | + Opcode::VPXOR | + Opcode::VPUNPCKHBW | + Opcode::VPUNPCKHWD | + Opcode::VPUNPCKHDQ | + Opcode::VPUNPCKHQDQ | + Opcode::VPUNPCKLBW | + Opcode::VPUNPCKLWD | + Opcode::VPUNPCKLDQ | + Opcode::VPUNPCKLQDQ | + Opcode::VUNPCKHPD | + Opcode::VUNPCKHPS | + Opcode::VUNPCKLPD | + Opcode::VUNPCKLPS | + Opcode::VPCMPESTRI | + Opcode::VPCMPESTRM | + Opcode::VPCMPISTRI | + Opcode::VPCMPISTRM | + Opcode::VBROADCASTSS | + Opcode::VBROADCASTSD | + Opcode::VBROADCASTF128 | + Opcode::VBROADCASTSD | + Opcode::VBROADCASTSS | + Opcode::VINSERTF128 | + Opcode::VEXTRACTF128 | + Opcode::VMASKMOVPD | + Opcode::VMASKMOVPS | + Opcode::VPERMILPD | + Opcode::VPERMILPS | + Opcode::VPERM2F128 | + Opcode::VZEROUPPER | + Opcode::VZEROALL => { + if !decoder.feature_avx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::HRESET => { + if !decoder.feature_hreset() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VP2INTERSECTD | + Opcode::VP2INTERSECTQ => { + if !decoder.feature_avx512_vp2intersect() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPRU => { + if !decoder.feature_rdpru() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CRC32 | + Opcode::PCMPESTRI | + Opcode::PCMPESTRM | + Opcode::PCMPISTRI | + Opcode::PCMPISTRM | + Opcode::PCMPGTQ => { + if !decoder.feature_sse4_2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MONITOR | + Opcode::MWAIT => { + if !decoder.feature_monitor() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPRORRD | + Opcode::VPRORRQ => { + if !decoder.feature_avx512_f_typo() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PHMINPOSUW | + Opcode::PMULDQ | + Opcode::PMULLD | + Opcode::DPPS | + Opcode::DPPD | + Opcode::PACKUSDW | + Opcode::PCMPEQQ | + Opcode::PTEST | + Opcode::MOVNTDQA | + Opcode::ROUNDSS | + Opcode::ROUNDSD | + Opcode::ROUNDPS | + Opcode::ROUNDPD | + Opcode::PMAXSB | + Opcode::PMAXSD | + Opcode::PMAXUW | + Opcode::PMAXUD | + Opcode::PMINSD | + Opcode::PMINSB | + Opcode::PMINUD | + Opcode::PMINUW | + Opcode::BLENDW | + Opcode::PBLENDW | + Opcode::BLENDVPS | + Opcode::BLENDVPD | + Opcode::PBLENDVB | + Opcode::BLENDPS | + Opcode::BLENDPD | + Opcode::MPSADBW | + Opcode::PMOVZXDQ | + Opcode::PMOVSXDQ | + Opcode::PMOVZXBD | + Opcode::PMOVSXBD | + Opcode::PMOVZXWQ | + Opcode::PMOVSXWQ | + Opcode::PMOVZXBQ | + Opcode::PMOVSXBQ | + Opcode::PMOVSXWD | + Opcode::PMOVZXWD | + Opcode::PEXTRQ | + Opcode::PEXTRD | + Opcode::PEXTRB | + Opcode::PMOVSXBW | + Opcode::PMOVZXBW | + Opcode::PINSRQ | + Opcode::PINSRD | + Opcode::PINSRB | + Opcode::EXTRACTPS | + Opcode::INSERTPS => { + if !decoder.feature_sse4_1() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::KANDB | + Opcode::KANDNB | + Opcode::KADDB | + Opcode::KTESTB | + Opcode::KADDW | + Opcode::KTESTW | + Opcode::KMOVB | + Opcode::KNOTB | + Opcode::KORB | + Opcode::KORTESTB | + Opcode::KSHIFTLB | + Opcode::KSHIFTRB | + Opcode::KXNORB | + Opcode::KXORB | + Opcode::VBROADCASTF32X2 | + Opcode::VBROADCASTF64X2 | + Opcode::VBROADCASTF32X8 | + Opcode::VBROADCASTI32X8 | + Opcode::VBROADCASTI64X2 | + Opcode::VBROADCASTI32X2 | + Opcode::VEXTRACTF32X8 | + Opcode::VEXTRACTI32X8 | + Opcode::VGETEXPSD | + Opcode::VGETEXPSS | + Opcode::VXORPD | + Opcode::VXORPS | + Opcode::VPEXTRD | + Opcode::VPEXTRQ | + Opcode::VPINSRD | + Opcode::VPINSRQ | + Opcode::VANDNPD | + Opcode::VANDNPS | + Opcode::VANDPD | + Opcode::VANDPS | + Opcode::VORPD | + Opcode::VORPS | + Opcode::VCVTTPD2QQ | + Opcode::VCVTPD2QQ | + Opcode::VCVTTPD2UQQ | + Opcode::VCVTPD2UQQ | + Opcode::VCVTTPS2QQ | + Opcode::VCVTPS2QQ | + Opcode::VCVTTPS2UQQ | + Opcode::VCVTPS2UQQ | + Opcode::VCVTUQQ2PD | + Opcode::VCVTUQQ2PS | + Opcode::VEXTRACTF64X2 | + Opcode::VEXTRACTI64X2 | + Opcode::VFPCLASSPD | + Opcode::VFPCLASSPS | + Opcode::VFPCLASSSD | + Opcode::VFPCLASSSS | + Opcode::VINSERTF64X2 | + Opcode::VINSERTF32X8 | + Opcode::VINSERTI32X8 | + Opcode::VINSERTI64X2 | + Opcode::VPMOVM2D | + Opcode::VPMOVM2Q | + Opcode::VPMOVB2D | + Opcode::VPMOVQ2M | + Opcode::VRANGEPD | + Opcode::VRANGEPS | + Opcode::VRANGESD | + Opcode::VRANGESS | + Opcode::VREDUCEPD | + Opcode::VREDUCEPS | + Opcode::VREDUCESD | + Opcode::VREDUCESS => { + if !decoder.feature_avx512_dq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ADCX | + Opcode::ADOX => { + if !decoder.feature_adx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::FXSAVE | + Opcode::FXRSTOR => { + if !decoder.feature_fxsr() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XABORT | + Opcode::XBEGIN | + Opcode::XEND | + Opcode::XTEST => { + if !decoder.feature_tsx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::TPAUSE | + Opcode::UMONITOR | + Opcode::UMWAIT => { + if !decoder.feature_waitpkg() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLTS | + Opcode::LAR | + Opcode::LGDT | + Opcode::LIDT | + Opcode::LLDT | + Opcode::LMSW | + Opcode::LSL | + Opcode::SGDT | + Opcode::SIDT | + Opcode::SLDT | + Opcode::SMSW | + Opcode::STR | + Opcode::LTR | + Opcode::VERR | + Opcode::VERW => { + if !decoder.feature_80286() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SYSENTER | + Opcode::SYSEXIT => { + if !decoder.feature_sysenter() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVVPID => { + if !decoder.feature_invpcid_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VP4DPWSSDS | + Opcode::VP4DPWSSD => { + if !decoder.feature_avx512_4vnniw() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPDPBUSDS | + Opcode::VPDPBUSD | + Opcode::VPDPWSSDS | + Opcode::VPDPWSSD => { + if !decoder.feature_avx512_vnni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VGATHERPF0DPD | + Opcode::VGATHERPF0DPS | + Opcode::VGATHERPF0QPD | + Opcode::VGATHERPF0QPS | + Opcode::VGATHERPF1DPD | + Opcode::VGATHERPF1DPS | + Opcode::VGATHERPF1QPD | + Opcode::VGATHERPF1QPS | + Opcode::VSCATTERPF0DPD | + Opcode::VSCATTERPF0DPS | + Opcode::VSCATTERPF0QPD | + Opcode::VSCATTERPF0QPS | + Opcode::VSCATTERPF1DPD | + Opcode::VSCATTERPF1DPS | + Opcode::VSCATTERPF1QPD | + Opcode::VSCATTERPF1QPS => { + if !decoder.feature_avx512_pf() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPBROADCASTMW2D | + Opcode::VPBROADCASTMB2Q | + Opcode::VPBROADCASTM | + Opcode::VPCONFLICTD | + Opcode::VPCONFLICTQ | + Opcode::VPLZCNTD | + Opcode::VPLZCNTQ => { + if !decoder.feature_avx512_cd() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VCVTNE2PS2BF16 | + Opcode::VCVTNEPS2BF16 | + Opcode::VDPBF16PS => { + if !decoder.feature_avx512_bf16() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMOVQ2M => { + if !decoder.feature_avx512bw_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPKRU | + Opcode::WRPKRU => { + if !decoder.feature_mpk() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VSCATTERDPS | + Opcode::VSCATTERDPD | + Opcode::VSCATTERQPS | + Opcode::VSCATTERQPD => { + if !decoder.feature_avx512_f__vl_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SHA1RNDS4 | + Opcode::SHA1NEXTE | + Opcode::SHA1MSG1 | + Opcode::SHA1MSG2 | + Opcode::SHA256RNDS2 | + Opcode::SHA256MSG1 | + Opcode::SHA256MSG2 => { + if !decoder.feature_sha() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::WRUSS | + Opcode::WRSS | + Opcode::INCSSP | + Opcode::SAVEPREVSSP | + Opcode::SETSSBSY | + Opcode::CLRSSBSY | + Opcode::RSTORSSP | + Opcode::ENDBR64 | + Opcode::ENDBR32 => { + if !decoder.feature_cet() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BSWAP | + Opcode::CMPXCHG | + Opcode::INVD | + Opcode::WBINVD | + Opcode::INVLPG | + Opcode::XADD => { + if !decoder.feature_80486() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVSS | + Opcode::ADDSS | + Opcode::SUBSS | + Opcode::MULSS | + Opcode::DIVSS | + Opcode::MINSS | + Opcode::MAXSS | + Opcode::SQRTSS | + Opcode::MOVUPS | + Opcode::MOVHLPS | + Opcode::MOVLPS | + Opcode::MOVHPS | + Opcode::MOVLHPS | + Opcode::UNPCKLPS | + Opcode::UNPCKHPS | + Opcode::PREFETCHNTA | + Opcode::PREFETCH0 | + Opcode::PREFETCH1 | + Opcode::PREFETCH2 | + Opcode::MOVAPS | + Opcode::CVTPI2PS | + Opcode::CVTSI2SS | + Opcode::MOVNTPS | + Opcode::CVTTSS2SI | + Opcode::CVTTPS2PI | + Opcode::CVTSS2SI | + Opcode::CVTPS2PI | + Opcode::UCOMISS | + Opcode::COMISS | + Opcode::SQRTPS | + Opcode::MOVMSKPS | + Opcode::RSQRTSS | + Opcode::RSQRTPS | + Opcode::RCPPS | + Opcode::RCPSS | + Opcode::ANDPS | + Opcode::ANDNPS | + Opcode::XORPS | + Opcode::ORPS | + Opcode::ADDPS | + Opcode::MULPS | + Opcode::SUBPS | + Opcode::MINPS | + Opcode::DIVPS | + Opcode::MAXPS | + Opcode::PSHUFW | + Opcode::LDMXCSR | + Opcode::STMXCSR | + Opcode::SFENCE | + Opcode::CMPPS | + Opcode::CMPSS | + Opcode::PINSRW | + Opcode::PEXTRW | + Opcode::SHUFPS | + Opcode::PMOVMSKB | + Opcode::PMINUB | + Opcode::PMAXUB | + Opcode::PAVGB | + Opcode::PAVGW | + Opcode::PMULHUW | + Opcode::MOVNTQ | + Opcode::PMINSW | + Opcode::PMAXSW | + Opcode::PSADBW | + Opcode::MASKMOVQ | + Opcode::LDMXCSR | + Opcode::STMXCSR => { + if !decoder.feature_sse() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::UD2 => { + if !decoder.feature_pentium_pro() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::JMPE => { + if !decoder.feature_itanium() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BNDMK | + Opcode::BNDCL | + Opcode::BNDCU | + Opcode::BNDCN | + Opcode::BNDMOV | + Opcode::BNDLDX | + Opcode::BNDSTX => { + if !decoder.feature_mpx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SWAPGS | + Opcode::SLHD | + Opcode::CDQE | + Opcode::MOVSXD | + Opcode::CMPXCHG16B => { + if !decoder.feature_extra_instructions() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDTSCP => { + if !decoder.feature_rdtscp() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VBROADCASTI128 | + Opcode::VPBROADCASTB | + Opcode::VPBROADCASTW | + Opcode::VPBROADCASTD | + Opcode::VPBROADCASTQ | + Opcode::VINSERTI128 | + Opcode::VEXTRACTI128 | + Opcode::VPMASKMOVD | + Opcode::VPMASKMOVQ | + Opcode::VPERMPS | + Opcode::VPERMD | + Opcode::VPERMPD | + Opcode::VPERMQ | + Opcode::VPERM2I128 | + Opcode::VPBLENDD | + Opcode::VPSLLVD | + Opcode::VPSLLVQ | + Opcode::VPSRLVD | + Opcode::VPSRLVQ | + Opcode::VPSRAVD => { + if !decoder.feature_avx2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PCONFIG => { + if !decoder.feature_pconfig() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMADD52HUQ | + Opcode::VPMADD52LUQ => { + if !decoder.feature_avx512_ifma() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::GF2P8AFFINEQB | + Opcode::GF2P8AFFINEINVQB | + Opcode::GF2P8MULB => { + if !decoder.feature_gfni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPCLMULQDQ => { + if !decoder.feature_vpclmulqdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BSF | + Opcode::BSR | + Opcode::BT | + Opcode::BTS | + Opcode::BTC | + Opcode::BTR | + Opcode::CDQ | + Opcode::CWDE | + Opcode::LDS | + Opcode::LES | + Opcode::LFS | + Opcode::LGS | + Opcode::LSS | + Opcode::MOVZX | + Opcode::MOVSX | + Opcode::SETO | + Opcode::SETNO | + Opcode::SETB | + Opcode::SETAE | + Opcode::SETZ | + Opcode::SETNZ | + Opcode::SETBE | + Opcode::SETA | + Opcode::SETS | + Opcode::SETNS | + Opcode::SETP | + Opcode::SETNP | + Opcode::SETL | + Opcode::SETGE | + Opcode::SETLE | + Opcode::SETG | + Opcode::SHLD | + Opcode::SHRD => { + if !decoder.feature_80386() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVBE => { + if !decoder.feature_movbe() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VCVTQQ2PD | + Opcode::VCVTQQ2PS | + Opcode::VCVTUSI2USD | + Opcode::VCVTUSI2USS | + Opcode::VEXTRACTF32X4 | + Opcode::VEXTRACTF64X4 | + Opcode::VEXTRACTI32X4 | + Opcode::VEXTRACTI64X4 | + Opcode::VFIXUPIMMSD | + Opcode::VFIXUPIMMSS | + Opcode::VINSERTI64X4 | + Opcode::VMOVDQA32 | + Opcode::VMOVDQA64 | + Opcode::VMOVDQU32 | + Opcode::VMOVDQU64 | + Opcode::VPCOMPRESSQ | + Opcode::VPCOMPRESSD | + Opcode::VSCALEDPD | + Opcode::VSCALEDPS | + Opcode::VSCALEDSD | + Opcode::VSCALEDSS | + Opcode::VSCATTERDD | + Opcode::VSCATTERDQ | + Opcode::VSCATTERQD | + Opcode::VSCATTERQQ | + Opcode::VADDPD | + Opcode::VADDPS | + Opcode::VCMPPD | + Opcode::VCMPPS | + Opcode::VCVTDQ2PD | + Opcode::VCVTDQ2PS | + Opcode::VCVTPD2DQ | + Opcode::VCVTPD2PS | + Opcode::VCVTPS2DQ | + Opcode::VCVTPS2PD | + Opcode::VCVTTPD2DQ | + Opcode::VCVTTPS2DQ | + Opcode::VDIVPD | + Opcode::VDIVPS | + Opcode::VMAXPD | + Opcode::VMAXPS | + Opcode::VMINPD | + Opcode::VMINPS | + Opcode::VMOVAPD | + Opcode::VMOVAPS | + Opcode::VMOVDDUP | + Opcode::VMOVDQA | + Opcode::VMOVDQU | + Opcode::VMOVNTDQA | + Opcode::VMOVNTDQ | + Opcode::VMOVNTPD | + Opcode::VMOVNTPS | + Opcode::VMOVSHDUP | + Opcode::VMOVSLDUP | + Opcode::VMOVUPD | + Opcode::VMOVUPS | + Opcode::VMULPD | + Opcode::VMULPS | + Opcode::VPANDD | + Opcode::VPANDQ | + Opcode::VPANDND | + Opcode::VPANDNQ | + Opcode::VPCMPEQD | + Opcode::VPCMPEQQ | + Opcode::VPCMPGTD | + Opcode::VPCMPGTQ | + Opcode::VPMAXSD | + Opcode::VPMAXSQ | + Opcode::VPMAXUD | + Opcode::VPMAXUQ | + Opcode::VPMINSD | + Opcode::VPMINSQ | + Opcode::VPMINUD | + Opcode::VPMINUQ | + Opcode::VPCMPD | + Opcode::VPCMPQ | + Opcode::VPCMPUD | + Opcode::VPCMPUQ | + Opcode::VPORD | + Opcode::VPORQ | + Opcode::VPXORD | + Opcode::VPXORQ | + Opcode::VPSLLD | + Opcode::VPSLLQ | + Opcode::VPSLLW | + Opcode::VPSRAD | + Opcode::VPSRAQ | + Opcode::VALIGND | + Opcode::VALIGNQ | + Opcode::VBLENDMPD | + Opcode::VBLENDMPS | + Opcode::VPROLD | + Opcode::VPROLQ | + Opcode::VPROLVD | + Opcode::VPROLVQ | + Opcode::VPRORD | + Opcode::VPRORQ | + Opcode::VPRORVD | + Opcode::VPRORVQ | + Opcode::VPUNPCKHDQ | + Opcode::VPUNPCKHQDQ | + Opcode::VPUNPCKLDQ | + Opcode::VPUNPCKLQDQ | + Opcode::VUNPCKHPD | + Opcode::VUNPCKHPS | + Opcode::VUNPCKLPD | + Opcode::VUNPCKLPS | + Opcode::VBROADCASTF32X4 | + Opcode::VBROADCASTF64X4 | + Opcode::VBROADCASTI64X4 | + Opcode::VBROADCASTI32X4 | + Opcode::VINSERTF32X4 | + Opcode::VINSERTI32X4 | + Opcode::VSHUFF32X4 | + Opcode::VSHUFF64X2 | + Opcode::VSHUFI32X4 | + Opcode::VSHUFI64X2 | + Opcode::VCOMPRESSD | + Opcode::VCOMPRESSQ | + Opcode::VCOMPRESSPD | + Opcode::VCOMPRESSPS | + Opcode::VEXPANDPD | + Opcode::VEXPANDPS | + Opcode::VCVTPD2UDQ | + Opcode::VCVTPS2UDQ | + Opcode::VCVTUDQ2PD | + Opcode::VCVTUDQ2PS | + Opcode::VCVTTPD2UDQ | + Opcode::VCVTTPS2UDQ | + Opcode::VFIXUPIMMPD | + Opcode::VFIXUPIMMPS | + Opcode::VCVTPH2PS | + Opcode::VCVTPS2PH | + Opcode::VFMADD132PD | + Opcode::VFMADD132PS | + Opcode::VFMADD213PD | + Opcode::VFMADD213PS | + Opcode::VFMADD231PD | + Opcode::VFMADD231PS | + Opcode::VFMADDSUB132PD | + Opcode::VFMADDSUB132PS | + Opcode::VFMADDSUB213PD | + Opcode::VFMADDSUB213PS | + Opcode::VFMADDSUB231PD | + Opcode::VFMADDSUB231PS | + Opcode::VFMSUB132PD | + Opcode::VFMSUB132PS | + Opcode::VFMSUB213PD | + Opcode::VFMSUB213PS | + Opcode::VFMSUB231PD | + Opcode::VFMSUB231PS | + Opcode::VFMSUBADD132PD | + Opcode::VFMSUBADD132PS | + Opcode::VFMSUBADD213PD | + Opcode::VFMSUBADD213PS | + Opcode::VFMSUBADD231PD | + Opcode::VFMSUBADD231PS | + Opcode::VFNMADD132PD | + Opcode::VFNMADD132PS | + Opcode::VFNMADD213PD | + Opcode::VFNMADD213PS | + Opcode::VFNMADD231PD | + Opcode::VFNMADD231PS | + Opcode::VFNMSUB132PD | + Opcode::VFNMSUB132PS | + Opcode::VFNMSUB213PD | + Opcode::VFNMSUB213PS | + Opcode::VFNMSUB231PD | + Opcode::VFNMSUB231PS | + Opcode::VSCATTERDPS | + Opcode::VSCATTERDPD | + Opcode::VSCATTERQPS | + Opcode::VSCATTERQPD | + Opcode::VGATHERDPD | + Opcode::VGATHERDPS | + Opcode::VGATHERQPD | + Opcode::VGATHERQPS | + Opcode::VGETEXPPD | + Opcode::VGETEXPPS | + Opcode::VGETMANTPD | + Opcode::VGETMANTPS | + Opcode::VPBLENDMD | + Opcode::VPBLENDMQ | + Opcode::VPERMD | + Opcode::VPERMQ | + Opcode::VPERMI2D | + Opcode::VPERMI2Q | + Opcode::VPERMI2PD | + Opcode::VPERMI2PS | + Opcode::VPERMT2D | + Opcode::VPERMT2Q | + Opcode::VPERMT2PD | + Opcode::VPERMT2PS | + Opcode::VPEXPANDD | + Opcode::VPEXPANDQ | + Opcode::VPGATHERDD | + Opcode::VPGATHERDQ | + Opcode::VPGATHERQD | + Opcode::VPGATHERQQ | + Opcode::VPSCATTERDD | + Opcode::VPSCATTERDQ | + Opcode::VPSCATTERQD | + Opcode::VPSCATTERQQ | + Opcode::VPMOVDB | + Opcode::VPMOVSDB | + Opcode::VPMOVUSDB | + Opcode::VPMOVDW | + Opcode::VPMOVSDW | + Opcode::VPMOVUSDW | + Opcode::VPMOVQB | + Opcode::VPMOVSQB | + Opcode::VPMOVUSQB | + Opcode::VPMOVQD | + Opcode::VPMOVSQD | + Opcode::VPMOVUSQD | + Opcode::VPMOVQW | + Opcode::VPMOVSQW | + Opcode::VPMOVUSQW | + Opcode::VPSRAVQ | + Opcode::VPTERNLOGD | + Opcode::VPTERNLOGQ | + Opcode::VPTESTMD | + Opcode::VPTESTMQ | + Opcode::VPTESTNMD | + Opcode::VPTESTNMQ | + Opcode::VRCP14PD | + Opcode::VRCP14PS | + Opcode::VRNDSCALEPD | + Opcode::VRNDSCALEPS | + Opcode::VRSQRT14PD | + Opcode::VRSQRT14PS | + Opcode::VSCALEFPS | + Opcode::VSCALEFPD | + Opcode::VPABSQ | + Opcode::VADDSD | + Opcode::VADDSS | + Opcode::VCMPSD | + Opcode::VCMPSS | + Opcode::VCOMISD | + Opcode::VCOMISS | + Opcode::VCVTSD2SI | + Opcode::VCVTSD2SS | + Opcode::VCVTSI2SS | + Opcode::VCVTSI2SD | + Opcode::VCVTSS2SD | + Opcode::VCVTSS2SI | + Opcode::VCVTTSS2SI | + Opcode::VCVTTSD2SI | + Opcode::VDIVSD | + Opcode::VDIVSS | + Opcode::VEXTRACTPS | + Opcode::VINSERTPS | + Opcode::VGETMANTSD | + Opcode::VGETMANTSS | + Opcode::VMOVD | + Opcode::VMOVQ | + Opcode::VMOVHLPS | + Opcode::VMOVHPD | + Opcode::VMOVHPS | + Opcode::VMOVLHPS | + Opcode::VMOVLPD | + Opcode::VMOVLPS | + Opcode::VMOVSS | + Opcode::VMOVSD | + Opcode::VSQRTSS | + Opcode::VSQRTSD | + Opcode::VSUBSD | + Opcode::VSUBSS | + Opcode::VUCOMISD | + Opcode::VUCOMISS | + Opcode::VRCP14SD | + Opcode::VRCP14SS | + Opcode::VRNDSCALESD | + Opcode::VRNDSCALESS | + Opcode::VRSQRT14SD | + Opcode::VRSQRT14SS | + Opcode::VSCALEFSS | + Opcode::VSCALEFSD | + Opcode::VINSERTF64X4 | + Opcode::VCVTUSI2SD | + Opcode::VCVTUSI2SS | + Opcode::VCVTSD2USI | + Opcode::VCVTSS2USI | + Opcode::VCVTTSD2USI | + Opcode::VCVTTSS2USI | + Opcode::KANDW | + Opcode::KANDNW | + Opcode::KMOVW | + Opcode::KNOTW | + Opcode::KORW | + Opcode::KORTESTW | + Opcode::KSHIFTLW | + Opcode::KSHIFTRW | + Opcode::KUNPCKBW | + Opcode::KXNORW | + Opcode::KXORW => { + if !decoder.feature_avx512_f() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MONITORX | + Opcode::MWAITX => { + if !decoder.feature_emx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PCLMULQDQ => { + if !decoder.feature_pclmulqdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VFMADD132PD | + Opcode::VFMADD132PS | + Opcode::VFMADD132SD | + Opcode::VFMADD132SS | + Opcode::VFMADD213PD | + Opcode::VFMADD213PS | + Opcode::VFMADD213SD | + Opcode::VFMADD213SS | + Opcode::VFMADD231PD | + Opcode::VFMADD231PS | + Opcode::VFMADD231SD | + Opcode::VFMADD231SS | + Opcode::VFMADDSUB132PD | + Opcode::VFMADDSUB132PS | + Opcode::VFMADDSUB213PD | + Opcode::VFMADDSUB213PS | + Opcode::VFMADDSUB231PD | + Opcode::VFMADDSUB231PS | + Opcode::VFMSUB132PD | + Opcode::VFMSUB132PS | + Opcode::VFMSUB132SD | + Opcode::VFMSUB132SS | + Opcode::VFMSUB213PD | + Opcode::VFMSUB213PS | + Opcode::VFMSUB213SD | + Opcode::VFMSUB213SS | + Opcode::VFMSUB231PD | + Opcode::VFMSUB231PS | + Opcode::VFMSUB231SD | + Opcode::VFMSUB231SS | + Opcode::VFMSUBADD132PD | + Opcode::VFMSUBADD132PS | + Opcode::VFMSUBADD213PD | + Opcode::VFMSUBADD213PS | + Opcode::VFMSUBADD231PD | + Opcode::VFMSUBADD231PS | + Opcode::VFNMADD132PD | + Opcode::VFNMADD132PS | + Opcode::VFNMADD132SD | + Opcode::VFNMADD132SS | + Opcode::VFNMADD213PD | + Opcode::VFNMADD213PS | + Opcode::VFNMADD213SD | + Opcode::VFNMADD213SS | + Opcode::VFNMADD231PD | + Opcode::VFNMADD231PS | + Opcode::VFNMADD231SD | + Opcode::VFNMADD231SS | + Opcode::VFNMSUB132PD | + Opcode::VFNMSUB132PS | + Opcode::VFNMSUB132SD | + Opcode::VFNMSUB132SS | + Opcode::VFNMSUB213PD | + Opcode::VFNMSUB213PS | + Opcode::VFNMSUB213SD | + Opcode::VFNMSUB213SS | + Opcode::VFNMSUB231PD | + Opcode::VFNMSUB231PS | + Opcode::VFNMSUB231SD | + Opcode::VFNMSUB231SS => { + if !decoder.feature_fma3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XSAVEOPT => { + if !decoder.feature_xsaveopt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SYSCALL | + Opcode::SYSRET => { + if !decoder.feature_syscall() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::EXTRQ | + Opcode::INSERTQ | + Opcode::MOVNTSD | + Opcode::MOVNTSS => { + if !decoder.feature_sse4a() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPOPCNTD | + Opcode::VPOPCNTQ => { + if !decoder.feature_avx512_vpopcntdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVEPT | + Opcode::INVVPID | + Opcode::INVPCID => { + if !decoder.feature_invpcid() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BOUND => { + if !decoder.feature_80186_bound() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XSUSLDTRK | + Opcode::XRESLDTRK => { + if !decoder.feature_tsxldtrk() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CMOVA | + Opcode::CMOVB | + Opcode::CMOVG | + Opcode::CMOVGE | + Opcode::CMOVL | + Opcode::CMOVLE | + Opcode::CMOVNA | + Opcode::CMOVNB | + Opcode::CMOVNO | + Opcode::CMOVNP | + Opcode::CMOVNS | + Opcode::CMOVNZ | + Opcode::CMOVO | + Opcode::CMOVP | + Opcode::CMOVS | + Opcode::CMOVZ => { + if !decoder.feature_cmov() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::KANDQ | + Opcode::KANDD | + Opcode::KANDNQ | + Opcode::KANDND | + Opcode::KMOVD | + Opcode::KMOVQ | + Opcode::KNOTD | + Opcode::KNOTQ | + Opcode::KORD | + Opcode::KORQ | + Opcode::KADDD | + Opcode::KTESTD | + Opcode::KADDQ | + Opcode::KTESTQ | + Opcode::KORTESTD | + Opcode::KORTESTQ | + Opcode::KSHIFTLD | + Opcode::KSHIFTRD | + Opcode::KSHIFTLQ | + Opcode::KSHIFTRQ | + Opcode::KUNPCKWD | + Opcode::KUNPCKDQ | + Opcode::KXNORD | + Opcode::KXNORQ | + Opcode::KXORD | + Opcode::KXORQ | + Opcode::VPCMPEQB | + Opcode::VPCMPEQW | + Opcode::VPCMPGTB | + Opcode::VPCMPGTW | + Opcode::VPSUBUSB | + Opcode::VPSUBUSW | + Opcode::VPERMW | + Opcode::VPERMI2W | + Opcode::VPERMT2W | + Opcode::VPSLLVW | + Opcode::VPSRAVW | + Opcode::VPSRLVW | + Opcode::VPEXTRB | + Opcode::VPEXTRW | + Opcode::VPINSRB | + Opcode::VPINSRW | + Opcode::VPMULHUW | + Opcode::VPMULHRSW | + Opcode::VPADDSB | + Opcode::VPADDSW | + Opcode::VPADDUSB | + Opcode::VPADDUSW | + Opcode::VPALIGNR | + Opcode::VPMOVD2M | + Opcode::VPMOVQ2M | + Opcode::VPMOVWB | + Opcode::VDBPSADBW | + Opcode::VMOVDQU8 | + Opcode::VMOVDQU16 | + Opcode::VPBLENDMB | + Opcode::VPBLENDMW | + Opcode::VPCMPB | + Opcode::VPCMPUB | + Opcode::VPCMPW | + Opcode::VPCMPUW | + Opcode::VPERMW | + Opcode::VPERMI2B | + Opcode::VPERMI2W | + Opcode::VPMOVM2B | + Opcode::VPMOVM2W | + Opcode::VPMOVB2M | + Opcode::VPMOVW2M | + Opcode::VPMOVSWB | + Opcode::VPMOVUSWB | + Opcode::VPSLLVW | + Opcode::VPSRAVW | + Opcode::VPSRLVW | + Opcode::VPTESTNMB | + Opcode::VPTESTNMW | + Opcode::VPTESTMB | + Opcode::VPTESTMW => { + if !decoder.feature_avx512_bw() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PALIGNR | + Opcode::PSIGNW | + Opcode::PSIGND | + Opcode::PSIGNB | + Opcode::PSHUFB | + Opcode::PMULHRSW | + Opcode::PMADDUBSW | + Opcode::PABSD | + Opcode::PABSW | + Opcode::PABSB | + Opcode::PHSUBSW | + Opcode::PHSUBW | + Opcode::PHSUBD | + Opcode::PHADDD | + Opcode::PHADDSW | + Opcode::PHADDW => { + if !decoder.feature_ssse3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLFLUSHOPT => { + if !decoder.feature_clflushopt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PUSHA | + Opcode::POPA => { + if !decoder.feature_80186_pusha() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::GETSEC => { + if !decoder.feature_smx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::AAA | + Opcode::AAD | + Opcode::AAM | + Opcode::AAS | + Opcode::DAA | + Opcode::DAS => { + if !decoder.feature_8086_bcd() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::POPCNT | + Opcode::LZCNT => { + if !decoder.feature_abm() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PREFETCHW => { + if !decoder.feature_3dnowprefetch() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPID => { + if !decoder.feature_rdpid() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::LAHF | + Opcode::SAHF => { + if !decoder.feature_lahfsahf() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ENQCMD | + Opcode::ENQCMDS => { + if !decoder.feature_enqcmd() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::JECXZ => { + if !decoder.feature_jecxz() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PTWRITE => { + if !decoder.feature_ptwrite() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPERMT2B | + Opcode::VPERMB => { + if !decoder.feature_avx512_vbmi() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::F2XM1 | + Opcode::FABS | + Opcode::FADD | + Opcode::FADDP | + Opcode::FBLD | + Opcode::FBSTP | + Opcode::FCHS | + Opcode::FCMOVB | + Opcode::FCMOVBE | + Opcode::FCMOVE | + Opcode::FCMOVNB | + Opcode::FCMOVNBE | + Opcode::FCMOVNE | + Opcode::FCMOVNU | + Opcode::FCMOVU | + Opcode::FCOM | + Opcode::FCOMI | + Opcode::FCOMIP | + Opcode::FCOMP | + Opcode::FCOMPP | + Opcode::FCOS | + Opcode::FDECSTP | + Opcode::FDISI8087_NOP | + Opcode::FDIV | + Opcode::FDIVP | + Opcode::FDIVR | + Opcode::FDIVRP | + Opcode::FENI8087_NOP | + Opcode::FFREE | + Opcode::FFREEP | + Opcode::FIADD | + Opcode::FICOM | + Opcode::FICOMP | + Opcode::FIDIV | + Opcode::FIDIVR | + Opcode::FILD | + Opcode::FIMUL | + Opcode::FINCSTP | + Opcode::FIST | + Opcode::FISTP | + Opcode::FISTTP | + Opcode::FISUB | + Opcode::FISUBR | + Opcode::FLD | + Opcode::FLD1 | + Opcode::FLDCW | + Opcode::FLDENV | + Opcode::FLDL2E | + Opcode::FLDL2T | + Opcode::FLDLG2 | + Opcode::FLDLN2 | + Opcode::FLDPI | + Opcode::FLDZ | + Opcode::FMUL | + Opcode::FMULP | + Opcode::FNCLEX | + Opcode::FNINIT | + Opcode::FNOP | + Opcode::FNSAVE | + Opcode::FNSTCW | + Opcode::FNSTENV | + Opcode::FNSTOR | + Opcode::FNSTSW | + Opcode::FPATAN | + Opcode::FPREM | + Opcode::FPREM1 | + Opcode::FPTAN | + Opcode::FRNDINT | + Opcode::FRSTOR | + Opcode::FSCALE | + Opcode::FSETPM287_NOP | + Opcode::FSIN | + Opcode::FSINCOS | + Opcode::FSQRT | + Opcode::FST | + Opcode::FSTP | + Opcode::FSTPNCE | + Opcode::FSUB | + Opcode::FSUBP | + Opcode::FSUBR | + Opcode::FSUBRP | + Opcode::FTST | + Opcode::FUCOM | + Opcode::FUCOMI | + Opcode::FUCOMIP | + Opcode::FUCOMP | + Opcode::FUCOMPP | + Opcode::FXAM | + Opcode::FXCH | + Opcode::FXTRACT | + Opcode::FYL2X | + Opcode::FYL2XP1 => { + if !decoder.feature_x87() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPMC | + Opcode::PUNPCKLBW | + Opcode::PUNPCKLWD | + Opcode::PUNPCKLDQ | + Opcode::PACKSSWB | + Opcode::PCMPGTB | + Opcode::PCMPGTD | + Opcode::PCMPGTW | + Opcode::PACKUSWB | + Opcode::PUNPCKHBW | + Opcode::PUNPCKHWD | + Opcode::PUNPCKHDQ | + Opcode::PACKSSDW | + Opcode::MOVD | + Opcode::MOVQ | + Opcode::PCMPEQB | + Opcode::PCMPEQD | + Opcode::PCMPEQW | + Opcode::PSRLW | + Opcode::PSRLD | + Opcode::PSRLQ | + Opcode::PMULLW | + Opcode::PSUBUSB | + Opcode::PSUBUSW | + Opcode::PAND | + Opcode::PADDUSB | + Opcode::PADDUSW | + Opcode::PANDN | + Opcode::PSRAW | + Opcode::PSRAD | + Opcode::PMULHW | + Opcode::PSUBSB | + Opcode::PSUBSW | + Opcode::POR | + Opcode::PADDSB | + Opcode::PADDSW | + Opcode::PXOR | + Opcode::PSLLW | + Opcode::PSLLD | + Opcode::PSLLQ | + Opcode::PMADDWD | + Opcode::PSUBB | + Opcode::PSUBW | + Opcode::PSUBD | + Opcode::PADDB | + Opcode::PADDW | + Opcode::PADDD | + Opcode::EMMS => { + if !decoder.feature_mmx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPOPCNTD | + Opcode::VPOPCNTQ | + Opcode::VPOPCNTB | + Opcode::VPOPCNTW | + Opcode::VPSHUFBITQMB | + Opcode::VPMULTISHIFTQB => { + if !decoder.feature_avx512_bitalg() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::AESDEC128KL | + Opcode::AESDEC256KL | + Opcode::AESDECWIDE128KL | + Opcode::AESDECWIDE256KL | + Opcode::AESENC128KL | + Opcode::AESENC256KL | + Opcode::AESENCWIDE128KL | + Opcode::AESENCWIDE256KL | + Opcode::ENCODEKEY128 | + Opcode::ENCODEKEY256 | + Opcode::LOADIWKEY => { + if !decoder.feature_keylocker() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ENTER | + Opcode::LEAVE | + Opcode::INS | + Opcode::OUTS => { + if !decoder.feature_80186() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLWB => { + if !decoder.feature_clwb() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::V4FNMADDSS | + Opcode::V4FNMADDPS | + Opcode::V4FMADDSS | + Opcode::V4FMADDPS => { + if !decoder.feature_avx512_4fmaps() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::TDCALL | + Opcode::SEAMRET | + Opcode::SEAMOPS | + Opcode::SEAMCALL => { + if !decoder.feature_tdx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::POPCNT => { + if !decoder.feature_popcnt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PSMASH | + Opcode::PVALIDATE | + Opcode::RMPADJUST | + Opcode::RMPUPDATE => { + if !decoder.feature_snp() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VGF2P8AFFINEQB | + Opcode::VGF2P8AFFINEINVQB | + Opcode::VGF2P8MULB => { + if !decoder.feature_avx512_gfni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::FEMMS | + Opcode::PI2FW | + Opcode::PI2FD | + Opcode::PF2IW | + Opcode::PF2ID | + Opcode::PMULHRW | + Opcode::PFCMPGE | + Opcode::PFMIN | + Opcode::PFRCP | + Opcode::PFRSQRT | + Opcode::PFSUB | + Opcode::PFADD | + Opcode::PFCMPGT | + Opcode::PFMAX | + Opcode::PFRCPIT1 | + Opcode::PFRSQIT1 | + Opcode::PFSUBR | + Opcode::PFACC | + Opcode::PFCMPEQ | + Opcode::PFMUL | + Opcode::PFMULHRW | + Opcode::PFRCPIT2 | + Opcode::PFNACC | + Opcode::PFPNACC | + Opcode::PSWAPD | + Opcode::PAVGUSB => { + if !decoder.feature_3dnow() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPCOMPRESSB | + Opcode::VPCOMPRESSW | + Opcode::VPSHLDVW | + Opcode::VPSHLDW | + Opcode::VPEXPANDB | + Opcode::VPEXPANDW | + Opcode::VPSHRDVW | + Opcode::VPSHRDW | + Opcode::VPSHLDVQ | + Opcode::VPSHLDVD | + Opcode::VPSHLDQ | + Opcode::VPSHLDD | + Opcode::VPSHRDQ | + Opcode::VPSHRDD | + Opcode::VPSHRDVQ | + Opcode::VPSHRDVD => { + if !decoder.feature_avx512_vbmi2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CMC | + Opcode::CLC | + Opcode::STC | + Opcode::CLI | + Opcode::STI | + Opcode::CLD | + Opcode::STD | + Opcode::ADD | + Opcode::OR | + Opcode::ADC | + Opcode::SBB | + Opcode::AND | + Opcode::XOR | + Opcode::SUB | + Opcode::CMP | + Opcode::SAR | + Opcode::SAL | + Opcode::SHR | + Opcode::SHL | + Opcode::RCR | + Opcode::RCL | + Opcode::ROR | + Opcode::ROL | + Opcode::INC | + Opcode::DEC | + Opcode::HLT | + Opcode::CALL | + Opcode::CALLF | + Opcode::JMP | + Opcode::JMPF | + Opcode::PUSH | + Opcode::POP | + Opcode::LEA | + Opcode::NOP | + Opcode::XCHG | + Opcode::POPF | + Opcode::INT | + Opcode::INTO | + Opcode::IRET | + Opcode::IRETD | + Opcode::IRETQ | + Opcode::RETF | + Opcode::ENTER | + Opcode::LEAVE | + Opcode::MOV | + Opcode::RETURN | + Opcode::PUSHF | + Opcode::WAIT | + Opcode::CBW | + Opcode::CWD | + Opcode::CQO | + Opcode::LODS | + Opcode::STOS | + Opcode::CMPS | + Opcode::SCAS | + Opcode::MOVS | + Opcode::TEST | + Opcode::IN | + Opcode::OUT | + Opcode::IMUL | + Opcode::JO | + Opcode::JNO | + Opcode::JB | + Opcode::JNB | + Opcode::JZ | + Opcode::JNZ | + Opcode::JA | + Opcode::JNA | + Opcode::JS | + Opcode::JNS | + Opcode::JP | + Opcode::JNP | + Opcode::JL | + Opcode::JGE | + Opcode::JLE | + Opcode::JG | + Opcode::UD0 | + Opcode::UD1 | + Opcode::UD2 | + Opcode::DIV | + Opcode::IDIV | + Opcode::MUL | + Opcode::NEG | + Opcode::NOT | + Opcode::XLAT | + Opcode::LOOPNZ | + Opcode::LOOPZ | + Opcode::LOOP | + Opcode::SALC => { + if !decoder.feature_8086() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLGI | + Opcode::STGI | + Opcode::SKINIT | + Opcode::VMLOAD | + Opcode::VMMCALL | + Opcode::VMSAVE | + Opcode::VMRUN | + Opcode::INVLPGA => { + if !decoder.feature_svm() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ADDSUBPD | + Opcode::ADDSUBPS | + Opcode::HSUBPD | + Opcode::HADDPD | + Opcode::MOVSLDUP | + Opcode::MOVSHDUP | + Opcode::MOVDDUP | + Opcode::HADDPS | + Opcode::HSUBPS | + Opcode::LDDQU => { + if !decoder.feature_sse3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVUPD | + Opcode::PSRLDQ | + Opcode::PSLLDQ | + Opcode::MOVSD | + Opcode::MOVLPD | + Opcode::UNPCKLPD | + Opcode::UNPCKHPD | + Opcode::MOVHPD | + Opcode::MOVAPD | + Opcode::MOVMSKPD | + Opcode::CVTPI2PD | + Opcode::CVTSI2SD | + Opcode::MOVNTPD | + Opcode::MOVNTI | + Opcode::MOVNTDQ | + Opcode::CVTTPD2PI | + Opcode::CVTTSD2SI | + Opcode::CVTPD2PI | + Opcode::CVTSD2SI | + Opcode::UCOMISD | + Opcode::COMISD | + Opcode::SQRTPD | + Opcode::SQRTSD | + Opcode::ANDPD | + Opcode::ANDNPD | + Opcode::ORPD | + Opcode::XORPD | + Opcode::ADDPD | + Opcode::ADDSD | + Opcode::MULSD | + Opcode::MULPD | + Opcode::CVTPS2PD | + Opcode::CVTPD2PS | + Opcode::CVTSS2SD | + Opcode::CVTSD2SS | + Opcode::CVTPS2DQ | + Opcode::CVTDQ2PS | + Opcode::CVTTPS2DQ | + Opcode::SUBSD | + Opcode::SUBPD | + Opcode::MINPD | + Opcode::MINSD | + Opcode::DIVPD | + Opcode::DIVSD | + Opcode::MAXPD | + Opcode::MAXSD | + Opcode::PUNPCKLQDQ | + Opcode::PUNPCKHQDQ | + Opcode::MOVDQA | + Opcode::MOVDQU | + Opcode::PSHUFHW | + Opcode::PSHUFLW | + Opcode::PSHUFD | + Opcode::LFENCE | + Opcode::MFENCE | + Opcode::CLFLUSH | + Opcode::CMPPD | + Opcode::CMPPS | + Opcode::CMPSD | + Opcode::SHUFPD | + Opcode::PADDQ | + Opcode::MOVQ2DQ | + Opcode::MOVDQ2Q | + Opcode::CVTPD2DQ | + Opcode::CVTTPD2DQ | + Opcode::CVTDQ2PD | + Opcode::PMULUDQ | + Opcode::MASKMOVDQU | + Opcode::PSUBQ => { + if !decoder.feature_sse2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VEXP2PD | + Opcode::VEXP2PS | + Opcode::VEXP2SD | + Opcode::VEXP2SS | + Opcode::VRCP28PD | + Opcode::VRCP28PS | + Opcode::VRCP28SD | + Opcode::VRCP28SS | + Opcode::VRSQRT28PD | + Opcode::VRSQRT28PS | + Opcode::VRSQRT28SD | + Opcode::VRSQRT28SS => { + if !decoder.feature_avx512_er() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XRSTORS64 | + Opcode::XSAVEC64 | + Opcode::XSAVES64 => { + if !decoder.feature_xsave64() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ARPL => { + if !decoder.feature_80286_arpl() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ANDN | + Opcode::BEXTR | + Opcode::BLSI | + Opcode::BLSMSK | + Opcode::BLSR | + Opcode::TZCNT => { + if !decoder.feature_bmi1() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BZHI | + Opcode::MULX | + Opcode::PDEP | + Opcode::PEXT | + Opcode::RORX | + Opcode::SARX | + Opcode::SHRX | + Opcode::SHLX => { + if !decoder.feature_bmi2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVDIRI | + Opcode::MOVDIR64B => { + if !decoder.feature_movdir() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VAESDEC | + Opcode::VAESDECLAST | + Opcode::VAESENC | + Opcode::VAESENCLAST | + Opcode::VAESIMC | + Opcode::VAESKEYGENASSIST => { + if !decoder.feature_vaes() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XGETBV | + Opcode::XRSTOR | + Opcode::XRSTORS | + Opcode::XSAVE | + Opcode::XSAVEC | + Opcode::XSAVES | + Opcode::XSETBV => { + if !decoder.feature_xsave() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDRAND => { + if !decoder.feature_rdrand() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLZERO => { + if !decoder.feature_clzero() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDSEED => { + if !decoder.feature_rdseed() { + return Err(DecodeError::InvalidOpcode); + + } + } + } + Ok(()) + } +} + +pub(crate) mod long_mode { + use crate::generated::long_mode::Opcode; + use crate::long_mode::{InstDecoder, Instruction, DecodeError}; + impl InstDecoder { + fn feature_sgx(&self) -> bool { + true + } + fn feature_smap(&self) -> bool { + true + } + fn feature_avx_unimplemented(&self) -> bool { + true + } + fn feature_uintr(&self) -> bool { + true + } + fn feature_pentium(&self) -> bool { + true + } + fn feature_aesni(&self) -> bool { + true + } + fn feature_invlpgb(&self) -> bool { + true + } + fn feature_sse(&self) -> bool { + true + } + fn feature_xsaveopt(&self) -> bool { + true + } + fn feature_simd(&self) -> bool { + true + } + fn feature_avx(&self) -> bool { + true + } + fn feature_hreset(&self) -> bool { + true + } + fn feature_avx512_vp2intersect(&self) -> bool { + true + } + fn feature_itanium(&self) -> bool { + true + } + fn feature_rdpru(&self) -> bool { + true + } + fn feature_sse4_2(&self) -> bool { + true + } + fn feature_monitor(&self) -> bool { + true + } + fn feature_avx512_f_typo(&self) -> bool { + true + } + fn feature_sse4_1(&self) -> bool { + true + } + fn feature_avx512_dq(&self) -> bool { + true + } + fn feature_adx(&self) -> bool { + true + } + fn feature_fxsr(&self) -> bool { + true + } + fn feature_typo_instructions(&self) -> bool { + true + } + fn feature_tsx(&self) -> bool { + true + } + fn feature_cmpxchg16b(&self) -> bool { + true + } + fn feature_waitpkg(&self) -> bool { + true + } + fn feature_80286(&self) -> bool { + true + } + fn feature_sysenter(&self) -> bool { + true + } + fn feature_invpcid_unimplemented(&self) -> bool { + true + } + fn feature_avx512_4vnniw(&self) -> bool { + true + } + fn feature_avx512_vnni(&self) -> bool { + true + } + fn feature_avx512_pf(&self) -> bool { + true + } + fn feature_avx512_cd(&self) -> bool { + true + } + fn feature_prefetchw(&self) -> bool { + true + } + fn feature_avx512_bf16(&self) -> bool { + true + } + fn feature_avx512bw_unimplemented(&self) -> bool { + true + } + fn feature_pclmulqdq(&self) -> bool { + true + } + fn feature_avx512_f__vl_unimplemented(&self) -> bool { + true + } + fn feature_cet(&self) -> bool { + true + } + fn feature_rdseed(&self) -> bool { + true + } + fn feature_tbm(&self) -> bool { + true + } + fn feature_80486(&self) -> bool { + true + } + fn feature_fsgsbase(&self) -> bool { + true + } + fn feature_pentium_pro(&self) -> bool { + true + } + fn feature_f16c(&self) -> bool { + true + } + fn feature_mpx(&self) -> bool { + true + } + fn feature_rdtscp(&self) -> bool { + true + } + fn feature_avx2(&self) -> bool { + true + } + fn feature_pconfig(&self) -> bool { + true + } + fn feature_avx512_ifma(&self) -> bool { + true + } + fn feature_avx512_er(&self) -> bool { + true + } + fn feature_vpclmulqdq(&self) -> bool { + true + } + fn feature_80386(&self) -> bool { + true + } + fn feature_movbe(&self) -> bool { + true + } + fn feature_avx512_f(&self) -> bool { + true + } + fn feature_emx(&self) -> bool { + true + } + fn feature_fma3(&self) -> bool { + true + } + fn feature_fma4(&self) -> bool { + true + } + fn feature_vmx(&self) -> bool { + true + } + fn feature_tsxldtrk(&self) -> bool { + true + } + fn feature_syscall(&self) -> bool { + true + } + fn feature_sse4a(&self) -> bool { + true + } + fn feature_avx512_vpopcntdq(&self) -> bool { + true + } + fn feature_invpcid(&self) -> bool { + true + } + fn feature_xsave(&self) -> bool { + true + } + fn feature_cmov(&self) -> bool { + true + } + fn feature_avx512_bw(&self) -> bool { + true + } + fn feature_ssse3(&self) -> bool { + true + } + fn feature_clflushopt(&self) -> bool { + true + } + fn feature_xop(&self) -> bool { + true + } + fn feature_sha(&self) -> bool { + true + } + fn feature_64bit(&self) -> bool { + true + } + fn feature_x86_64_baseline(&self) -> bool { + true + } + fn feature_abm(&self) -> bool { + true + } + fn feature_3dnowprefetch(&self) -> bool { + true + } + fn feature_rdpid(&self) -> bool { + true + } + fn feature_lahfsahf(&self) -> bool { + true + } + fn feature_enqcmd(&self) -> bool { + true + } + fn feature_new(&self) -> bool { + true + } + fn feature_ptwrite(&self) -> bool { + true + } + fn feature_avx512_vbmi(&self) -> bool { + true + } + fn feature_x87(&self) -> bool { + true + } + fn feature_mmx(&self) -> bool { + true + } + fn feature_avx512_bitalg(&self) -> bool { + true + } + fn feature_keylocker(&self) -> bool { + true + } + fn feature_80186(&self) -> bool { + true + } + fn feature_clwb(&self) -> bool { + true + } + fn feature_mpk(&self) -> bool { + true + } + fn feature_avx512_4fmaps(&self) -> bool { + true + } + fn feature_tdx(&self) -> bool { + true + } + fn feature_popcnt(&self) -> bool { + true + } + fn feature_snp(&self) -> bool { + true + } + fn feature_avx512_gfni(&self) -> bool { + true + } + fn feature_3dnow(&self) -> bool { + true + } + fn feature_avx512_vbmi2(&self) -> bool { + true + } + fn feature_8086(&self) -> bool { + true + } + fn feature_svm(&self) -> bool { + true + } + fn feature_sse3(&self) -> bool { + true + } + fn feature_sse2(&self) -> bool { + true + } + fn feature_gfni(&self) -> bool { + true + } + fn feature_xsave64(&self) -> bool { + true + } + fn feature_smx(&self) -> bool { + true + } + fn feature_bmi1(&self) -> bool { + true + } + fn feature_bmi2(&self) -> bool { + true + } + fn feature_movdir(&self) -> bool { + true + } + fn feature_vaes(&self) -> bool { + true + } + fn feature_rdrand(&self) -> bool { + true + } + fn feature_clzero(&self) -> bool { + true + } + } + pub(crate) fn revise_instruction(decoder: &InstDecoder, inst: &mut Instruction) -> Result<(), DecodeError> { + if inst.prefixes.evex().is_some() { + if !decoder.avx512() { + return Err(DecodeError::InvalidOpcode); + } else { + return Ok(()); + } + } + + // for some instructions (tzcnt), not having an extension means the instruction is + // interpreted as another, rather than being simply rejected. + // we might still reject the alternate instruction later, if the extension adding *it* + // is also not supported. + if inst.opcode == Opcode::TZCNT { + if !decoder.bmi1() { + // tzcnt is only supported if bmi1 is enabled. without bmi1, this decodes as bsf. + inst.opcode = Opcode::BSF; + } + } + + match inst.opcode { + // we'll never be rejecting the instruction `Invalid` + Opcode::Invalid => {} + Opcode::ENCLS | + Opcode::ENCLU | + Opcode::ENCLV => { + if !decoder.feature_sgx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLAC | + Opcode::STAC => { + if !decoder.feature_smap() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMAXUB | + Opcode::VPMAXUB => { + if !decoder.feature_avx_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::UIRET | + Opcode::TESTUI | + Opcode::CLUI | + Opcode::STUI | + Opcode::SENDUIPI => { + if !decoder.feature_uintr() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CPUID | + Opcode::WRMSR | + Opcode::RDTSC | + Opcode::RDMSR | + Opcode::RSM | + Opcode::CMPXCHG8B => { + if !decoder.feature_pentium() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::AESKEYGENASSIST | + Opcode::AESIMC | + Opcode::AESENC | + Opcode::AESENCLAST | + Opcode::AESDEC | + Opcode::AESDECLAST => { + if !decoder.feature_aesni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVLPGB | + Opcode::TLBSYNC => { + if !decoder.feature_invlpgb() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVSS | + Opcode::ADDSS | + Opcode::SUBSS | + Opcode::MULSS | + Opcode::DIVSS | + Opcode::MINSS | + Opcode::MAXSS | + Opcode::SQRTSS | + Opcode::MOVUPS | + Opcode::MOVHLPS | + Opcode::MOVLPS | + Opcode::MOVHPS | + Opcode::MOVLHPS | + Opcode::UNPCKLPS | + Opcode::UNPCKHPS | + Opcode::PREFETCHNTA | + Opcode::PREFETCH0 | + Opcode::PREFETCH1 | + Opcode::PREFETCH2 | + Opcode::MOVAPS | + Opcode::CVTPI2PS | + Opcode::CVTSI2SS | + Opcode::MOVNTPS | + Opcode::CVTTSS2SI | + Opcode::CVTTPS2PI | + Opcode::CVTSS2SI | + Opcode::CVTPS2PI | + Opcode::UCOMISS | + Opcode::COMISS | + Opcode::SQRTPS | + Opcode::MOVMSKPS | + Opcode::RSQRTSS | + Opcode::RSQRTPS | + Opcode::RCPPS | + Opcode::RCPSS | + Opcode::ANDPS | + Opcode::ANDNPS | + Opcode::XORPS | + Opcode::ORPS | + Opcode::ADDPS | + Opcode::MULPS | + Opcode::SUBPS | + Opcode::MINPS | + Opcode::DIVPS | + Opcode::MAXPS | + Opcode::PSHUFW | + Opcode::LDMXCSR | + Opcode::STMXCSR | + Opcode::SFENCE | + Opcode::CMPPS | + Opcode::CMPSS | + Opcode::PINSRW | + Opcode::PEXTRW | + Opcode::SHUFPS | + Opcode::PMOVMSKB | + Opcode::PMINUB | + Opcode::PMAXUB | + Opcode::PAVGB | + Opcode::PAVGW | + Opcode::PMULHUW | + Opcode::MOVNTQ | + Opcode::PMINSW | + Opcode::PMAXSW | + Opcode::PSADBW | + Opcode::MASKMOVQ | + Opcode::LDMXCSR | + Opcode::STMXCSR => { + if !decoder.feature_sse() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XSAVEOPT => { + if !decoder.feature_xsaveopt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VLDDQU | + Opcode::VPADDB | + Opcode::VPADDD | + Opcode::VPADDQ | + Opcode::VPADDW | + Opcode::VPABSB | + Opcode::VPABSW | + Opcode::VPABSD | + Opcode::VMAXSD | + Opcode::VMAXSS | + Opcode::VMINSD | + Opcode::VMINSS | + Opcode::VMULSD | + Opcode::VMULSS | + Opcode::VRCPSS | + Opcode::VPSUBUSB | + Opcode::VPSUBUSW | + Opcode::VXORPD | + Opcode::VXORPS | + Opcode::VPAVGB | + Opcode::VPAVGW | + Opcode::VANDNPD | + Opcode::VANDNPS | + Opcode::VPHADDD | + Opcode::VPHADDSW | + Opcode::VPHADDW | + Opcode::VANDPD | + Opcode::VANDPS | + Opcode::VPADDSB | + Opcode::VPADDSW | + Opcode::VPADDUSB | + Opcode::VPADDUSW | + Opcode::VPHSUBD | + Opcode::VPHSUBSW | + Opcode::VPHSUBW | + Opcode::VHADDPD | + Opcode::VHADDPS | + Opcode::VHSUBPD | + Opcode::VHSUBPS | + Opcode::VORPD | + Opcode::VORPS | + Opcode::VPBLENDVB | + Opcode::VPBLENDW | + Opcode::VADDSUBPD | + Opcode::VADDSUBPS | + Opcode::VRSQRTPS | + Opcode::VRSQRTSS | + Opcode::VPALIGNR | + Opcode::VPSUBSB | + Opcode::VPSUBSW | + Opcode::VPMULHUW | + Opcode::VPMULHW | + Opcode::VPMULLW | + Opcode::VPSHUFB | + Opcode::VPSHUFHW | + Opcode::VPSHUFLW | + Opcode::VPHMINPOSUW | + Opcode::VRCPPS | + Opcode::VMPSADBW | + Opcode::VPMADDUBSW | + Opcode::VPMADDWD | + Opcode::VMASKMOVDQU | + Opcode::VPMOVMSKB | + Opcode::VPSADBW | + Opcode::VPSLLDQ | + Opcode::VPSRLDQ | + Opcode::VDPPD | + Opcode::VDPPS | + Opcode::VLDMXCSR | + Opcode::VSTMXCSR | + Opcode::VMOVMSKPD | + Opcode::VMOVMSKPS | + Opcode::VPTEST | + Opcode::VTESTPD | + Opcode::VTESTPS | + Opcode::VPEXTRB | + Opcode::VPEXTRW | + Opcode::VPEXTRD | + Opcode::VPEXTRQ | + Opcode::VPACKSSDW | + Opcode::VPACKUSDW | + Opcode::VPACKSSWB | + Opcode::VPACKUSWB | + Opcode::VBLENDPD | + Opcode::VBLENDPS | + Opcode::VBLENDVPD | + Opcode::VBLENDVPS | + Opcode::VPMULHRSW | + Opcode::VPAND | + Opcode::VPANDN | + Opcode::VPOR | + Opcode::VPCMPEQB | + Opcode::VPCMPEQD | + Opcode::VPCMPEQQ | + Opcode::VPCMPEQW | + Opcode::VPCMPGTB | + Opcode::VPCMPGTD | + Opcode::VPCMPGTQ | + Opcode::VPCMPGTW | + Opcode::VPMAXSB | + Opcode::VPMAXSD | + Opcode::VPMAXSW | + Opcode::VPMAXUB | + Opcode::VPMAXUW | + Opcode::VPMINSB | + Opcode::VPMINSW | + Opcode::VPMINUB | + Opcode::VPMINUW | + Opcode::VPMAXUD | + Opcode::VPMINSD | + Opcode::VPSIGNB | + Opcode::VPSIGNW | + Opcode::VPSIGND | + Opcode::VPINSRB | + Opcode::VPINSRW | + Opcode::VPINSRD | + Opcode::VPINSRQ | + Opcode::VPMOVSXBD | + Opcode::VPMOVSXBQ | + Opcode::VPMOVSXBW | + Opcode::VPMOVSXDQ | + Opcode::VPMOVSXWD | + Opcode::VPMOVSXWQ | + Opcode::VPMOVZXBD | + Opcode::VPMOVZXBQ | + Opcode::VPMOVZXBW | + Opcode::VPMOVZXDQ | + Opcode::VPMOVZXWD | + Opcode::VPMOVZXWQ | + Opcode::VPMULDQ | + Opcode::VPMULLQ | + Opcode::VPMULLD | + Opcode::VPMULUDQ | + Opcode::VPSHUFD | + Opcode::VSHUFPD | + Opcode::VSHUFPS | + Opcode::VSQRTPD | + Opcode::VSQRTPS | + Opcode::VSQRTSS | + Opcode::VSQRTSD | + Opcode::VSUBPD | + Opcode::VSUBPS | + Opcode::VSUBSD | + Opcode::VSUBSS | + Opcode::VUCOMISD | + Opcode::VUCOMISS | + Opcode::VROUNDPD | + Opcode::VROUNDPS | + Opcode::VROUNDSD | + Opcode::VROUNDSS | + Opcode::VPSLLD | + Opcode::VPSLLQ | + Opcode::VPSLLW | + Opcode::VPSRAD | + Opcode::VPSRAW | + Opcode::VPSRLD | + Opcode::VPSRLQ | + Opcode::VPSRLW | + Opcode::VPSUBB | + Opcode::VPSUBW | + Opcode::VPSUBD | + Opcode::VPSUBQ | + Opcode::VPXOR | + Opcode::VPUNPCKHBW | + Opcode::VPUNPCKHWD | + Opcode::VPUNPCKHDQ | + Opcode::VPUNPCKHQDQ | + Opcode::VPUNPCKLBW | + Opcode::VPUNPCKLWD | + Opcode::VPUNPCKLDQ | + Opcode::VPUNPCKLQDQ | + Opcode::VUNPCKHPD | + Opcode::VUNPCKHPS | + Opcode::VUNPCKLPD | + Opcode::VUNPCKLPS | + Opcode::VPCMPESTRI | + Opcode::VPCMPESTRM | + Opcode::VPCMPISTRI | + Opcode::VPCMPISTRM | + Opcode::VBROADCASTSS | + Opcode::VBROADCASTSD | + Opcode::VBROADCASTF128 | + Opcode::VBROADCASTSD | + Opcode::VBROADCASTSS | + Opcode::VINSERTF128 | + Opcode::VEXTRACTF128 | + Opcode::VMASKMOVPD | + Opcode::VMASKMOVPS | + Opcode::VPERMILPD | + Opcode::VPERMILPS | + Opcode::VPERM2F128 | + Opcode::VZEROUPPER | + Opcode::VZEROALL => { + if !decoder.feature_avx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::HRESET => { + if !decoder.feature_hreset() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VP2INTERSECTD | + Opcode::VP2INTERSECTQ => { + if !decoder.feature_avx512_vp2intersect() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::JMPE => { + if !decoder.feature_itanium() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPRU => { + if !decoder.feature_rdpru() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CRC32 | + Opcode::PCMPESTRI | + Opcode::PCMPESTRM | + Opcode::PCMPISTRI | + Opcode::PCMPISTRM | + Opcode::PCMPGTQ => { + if !decoder.feature_sse4_2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MONITOR | + Opcode::MWAIT => { + if !decoder.feature_monitor() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPRORRD | + Opcode::VPRORRQ => { + if !decoder.feature_avx512_f_typo() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PHMINPOSUW | + Opcode::PMULDQ | + Opcode::PMULLD | + Opcode::DPPS | + Opcode::DPPD | + Opcode::PACKUSDW | + Opcode::PCMPEQQ | + Opcode::PTEST | + Opcode::MOVNTDQA | + Opcode::ROUNDSS | + Opcode::ROUNDSD | + Opcode::ROUNDPS | + Opcode::ROUNDPD | + Opcode::PMAXSB | + Opcode::PMAXSD | + Opcode::PMAXUW | + Opcode::PMAXUD | + Opcode::PMINSD | + Opcode::PMINSB | + Opcode::PMINUD | + Opcode::PMINUW | + Opcode::BLENDW | + Opcode::PBLENDW | + Opcode::BLENDVPS | + Opcode::BLENDVPD | + Opcode::PBLENDVB | + Opcode::BLENDPS | + Opcode::BLENDPD | + Opcode::MPSADBW | + Opcode::PMOVZXDQ | + Opcode::PMOVSXDQ | + Opcode::PMOVZXBD | + Opcode::PMOVSXBD | + Opcode::PMOVZXWQ | + Opcode::PMOVSXWQ | + Opcode::PMOVZXBQ | + Opcode::PMOVSXBQ | + Opcode::PMOVSXWD | + Opcode::PMOVZXWD | + Opcode::PEXTRQ | + Opcode::PEXTRD | + Opcode::PEXTRB | + Opcode::PMOVSXBW | + Opcode::PMOVZXBW | + Opcode::PINSRQ | + Opcode::PINSRD | + Opcode::PINSRB | + Opcode::EXTRACTPS | + Opcode::INSERTPS => { + if !decoder.feature_sse4_1() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::KANDB | + Opcode::KANDNB | + Opcode::KADDB | + Opcode::KTESTB | + Opcode::KADDW | + Opcode::KTESTW | + Opcode::KMOVB | + Opcode::KNOTB | + Opcode::KORB | + Opcode::KORTESTB | + Opcode::KSHIFTLB | + Opcode::KSHIFTRB | + Opcode::KXNORB | + Opcode::KXORB | + Opcode::VBROADCASTF32X2 | + Opcode::VBROADCASTF64X2 | + Opcode::VBROADCASTF32X8 | + Opcode::VBROADCASTI32X8 | + Opcode::VBROADCASTI64X2 | + Opcode::VBROADCASTI32X2 | + Opcode::VEXTRACTF32X8 | + Opcode::VEXTRACTI32X8 | + Opcode::VGETEXPSD | + Opcode::VGETEXPSS | + Opcode::VXORPD | + Opcode::VXORPS | + Opcode::VPEXTRD | + Opcode::VPEXTRQ | + Opcode::VPINSRD | + Opcode::VPINSRQ | + Opcode::VANDNPD | + Opcode::VANDNPS | + Opcode::VANDPD | + Opcode::VANDPS | + Opcode::VORPD | + Opcode::VORPS | + Opcode::VCVTTPD2QQ | + Opcode::VCVTPD2QQ | + Opcode::VCVTTPD2UQQ | + Opcode::VCVTPD2UQQ | + Opcode::VCVTTPS2QQ | + Opcode::VCVTPS2QQ | + Opcode::VCVTTPS2UQQ | + Opcode::VCVTPS2UQQ | + Opcode::VCVTUQQ2PD | + Opcode::VCVTUQQ2PS | + Opcode::VEXTRACTF64X2 | + Opcode::VEXTRACTI64X2 | + Opcode::VFPCLASSPD | + Opcode::VFPCLASSPS | + Opcode::VFPCLASSSD | + Opcode::VFPCLASSSS | + Opcode::VINSERTF64X2 | + Opcode::VINSERTF32X8 | + Opcode::VINSERTI32X8 | + Opcode::VINSERTI64X2 | + Opcode::VPMOVM2D | + Opcode::VPMOVM2Q | + Opcode::VPMOVB2D | + Opcode::VPMOVQ2M | + Opcode::VRANGEPD | + Opcode::VRANGEPS | + Opcode::VRANGESD | + Opcode::VRANGESS | + Opcode::VREDUCEPD | + Opcode::VREDUCEPS | + Opcode::VREDUCESD | + Opcode::VREDUCESS => { + if !decoder.feature_avx512_dq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ADCX | + Opcode::ADOX => { + if !decoder.feature_adx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::FXSAVE | + Opcode::FXRSTOR => { + if !decoder.feature_fxsr() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SLHD => { + if !decoder.feature_typo_instructions() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XABORT | + Opcode::XBEGIN | + Opcode::XEND | + Opcode::XTEST => { + if !decoder.feature_tsx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CMPXCHG16B => { + if !decoder.feature_cmpxchg16b() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::TPAUSE | + Opcode::UMONITOR | + Opcode::UMWAIT => { + if !decoder.feature_waitpkg() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLTS | + Opcode::LAR | + Opcode::LGDT | + Opcode::LIDT | + Opcode::LLDT | + Opcode::LMSW | + Opcode::LSL | + Opcode::SGDT | + Opcode::SIDT | + Opcode::SLDT | + Opcode::SMSW | + Opcode::STR | + Opcode::LTR | + Opcode::VERR | + Opcode::VERW => { + if !decoder.feature_80286() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SYSENTER | + Opcode::SYSEXIT => { + if !decoder.feature_sysenter() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVVPID => { + if !decoder.feature_invpcid_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VP4DPWSSDS | + Opcode::VP4DPWSSD => { + if !decoder.feature_avx512_4vnniw() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPDPBUSDS | + Opcode::VPDPBUSD | + Opcode::VPDPWSSDS | + Opcode::VPDPWSSD => { + if !decoder.feature_avx512_vnni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VGATHERPF0DPD | + Opcode::VGATHERPF0DPS | + Opcode::VGATHERPF0QPD | + Opcode::VGATHERPF0QPS | + Opcode::VGATHERPF1DPD | + Opcode::VGATHERPF1DPS | + Opcode::VGATHERPF1QPD | + Opcode::VGATHERPF1QPS | + Opcode::VSCATTERPF0DPD | + Opcode::VSCATTERPF0DPS | + Opcode::VSCATTERPF0QPD | + Opcode::VSCATTERPF0QPS | + Opcode::VSCATTERPF1DPD | + Opcode::VSCATTERPF1DPS | + Opcode::VSCATTERPF1QPD | + Opcode::VSCATTERPF1QPS => { + if !decoder.feature_avx512_pf() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPBROADCASTMW2D | + Opcode::VPBROADCASTMB2Q | + Opcode::VPBROADCASTM | + Opcode::VPCONFLICTD | + Opcode::VPCONFLICTQ | + Opcode::VPLZCNTD | + Opcode::VPLZCNTQ => { + if !decoder.feature_avx512_cd() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VCVTNE2PS2BF16 | + Opcode::VCVTNEPS2BF16 | + Opcode::VDPBF16PS => { + if !decoder.feature_avx512_bf16() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMOVQ2M => { + if !decoder.feature_avx512bw_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PCLMULQDQ => { + if !decoder.feature_pclmulqdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VSCATTERDPS | + Opcode::VSCATTERDPD | + Opcode::VSCATTERQPS | + Opcode::VSCATTERQPD => { + if !decoder.feature_avx512_f__vl_unimplemented() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::WRUSS | + Opcode::WRSS | + Opcode::INCSSP | + Opcode::SAVEPREVSSP | + Opcode::SETSSBSY | + Opcode::CLRSSBSY | + Opcode::RSTORSSP | + Opcode::ENDBR64 | + Opcode::ENDBR32 => { + if !decoder.feature_cet() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDSEED => { + if !decoder.feature_rdseed() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BSWAP | + Opcode::CMPXCHG | + Opcode::INVD | + Opcode::WBINVD | + Opcode::INVLPG | + Opcode::XADD => { + if !decoder.feature_80486() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDFSBASE | + Opcode::RDGSBASE | + Opcode::WRFSBASE | + Opcode::WRGSBASE => { + if !decoder.feature_fsgsbase() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::UD2 => { + if !decoder.feature_pentium_pro() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VCVTPH2PS | + Opcode::VCVTPS2PH => { + if !decoder.feature_f16c() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BNDMK | + Opcode::BNDCL | + Opcode::BNDCU | + Opcode::BNDCN | + Opcode::BNDMOV | + Opcode::BNDLDX | + Opcode::BNDSTX => { + if !decoder.feature_mpx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDTSCP => { + if !decoder.feature_rdtscp() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VBROADCASTI128 | + Opcode::VPBROADCASTB | + Opcode::VPBROADCASTW | + Opcode::VPBROADCASTD | + Opcode::VPBROADCASTQ | + Opcode::VINSERTI128 | + Opcode::VEXTRACTI128 | + Opcode::VPMASKMOVD | + Opcode::VPMASKMOVQ | + Opcode::VPERMPS | + Opcode::VPERMD | + Opcode::VPERMPD | + Opcode::VPERMQ | + Opcode::VPERM2I128 | + Opcode::VPBLENDD | + Opcode::VPSLLVD | + Opcode::VPSLLVQ | + Opcode::VPSRLVD | + Opcode::VPSRLVQ | + Opcode::VPSRAVD => { + if !decoder.feature_avx2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PCONFIG => { + if !decoder.feature_pconfig() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPMADD52HUQ | + Opcode::VPMADD52LUQ => { + if !decoder.feature_avx512_ifma() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VEXP2PD | + Opcode::VEXP2PS | + Opcode::VEXP2SD | + Opcode::VEXP2SS | + Opcode::VRCP28PD | + Opcode::VRCP28PS | + Opcode::VRCP28SD | + Opcode::VRCP28SS | + Opcode::VRSQRT28PD | + Opcode::VRSQRT28PS | + Opcode::VRSQRT28SD | + Opcode::VRSQRT28SS => { + if !decoder.feature_avx512_er() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPCLMULQDQ => { + if !decoder.feature_vpclmulqdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BSF | + Opcode::BSR | + Opcode::BT | + Opcode::BTS | + Opcode::BTC | + Opcode::BTR | + Opcode::CDQ | + Opcode::CWDE | + Opcode::LDS | + Opcode::LES | + Opcode::LFS | + Opcode::LGS | + Opcode::LSS | + Opcode::MOVZX | + Opcode::MOVSX | + Opcode::SETO | + Opcode::SETNO | + Opcode::SETB | + Opcode::SETAE | + Opcode::SETZ | + Opcode::SETNZ | + Opcode::SETBE | + Opcode::SETA | + Opcode::SETS | + Opcode::SETNS | + Opcode::SETP | + Opcode::SETNP | + Opcode::SETL | + Opcode::SETGE | + Opcode::SETLE | + Opcode::SETG | + Opcode::SHLD | + Opcode::SHRD => { + if !decoder.feature_80386() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVBE => { + if !decoder.feature_movbe() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VCVTQQ2PD | + Opcode::VCVTQQ2PS | + Opcode::VCVTUSI2USD | + Opcode::VCVTUSI2USS | + Opcode::VEXTRACTF32X4 | + Opcode::VEXTRACTF64X4 | + Opcode::VEXTRACTI32X4 | + Opcode::VEXTRACTI64X4 | + Opcode::VFIXUPIMMSD | + Opcode::VFIXUPIMMSS | + Opcode::VINSERTI64X4 | + Opcode::VMOVDQA32 | + Opcode::VMOVDQA64 | + Opcode::VMOVDQU32 | + Opcode::VMOVDQU64 | + Opcode::VPCOMPRESSQ | + Opcode::VPCOMPRESSD | + Opcode::VSCALEDPD | + Opcode::VSCALEDPS | + Opcode::VSCALEDSD | + Opcode::VSCALEDSS | + Opcode::VSCATTERDD | + Opcode::VSCATTERDQ | + Opcode::VSCATTERQD | + Opcode::VSCATTERQQ | + Opcode::VADDPD | + Opcode::VADDPS | + Opcode::VCMPPD | + Opcode::VCMPPS | + Opcode::VCVTDQ2PD | + Opcode::VCVTDQ2PS | + Opcode::VCVTPD2DQ | + Opcode::VCVTPD2PS | + Opcode::VCVTPS2DQ | + Opcode::VCVTPS2PD | + Opcode::VCVTTPD2DQ | + Opcode::VCVTTPS2DQ | + Opcode::VDIVPD | + Opcode::VDIVPS | + Opcode::VMAXPD | + Opcode::VMAXPS | + Opcode::VMINPD | + Opcode::VMINPS | + Opcode::VMOVAPD | + Opcode::VMOVAPS | + Opcode::VMOVDDUP | + Opcode::VMOVDQA | + Opcode::VMOVDQU | + Opcode::VMOVNTDQA | + Opcode::VMOVNTDQ | + Opcode::VMOVNTPD | + Opcode::VMOVNTPS | + Opcode::VMOVSHDUP | + Opcode::VMOVSLDUP | + Opcode::VMOVUPD | + Opcode::VMOVUPS | + Opcode::VMULPD | + Opcode::VMULPS | + Opcode::VPANDD | + Opcode::VPANDQ | + Opcode::VPANDND | + Opcode::VPANDNQ | + Opcode::VPCMPEQD | + Opcode::VPCMPEQQ | + Opcode::VPCMPGTD | + Opcode::VPCMPGTQ | + Opcode::VPMAXSD | + Opcode::VPMAXSQ | + Opcode::VPMAXUD | + Opcode::VPMAXUQ | + Opcode::VPMINSD | + Opcode::VPMINSQ | + Opcode::VPMINUD | + Opcode::VPMINUQ | + Opcode::VPCMPD | + Opcode::VPCMPQ | + Opcode::VPCMPUD | + Opcode::VPCMPUQ | + Opcode::VPORD | + Opcode::VPORQ | + Opcode::VPXORD | + Opcode::VPXORQ | + Opcode::VPSLLD | + Opcode::VPSLLQ | + Opcode::VPSLLW | + Opcode::VPSRAD | + Opcode::VPSRAQ | + Opcode::VALIGND | + Opcode::VALIGNQ | + Opcode::VBLENDMPD | + Opcode::VBLENDMPS | + Opcode::VPROLD | + Opcode::VPROLQ | + Opcode::VPROLVD | + Opcode::VPROLVQ | + Opcode::VPRORD | + Opcode::VPRORQ | + Opcode::VPRORVD | + Opcode::VPRORVQ | + Opcode::VPUNPCKHDQ | + Opcode::VPUNPCKHQDQ | + Opcode::VPUNPCKLDQ | + Opcode::VPUNPCKLQDQ | + Opcode::VUNPCKHPD | + Opcode::VUNPCKHPS | + Opcode::VUNPCKLPD | + Opcode::VUNPCKLPS | + Opcode::VBROADCASTF32X4 | + Opcode::VBROADCASTF64X4 | + Opcode::VBROADCASTI64X4 | + Opcode::VBROADCASTI32X4 | + Opcode::VINSERTF32X4 | + Opcode::VINSERTI32X4 | + Opcode::VSHUFF32X4 | + Opcode::VSHUFF64X2 | + Opcode::VSHUFI32X4 | + Opcode::VSHUFI64X2 | + Opcode::VCOMPRESSD | + Opcode::VCOMPRESSQ | + Opcode::VCOMPRESSPD | + Opcode::VCOMPRESSPS | + Opcode::VEXPANDPD | + Opcode::VEXPANDPS | + Opcode::VCVTPD2UDQ | + Opcode::VCVTPS2UDQ | + Opcode::VCVTUDQ2PD | + Opcode::VCVTUDQ2PS | + Opcode::VCVTTPD2UDQ | + Opcode::VCVTTPS2UDQ | + Opcode::VFIXUPIMMPD | + Opcode::VFIXUPIMMPS | + Opcode::VCVTPH2PS | + Opcode::VCVTPS2PH | + Opcode::VFMADD132PD | + Opcode::VFMADD132PS | + Opcode::VFMADD213PD | + Opcode::VFMADD213PS | + Opcode::VFMADD231PD | + Opcode::VFMADD231PS | + Opcode::VFMADDSUB132PD | + Opcode::VFMADDSUB132PS | + Opcode::VFMADDSUB213PD | + Opcode::VFMADDSUB213PS | + Opcode::VFMADDSUB231PD | + Opcode::VFMADDSUB231PS | + Opcode::VFMSUB132PD | + Opcode::VFMSUB132PS | + Opcode::VFMSUB213PD | + Opcode::VFMSUB213PS | + Opcode::VFMSUB231PD | + Opcode::VFMSUB231PS | + Opcode::VFMSUBADD132PD | + Opcode::VFMSUBADD132PS | + Opcode::VFMSUBADD213PD | + Opcode::VFMSUBADD213PS | + Opcode::VFMSUBADD231PD | + Opcode::VFMSUBADD231PS | + Opcode::VFNMADD132PD | + Opcode::VFNMADD132PS | + Opcode::VFNMADD213PD | + Opcode::VFNMADD213PS | + Opcode::VFNMADD231PD | + Opcode::VFNMADD231PS | + Opcode::VFNMSUB132PD | + Opcode::VFNMSUB132PS | + Opcode::VFNMSUB213PD | + Opcode::VFNMSUB213PS | + Opcode::VFNMSUB231PD | + Opcode::VFNMSUB231PS | + Opcode::VSCATTERDPS | + Opcode::VSCATTERDPD | + Opcode::VSCATTERQPS | + Opcode::VSCATTERQPD | + Opcode::VGATHERDPD | + Opcode::VGATHERDPS | + Opcode::VGATHERQPD | + Opcode::VGATHERQPS | + Opcode::VGETEXPPD | + Opcode::VGETEXPPS | + Opcode::VGETMANTPD | + Opcode::VGETMANTPS | + Opcode::VPBLENDMD | + Opcode::VPBLENDMQ | + Opcode::VPERMD | + Opcode::VPERMQ | + Opcode::VPERMI2D | + Opcode::VPERMI2Q | + Opcode::VPERMI2PD | + Opcode::VPERMI2PS | + Opcode::VPERMT2D | + Opcode::VPERMT2Q | + Opcode::VPERMT2PD | + Opcode::VPERMT2PS | + Opcode::VPEXPANDD | + Opcode::VPEXPANDQ | + Opcode::VPGATHERDD | + Opcode::VPGATHERDQ | + Opcode::VPGATHERQD | + Opcode::VPGATHERQQ | + Opcode::VPSCATTERDD | + Opcode::VPSCATTERDQ | + Opcode::VPSCATTERQD | + Opcode::VPSCATTERQQ | + Opcode::VPMOVDB | + Opcode::VPMOVSDB | + Opcode::VPMOVUSDB | + Opcode::VPMOVDW | + Opcode::VPMOVSDW | + Opcode::VPMOVUSDW | + Opcode::VPMOVQB | + Opcode::VPMOVSQB | + Opcode::VPMOVUSQB | + Opcode::VPMOVQD | + Opcode::VPMOVSQD | + Opcode::VPMOVUSQD | + Opcode::VPMOVQW | + Opcode::VPMOVSQW | + Opcode::VPMOVUSQW | + Opcode::VPSRAVQ | + Opcode::VPTERNLOGD | + Opcode::VPTERNLOGQ | + Opcode::VPTESTMD | + Opcode::VPTESTMQ | + Opcode::VPTESTNMD | + Opcode::VPTESTNMQ | + Opcode::VRCP14PD | + Opcode::VRCP14PS | + Opcode::VRNDSCALEPD | + Opcode::VRNDSCALEPS | + Opcode::VRSQRT14PD | + Opcode::VRSQRT14PS | + Opcode::VSCALEFPS | + Opcode::VSCALEFPD | + Opcode::VPABSQ | + Opcode::VADDSD | + Opcode::VADDSS | + Opcode::VCMPSD | + Opcode::VCMPSS | + Opcode::VCOMISD | + Opcode::VCOMISS | + Opcode::VCVTSD2SI | + Opcode::VCVTSD2SS | + Opcode::VCVTSI2SS | + Opcode::VCVTSI2SD | + Opcode::VCVTSS2SD | + Opcode::VCVTSS2SI | + Opcode::VCVTTSS2SI | + Opcode::VCVTTSD2SI | + Opcode::VDIVSD | + Opcode::VDIVSS | + Opcode::VEXTRACTPS | + Opcode::VINSERTPS | + Opcode::VGETMANTSD | + Opcode::VGETMANTSS | + Opcode::VMOVD | + Opcode::VMOVQ | + Opcode::VMOVHLPS | + Opcode::VMOVHPD | + Opcode::VMOVHPS | + Opcode::VMOVLHPS | + Opcode::VMOVLPD | + Opcode::VMOVLPS | + Opcode::VMOVSS | + Opcode::VMOVSD | + Opcode::VSQRTSS | + Opcode::VSQRTSD | + Opcode::VSUBSD | + Opcode::VSUBSS | + Opcode::VUCOMISD | + Opcode::VUCOMISS | + Opcode::VRCP14SD | + Opcode::VRCP14SS | + Opcode::VRNDSCALESD | + Opcode::VRNDSCALESS | + Opcode::VRSQRT14SD | + Opcode::VRSQRT14SS | + Opcode::VSCALEFSS | + Opcode::VSCALEFSD | + Opcode::VINSERTF64X4 | + Opcode::VCVTUSI2SD | + Opcode::VCVTUSI2SS | + Opcode::VCVTSD2USI | + Opcode::VCVTSS2USI | + Opcode::VCVTTSD2USI | + Opcode::VCVTTSS2USI | + Opcode::KANDW | + Opcode::KANDNW | + Opcode::KMOVW | + Opcode::KNOTW | + Opcode::KORW | + Opcode::KORTESTW | + Opcode::KSHIFTLW | + Opcode::KSHIFTRW | + Opcode::KUNPCKBW | + Opcode::KXNORW | + Opcode::KXORW => { + if !decoder.feature_avx512_f() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MONITORX | + Opcode::MWAITX => { + if !decoder.feature_emx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VFMADD132PD | + Opcode::VFMADD132PS | + Opcode::VFMADD132SD | + Opcode::VFMADD132SS | + Opcode::VFMADD213PD | + Opcode::VFMADD213PS | + Opcode::VFMADD213SD | + Opcode::VFMADD213SS | + Opcode::VFMADD231PD | + Opcode::VFMADD231PS | + Opcode::VFMADD231SD | + Opcode::VFMADD231SS | + Opcode::VFMADDSUB132PD | + Opcode::VFMADDSUB132PS | + Opcode::VFMADDSUB213PD | + Opcode::VFMADDSUB213PS | + Opcode::VFMADDSUB231PD | + Opcode::VFMADDSUB231PS | + Opcode::VFMSUB132PD | + Opcode::VFMSUB132PS | + Opcode::VFMSUB132SD | + Opcode::VFMSUB132SS | + Opcode::VFMSUB213PD | + Opcode::VFMSUB213PS | + Opcode::VFMSUB213SD | + Opcode::VFMSUB213SS | + Opcode::VFMSUB231PD | + Opcode::VFMSUB231PS | + Opcode::VFMSUB231SD | + Opcode::VFMSUB231SS | + Opcode::VFMSUBADD132PD | + Opcode::VFMSUBADD132PS | + Opcode::VFMSUBADD213PD | + Opcode::VFMSUBADD213PS | + Opcode::VFMSUBADD231PD | + Opcode::VFMSUBADD231PS | + Opcode::VFNMADD132PD | + Opcode::VFNMADD132PS | + Opcode::VFNMADD132SD | + Opcode::VFNMADD132SS | + Opcode::VFNMADD213PD | + Opcode::VFNMADD213PS | + Opcode::VFNMADD213SD | + Opcode::VFNMADD213SS | + Opcode::VFNMADD231PD | + Opcode::VFNMADD231PS | + Opcode::VFNMADD231SD | + Opcode::VFNMADD231SS | + Opcode::VFNMSUB132PD | + Opcode::VFNMSUB132PS | + Opcode::VFNMSUB132SD | + Opcode::VFNMSUB132SS | + Opcode::VFNMSUB213PD | + Opcode::VFNMSUB213PS | + Opcode::VFNMSUB213SD | + Opcode::VFNMSUB213SS | + Opcode::VFNMSUB231PD | + Opcode::VFNMSUB231PS | + Opcode::VFNMSUB231SD | + Opcode::VFNMSUB231SS => { + if !decoder.feature_fma3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VMPTRLD | + Opcode::VMPTRST | + Opcode::VMCLEAR | + Opcode::VMREAD | + Opcode::VMWRITE | + Opcode::VMCALL | + Opcode::VMLAUNCH | + Opcode::VMRESUME | + Opcode::VMXOFF | + Opcode::VMXON | + Opcode::INVEPT | + Opcode::INVVPID | + Opcode::VMFUNC => { + if !decoder.feature_vmx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XSUSLDTRK | + Opcode::XRESLDTRK => { + if !decoder.feature_tsxldtrk() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SYSCALL | + Opcode::SYSRET => { + if !decoder.feature_syscall() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::EXTRQ | + Opcode::INSERTQ | + Opcode::MOVNTSD | + Opcode::MOVNTSS => { + if !decoder.feature_sse4a() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPOPCNTD | + Opcode::VPOPCNTQ => { + if !decoder.feature_avx512_vpopcntdq() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::INVEPT | + Opcode::INVVPID | + Opcode::INVPCID => { + if !decoder.feature_invpcid() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XGETBV | + Opcode::XRSTOR | + Opcode::XRSTORS | + Opcode::XSAVE | + Opcode::XSAVEC | + Opcode::XSAVES | + Opcode::XSETBV => { + if !decoder.feature_xsave() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CMOVA | + Opcode::CMOVB | + Opcode::CMOVG | + Opcode::CMOVGE | + Opcode::CMOVL | + Opcode::CMOVLE | + Opcode::CMOVNA | + Opcode::CMOVNB | + Opcode::CMOVNO | + Opcode::CMOVNP | + Opcode::CMOVNS | + Opcode::CMOVNZ | + Opcode::CMOVO | + Opcode::CMOVP | + Opcode::CMOVS | + Opcode::CMOVZ => { + if !decoder.feature_cmov() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::KANDQ | + Opcode::KANDD | + Opcode::KANDNQ | + Opcode::KANDND | + Opcode::KMOVD | + Opcode::KMOVQ | + Opcode::KNOTD | + Opcode::KNOTQ | + Opcode::KORD | + Opcode::KORQ | + Opcode::KADDD | + Opcode::KTESTD | + Opcode::KADDQ | + Opcode::KTESTQ | + Opcode::KORTESTD | + Opcode::KORTESTQ | + Opcode::KSHIFTLD | + Opcode::KSHIFTRD | + Opcode::KSHIFTLQ | + Opcode::KSHIFTRQ | + Opcode::KUNPCKWD | + Opcode::KUNPCKDQ | + Opcode::KXNORD | + Opcode::KXNORQ | + Opcode::KXORD | + Opcode::KXORQ | + Opcode::VPCMPEQB | + Opcode::VPCMPEQW | + Opcode::VPCMPGTB | + Opcode::VPCMPGTW | + Opcode::VPSUBUSB | + Opcode::VPSUBUSW | + Opcode::VPERMW | + Opcode::VPERMI2W | + Opcode::VPERMT2W | + Opcode::VPSLLVW | + Opcode::VPSRAVW | + Opcode::VPSRLVW | + Opcode::VPEXTRB | + Opcode::VPEXTRW | + Opcode::VPINSRB | + Opcode::VPINSRW | + Opcode::VPMULHUW | + Opcode::VPMULHRSW | + Opcode::VPADDSB | + Opcode::VPADDSW | + Opcode::VPADDUSB | + Opcode::VPADDUSW | + Opcode::VPALIGNR | + Opcode::VPMOVD2M | + Opcode::VPMOVQ2M | + Opcode::VPMOVWB | + Opcode::VDBPSADBW | + Opcode::VMOVDQU8 | + Opcode::VMOVDQU16 | + Opcode::VPBLENDMB | + Opcode::VPBLENDMW | + Opcode::VPCMPB | + Opcode::VPCMPUB | + Opcode::VPCMPW | + Opcode::VPCMPUW | + Opcode::VPERMW | + Opcode::VPERMI2B | + Opcode::VPERMI2W | + Opcode::VPMOVM2B | + Opcode::VPMOVM2W | + Opcode::VPMOVB2M | + Opcode::VPMOVW2M | + Opcode::VPMOVSWB | + Opcode::VPMOVUSWB | + Opcode::VPSLLVW | + Opcode::VPSRAVW | + Opcode::VPSRLVW | + Opcode::VPTESTNMB | + Opcode::VPTESTNMW | + Opcode::VPTESTMB | + Opcode::VPTESTMW => { + if !decoder.feature_avx512_bw() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PALIGNR | + Opcode::PSIGNW | + Opcode::PSIGND | + Opcode::PSIGNB | + Opcode::PSHUFB | + Opcode::PMULHRSW | + Opcode::PMADDUBSW | + Opcode::PABSD | + Opcode::PABSW | + Opcode::PABSB | + Opcode::PHSUBSW | + Opcode::PHSUBW | + Opcode::PHSUBD | + Opcode::PHADDD | + Opcode::PHADDSW | + Opcode::PHADDW => { + if !decoder.feature_ssse3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLFLUSHOPT => { + if !decoder.feature_clflushopt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::SHA1RNDS4 | + Opcode::SHA1NEXTE | + Opcode::SHA1MSG1 | + Opcode::SHA1MSG2 | + Opcode::SHA256RNDS2 | + Opcode::SHA256MSG1 | + Opcode::SHA256MSG2 => { + if !decoder.feature_sha() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::JRCXZ | + Opcode::CDQE | + Opcode::MOVZX | + Opcode::SWAPGS | + Opcode::MOVSXD => { + if !decoder.feature_64bit() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::POPCNT | + Opcode::LZCNT => { + if !decoder.feature_abm() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PREFETCHW => { + if !decoder.feature_3dnowprefetch() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPID => { + if !decoder.feature_rdpid() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::LAHF | + Opcode::SAHF => { + if !decoder.feature_lahfsahf() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ENQCMD | + Opcode::ENQCMDS => { + if !decoder.feature_enqcmd() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PTWRITE => { + if !decoder.feature_ptwrite() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPERMT2B | + Opcode::VPERMB => { + if !decoder.feature_avx512_vbmi() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::F2XM1 | + Opcode::FABS | + Opcode::FADD | + Opcode::FADDP | + Opcode::FBLD | + Opcode::FBSTP | + Opcode::FCHS | + Opcode::FCMOVB | + Opcode::FCMOVBE | + Opcode::FCMOVE | + Opcode::FCMOVNB | + Opcode::FCMOVNBE | + Opcode::FCMOVNE | + Opcode::FCMOVNU | + Opcode::FCMOVU | + Opcode::FCOM | + Opcode::FCOMI | + Opcode::FCOMIP | + Opcode::FCOMP | + Opcode::FCOMPP | + Opcode::FCOS | + Opcode::FDECSTP | + Opcode::FDISI8087_NOP | + Opcode::FDIV | + Opcode::FDIVP | + Opcode::FDIVR | + Opcode::FDIVRP | + Opcode::FENI8087_NOP | + Opcode::FFREE | + Opcode::FFREEP | + Opcode::FIADD | + Opcode::FICOM | + Opcode::FICOMP | + Opcode::FIDIV | + Opcode::FIDIVR | + Opcode::FILD | + Opcode::FIMUL | + Opcode::FINCSTP | + Opcode::FIST | + Opcode::FISTP | + Opcode::FISTTP | + Opcode::FISUB | + Opcode::FISUBR | + Opcode::FLD | + Opcode::FLD1 | + Opcode::FLDCW | + Opcode::FLDENV | + Opcode::FLDL2E | + Opcode::FLDL2T | + Opcode::FLDLG2 | + Opcode::FLDLN2 | + Opcode::FLDPI | + Opcode::FLDZ | + Opcode::FMUL | + Opcode::FMULP | + Opcode::FNCLEX | + Opcode::FNINIT | + Opcode::FNOP | + Opcode::FNSAVE | + Opcode::FNSTCW | + Opcode::FNSTENV | + Opcode::FNSTOR | + Opcode::FNSTSW | + Opcode::FPATAN | + Opcode::FPREM | + Opcode::FPREM1 | + Opcode::FPTAN | + Opcode::FRNDINT | + Opcode::FRSTOR | + Opcode::FSCALE | + Opcode::FSETPM287_NOP | + Opcode::FSIN | + Opcode::FSINCOS | + Opcode::FSQRT | + Opcode::FST | + Opcode::FSTP | + Opcode::FSTPNCE | + Opcode::FSUB | + Opcode::FSUBP | + Opcode::FSUBR | + Opcode::FSUBRP | + Opcode::FTST | + Opcode::FUCOM | + Opcode::FUCOMI | + Opcode::FUCOMIP | + Opcode::FUCOMP | + Opcode::FUCOMPP | + Opcode::FXAM | + Opcode::FXCH | + Opcode::FXTRACT | + Opcode::FYL2X | + Opcode::FYL2XP1 => { + if !decoder.feature_x87() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPMC | + Opcode::PUNPCKLBW | + Opcode::PUNPCKLWD | + Opcode::PUNPCKLDQ | + Opcode::PACKSSWB | + Opcode::PCMPGTB | + Opcode::PCMPGTD | + Opcode::PCMPGTW | + Opcode::PACKUSWB | + Opcode::PUNPCKHBW | + Opcode::PUNPCKHWD | + Opcode::PUNPCKHDQ | + Opcode::PACKSSDW | + Opcode::MOVD | + Opcode::MOVQ | + Opcode::PCMPEQB | + Opcode::PCMPEQD | + Opcode::PCMPEQW | + Opcode::PSRLW | + Opcode::PSRLD | + Opcode::PSRLQ | + Opcode::PMULLW | + Opcode::PSUBUSB | + Opcode::PSUBUSW | + Opcode::PAND | + Opcode::PADDUSB | + Opcode::PADDUSW | + Opcode::PANDN | + Opcode::PSRAW | + Opcode::PSRAD | + Opcode::PMULHW | + Opcode::PSUBSB | + Opcode::PSUBSW | + Opcode::POR | + Opcode::PADDSB | + Opcode::PADDSW | + Opcode::PXOR | + Opcode::PSLLW | + Opcode::PSLLD | + Opcode::PSLLQ | + Opcode::PMADDWD | + Opcode::PSUBB | + Opcode::PSUBW | + Opcode::PSUBD | + Opcode::PADDB | + Opcode::PADDW | + Opcode::PADDD | + Opcode::EMMS => { + if !decoder.feature_mmx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPOPCNTD | + Opcode::VPOPCNTQ | + Opcode::VPOPCNTB | + Opcode::VPOPCNTW | + Opcode::VPSHUFBITQMB | + Opcode::VPMULTISHIFTQB => { + if !decoder.feature_avx512_bitalg() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::AESDEC128KL | + Opcode::AESDEC256KL | + Opcode::AESDECWIDE128KL | + Opcode::AESDECWIDE256KL | + Opcode::AESENC128KL | + Opcode::AESENC256KL | + Opcode::AESENCWIDE128KL | + Opcode::AESENCWIDE256KL | + Opcode::ENCODEKEY128 | + Opcode::ENCODEKEY256 | + Opcode::LOADIWKEY => { + if !decoder.feature_keylocker() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ENTER | + Opcode::LEAVE | + Opcode::INS | + Opcode::OUTS => { + if !decoder.feature_80186() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLWB => { + if !decoder.feature_clwb() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDPKRU | + Opcode::WRPKRU => { + if !decoder.feature_mpk() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::V4FNMADDSS | + Opcode::V4FNMADDPS | + Opcode::V4FMADDSS | + Opcode::V4FMADDPS => { + if !decoder.feature_avx512_4fmaps() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::TDCALL | + Opcode::SEAMRET | + Opcode::SEAMOPS | + Opcode::SEAMCALL => { + if !decoder.feature_tdx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::POPCNT => { + if !decoder.feature_popcnt() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::PSMASH | + Opcode::PVALIDATE | + Opcode::RMPADJUST | + Opcode::RMPUPDATE => { + if !decoder.feature_snp() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VGF2P8AFFINEQB | + Opcode::VGF2P8AFFINEINVQB | + Opcode::VGF2P8MULB => { + if !decoder.feature_avx512_gfni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::FEMMS | + Opcode::PI2FW | + Opcode::PI2FD | + Opcode::PF2IW | + Opcode::PF2ID | + Opcode::PMULHRW | + Opcode::PFCMPGE | + Opcode::PFMIN | + Opcode::PFRCP | + Opcode::PFRSQRT | + Opcode::PFSUB | + Opcode::PFADD | + Opcode::PFCMPGT | + Opcode::PFMAX | + Opcode::PFRCPIT1 | + Opcode::PFRSQIT1 | + Opcode::PFSUBR | + Opcode::PFACC | + Opcode::PFCMPEQ | + Opcode::PFMUL | + Opcode::PFMULHRW | + Opcode::PFRCPIT2 | + Opcode::PFNACC | + Opcode::PFPNACC | + Opcode::PSWAPD | + Opcode::PAVGUSB => { + if !decoder.feature_3dnow() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VPCOMPRESSB | + Opcode::VPCOMPRESSW | + Opcode::VPSHLDVW | + Opcode::VPSHLDW | + Opcode::VPEXPANDB | + Opcode::VPEXPANDW | + Opcode::VPSHRDVW | + Opcode::VPSHRDW | + Opcode::VPSHLDVQ | + Opcode::VPSHLDVD | + Opcode::VPSHLDQ | + Opcode::VPSHLDD | + Opcode::VPSHRDQ | + Opcode::VPSHRDD | + Opcode::VPSHRDVQ | + Opcode::VPSHRDVD => { + if !decoder.feature_avx512_vbmi2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CMC | + Opcode::CLC | + Opcode::STC | + Opcode::CLI | + Opcode::STI | + Opcode::CLD | + Opcode::STD | + Opcode::ADD | + Opcode::OR | + Opcode::ADC | + Opcode::SBB | + Opcode::AND | + Opcode::XOR | + Opcode::SUB | + Opcode::CMP | + Opcode::SAR | + Opcode::SAL | + Opcode::SHR | + Opcode::SHL | + Opcode::RCR | + Opcode::RCL | + Opcode::ROR | + Opcode::ROL | + Opcode::INC | + Opcode::DEC | + Opcode::HLT | + Opcode::CALL | + Opcode::CALLF | + Opcode::JMP | + Opcode::JMPF | + Opcode::PUSH | + Opcode::POP | + Opcode::LEA | + Opcode::NOP | + Opcode::XCHG | + Opcode::POPF | + Opcode::INT | + Opcode::INTO | + Opcode::IRET | + Opcode::IRETD | + Opcode::IRETQ | + Opcode::RETF | + Opcode::ENTER | + Opcode::LEAVE | + Opcode::MOV | + Opcode::RETURN | + Opcode::PUSHF | + Opcode::WAIT | + Opcode::CBW | + Opcode::CWD | + Opcode::CQO | + Opcode::LODS | + Opcode::STOS | + Opcode::CMPS | + Opcode::SCAS | + Opcode::MOVS | + Opcode::TEST | + Opcode::IN | + Opcode::OUT | + Opcode::IMUL | + Opcode::JO | + Opcode::JNO | + Opcode::JB | + Opcode::JNB | + Opcode::JZ | + Opcode::JNZ | + Opcode::JA | + Opcode::JNA | + Opcode::JS | + Opcode::JNS | + Opcode::JP | + Opcode::JNP | + Opcode::JL | + Opcode::JGE | + Opcode::JLE | + Opcode::JG | + Opcode::UD0 | + Opcode::UD1 | + Opcode::UD2 | + Opcode::DIV | + Opcode::IDIV | + Opcode::MUL | + Opcode::NEG | + Opcode::NOT | + Opcode::XLAT | + Opcode::LOOPNZ | + Opcode::LOOPZ | + Opcode::LOOP | + Opcode::SALC => { + if !decoder.feature_8086() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLGI | + Opcode::STGI | + Opcode::SKINIT | + Opcode::VMLOAD | + Opcode::VMMCALL | + Opcode::VMSAVE | + Opcode::VMRUN | + Opcode::INVLPGA => { + if !decoder.feature_svm() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ADDSUBPD | + Opcode::ADDSUBPS | + Opcode::HSUBPD | + Opcode::HADDPD | + Opcode::MOVSLDUP | + Opcode::MOVSHDUP | + Opcode::MOVDDUP | + Opcode::HADDPS | + Opcode::HSUBPS | + Opcode::LDDQU => { + if !decoder.feature_sse3() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVUPD | + Opcode::PSRLDQ | + Opcode::PSLLDQ | + Opcode::MOVSD | + Opcode::MOVLPD | + Opcode::UNPCKLPD | + Opcode::UNPCKHPD | + Opcode::MOVHPD | + Opcode::MOVAPD | + Opcode::MOVMSKPD | + Opcode::CVTPI2PD | + Opcode::CVTSI2SD | + Opcode::MOVNTPD | + Opcode::MOVNTI | + Opcode::MOVNTDQ | + Opcode::CVTTPD2PI | + Opcode::CVTTSD2SI | + Opcode::CVTPD2PI | + Opcode::CVTSD2SI | + Opcode::UCOMISD | + Opcode::COMISD | + Opcode::SQRTPD | + Opcode::SQRTSD | + Opcode::ANDPD | + Opcode::ANDNPD | + Opcode::ORPD | + Opcode::XORPD | + Opcode::ADDPD | + Opcode::ADDSD | + Opcode::MULSD | + Opcode::MULPD | + Opcode::CVTPS2PD | + Opcode::CVTPD2PS | + Opcode::CVTSS2SD | + Opcode::CVTSD2SS | + Opcode::CVTPS2DQ | + Opcode::CVTDQ2PS | + Opcode::CVTTPS2DQ | + Opcode::SUBSD | + Opcode::SUBPD | + Opcode::MINPD | + Opcode::MINSD | + Opcode::DIVPD | + Opcode::DIVSD | + Opcode::MAXPD | + Opcode::MAXSD | + Opcode::PUNPCKLQDQ | + Opcode::PUNPCKHQDQ | + Opcode::MOVDQA | + Opcode::MOVDQU | + Opcode::PSHUFHW | + Opcode::PSHUFLW | + Opcode::PSHUFD | + Opcode::LFENCE | + Opcode::MFENCE | + Opcode::CLFLUSH | + Opcode::CMPPD | + Opcode::CMPPS | + Opcode::CMPSD | + Opcode::SHUFPD | + Opcode::PADDQ | + Opcode::MOVQ2DQ | + Opcode::MOVDQ2Q | + Opcode::CVTPD2DQ | + Opcode::CVTTPD2DQ | + Opcode::CVTDQ2PD | + Opcode::PMULUDQ | + Opcode::MASKMOVDQU | + Opcode::PSUBQ => { + if !decoder.feature_sse2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::GF2P8AFFINEQB | + Opcode::GF2P8AFFINEINVQB | + Opcode::GF2P8MULB => { + if !decoder.feature_gfni() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::XRSTORS64 | + Opcode::XSAVEC64 | + Opcode::XSAVES64 => { + if !decoder.feature_xsave64() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::GETSEC => { + if !decoder.feature_smx() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::ANDN | + Opcode::BEXTR | + Opcode::BLSI | + Opcode::BLSMSK | + Opcode::BLSR | + Opcode::TZCNT => { + if !decoder.feature_bmi1() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::BZHI | + Opcode::MULX | + Opcode::PDEP | + Opcode::PEXT | + Opcode::RORX | + Opcode::SARX | + Opcode::SHRX | + Opcode::SHLX => { + if !decoder.feature_bmi2() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::MOVDIRI | + Opcode::MOVDIR64B => { + if !decoder.feature_movdir() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::VAESDEC | + Opcode::VAESDECLAST | + Opcode::VAESENC | + Opcode::VAESENCLAST | + Opcode::VAESIMC | + Opcode::VAESKEYGENASSIST => { + if !decoder.feature_vaes() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::RDRAND => { + if !decoder.feature_rdrand() { + return Err(DecodeError::InvalidOpcode); + + } + } + Opcode::CLZERO => { + if !decoder.feature_clzero() { + return Err(DecodeError::InvalidOpcode); + + } + } + } + Ok(()) + } +} + diff --git a/src/generated/mod.rs b/src/generated/mod.rs new file mode 100644 index 0000000..6338309 --- /dev/null +++ b/src/generated/mod.rs @@ -0,0 +1,15 @@ +pub(crate) mod opcode; +pub(crate) mod imp; + +pub(crate) mod real_mode { + pub(crate) use super::opcode::real_mode::Opcode as Opcode; + pub(crate) use super::imp::real_mode::revise_instruction as revise_instruction; +} +pub(crate) mod protected_mode { + pub(crate) use super::opcode::protected_mode::Opcode as Opcode; + pub(crate) use super::imp::protected_mode::revise_instruction as revise_instruction; +} +pub(crate) mod long_mode { + pub(crate) use super::opcode::long_mode::Opcode as Opcode; + pub(crate) use super::imp::long_mode::revise_instruction as revise_instruction; +} diff --git a/src/generated/opcode.rs b/src/generated/opcode.rs new file mode 100644 index 0000000..cc573f1 --- /dev/null +++ b/src/generated/opcode.rs @@ -0,0 +1,7186 @@ +#[allow(non_camel_case_types)] +#[derive(Copy, Clone, Debug, Eq, PartialEq)] +#[non_exhaustive] +#[repr(u16)] +pub enum Opcode { + AAA, + AAD, + AAM, + AAS, + ADC, + ADCX, + ADD, + ADDPD, + ADDPS, + ADDSD, + ADDSS, + ADDSUBPD, + ADDSUBPS, + ADOX, + AESDEC, + AESDEC128KL, + AESDEC256KL, + AESDECLAST, + AESDECWIDE128KL, + AESDECWIDE256KL, + AESENC, + AESENC128KL, + AESENC256KL, + AESENCLAST, + AESENCWIDE128KL, + AESENCWIDE256KL, + AESIMC, + AESKEYGENASSIST, + AND, + ANDN, + ANDNPD, + ANDNPS, + ANDPD, + ANDPS, + ARPL, + BEXTR, + BLENDPD, + BLENDPS, + BLENDVPD, + BLENDVPS, + BLENDW, + BLSI, + BLSMSK, + BLSR, + BNDCL, + BNDCN, + BNDCU, + BNDLDX, + BNDMK, + BNDMOV, + BNDSTX, + BOUND, + BSF, + BSR, + BSWAP, + BT, + BTC, + BTR, + BTS, + BZHI, + CALL, + CALLF, + CBW, + CDQ, + CDQE, + CLAC, + CLC, + CLD, + CLFLUSH, + CLFLUSHOPT, + CLGI, + CLI, + CLRSSBSY, + CLTS, + CLUI, + CLWB, + CLZERO, + CMC, + CMOVA, + CMOVB, + CMOVG, + CMOVGE, + CMOVL, + CMOVLE, + CMOVNA, + CMOVNB, + CMOVNO, + CMOVNP, + CMOVNS, + CMOVNZ, + CMOVO, + CMOVP, + CMOVS, + CMOVZ, + CMP, + CMPPD, + CMPPS, + CMPS, + CMPSD, + CMPSS, + CMPXCHG, + CMPXCHG16B, + CMPXCHG8B, + COMISD, + COMISS, + CPUID, + CQO, + CRC32, + CVTDQ2PD, + CVTDQ2PS, + CVTPD2DQ, + CVTPD2PI, + CVTPD2PS, + CVTPI2PD, + CVTPI2PS, + CVTPS2DQ, + CVTPS2PD, + CVTPS2PI, + CVTSD2SI, + CVTSD2SS, + CVTSI2SD, + CVTSI2SS, + CVTSS2SD, + CVTSS2SI, + CVTTPD2DQ, + CVTTPD2PI, + CVTTPS2DQ, + CVTTPS2PI, + CVTTSD2SI, + CVTTSS2SI, + CWD, + CWDE, + DAA, + DAS, + DEC, + DIV, + DIVPD, + DIVPS, + DIVSD, + DIVSS, + DPPD, + DPPS, + EMMS, + ENCLS, + ENCLU, + ENCLV, + ENCODEKEY128, + ENCODEKEY256, + ENDBR32, + ENDBR64, + ENQCMD, + ENQCMDS, + ENTER, + EXTRACTPS, + EXTRQ, + F2XM1, + FABS, + FADD, + FADDP, + FBLD, + FBSTP, + FCHS, + FCMOVB, + FCMOVBE, + FCMOVE, + FCMOVNB, + FCMOVNBE, + FCMOVNE, + FCMOVNU, + FCMOVU, + FCOM, + FCOMI, + FCOMIP, + FCOMP, + FCOMPP, + FCOS, + FDECSTP, + FDISI8087_NOP, + FDIV, + FDIVP, + FDIVR, + FDIVRP, + FEMMS, + FENI8087_NOP, + FFREE, + FFREEP, + FIADD, + FICOM, + FICOMP, + FIDIV, + FIDIVR, + FILD, + FIMUL, + FINCSTP, + FIST, + FISTP, + FISTTP, + FISUB, + FISUBR, + FLD, + FLD1, + FLDCW, + FLDENV, + FLDL2E, + FLDL2T, + FLDLG2, + FLDLN2, + FLDPI, + FLDZ, + FMUL, + FMULP, + FNCLEX, + FNINIT, + FNOP, + FNSAVE, + FNSTCW, + FNSTENV, + FNSTOR, + FNSTSW, + FPATAN, + FPREM, + FPREM1, + FPTAN, + FRNDINT, + FRSTOR, + FSCALE, + FSETPM287_NOP, + FSIN, + FSINCOS, + FSQRT, + FST, + FSTP, + FSTPNCE, + FSUB, + FSUBP, + FSUBR, + FSUBRP, + FTST, + FUCOM, + FUCOMI, + FUCOMIP, + FUCOMP, + FUCOMPP, + FXAM, + FXCH, + FXRSTOR, + FXSAVE, + FXTRACT, + FYL2X, + FYL2XP1, + GETSEC, + GF2P8AFFINEINVQB, + GF2P8AFFINEQB, + GF2P8MULB, + HADDPD, + HADDPS, + HLT, + HRESET, + HSUBPD, + HSUBPS, + IDIV, + IMUL, + IN, + INC, + INCSSP, + INS, + INSERTPS, + INSERTQ, + INT, + INTO, + Invalid, + INVD, + INVEPT, + INVLPG, + INVLPGA, + INVLPGB, + INVPCID, + INVVPID, + IRET, + IRETD, + IRETQ, + JA, + JB, + JCXZ, + JECXZ, + JG, + JGE, + JL, + JLE, + JMP, + JMPE, + JMPF, + JNA, + JNB, + JNO, + JNP, + JNS, + JNZ, + JO, + JP, + JRCXZ, + JS, + JZ, + KADDB, + KADDD, + KADDQ, + KADDW, + KANDB, + KANDD, + KANDNB, + KANDND, + KANDNQ, + KANDNW, + KANDQ, + KANDW, + KMOVB, + KMOVD, + KMOVQ, + KMOVW, + KNOTB, + KNOTD, + KNOTQ, + KNOTW, + KORB, + KORD, + KORQ, + KORTESTB, + KORTESTD, + KORTESTQ, + KORTESTW, + KORW, + KSHIFTLB, + KSHIFTLD, + KSHIFTLQ, + KSHIFTLW, + KSHIFTRB, + KSHIFTRD, + KSHIFTRQ, + KSHIFTRW, + KTESTB, + KTESTD, + KTESTQ, + KTESTW, + KUNPCKBW, + KUNPCKDQ, + KUNPCKWD, + KXNORB, + KXNORD, + KXNORQ, + KXNORW, + KXORB, + KXORD, + KXORQ, + KXORW, + LAHF, + LAR, + LDDQU, + LDMXCSR, + LDS, + LEA, + LEAVE, + LES, + LFENCE, + LFS, + LGDT, + LGS, + LIDT, + LLDT, + LMSW, + LOADIWKEY, + LODS, + LOOP, + LOOPNZ, + LOOPZ, + LSL, + LSS, + LTR, + LZCNT, + MASKMOVDQU, + MASKMOVQ, + MAXPD, + MAXPS, + MAXSD, + MAXSS, + MFENCE, + MINPD, + MINPS, + MINSD, + MINSS, + MONITOR, + MONITORX, + MOV, + MOVAPD, + MOVAPS, + MOVBE, + MOVD, + MOVDDUP, + MOVDIR64B, + MOVDIRI, + MOVDQ2Q, + MOVDQA, + MOVDQU, + MOVHLPS, + MOVHPD, + MOVHPS, + MOVLHPS, + MOVLPD, + MOVLPS, + MOVMSKPD, + MOVMSKPS, + MOVNTDQ, + MOVNTDQA, + MOVNTI, + MOVNTPD, + MOVNTPS, + MOVNTQ, + MOVNTSD, + MOVNTSS, + MOVQ, + MOVQ2DQ, + MOVS, + MOVSD, + MOVSHDUP, + MOVSLDUP, + MOVSS, + MOVSX, + MOVSXD, + MOVUPD, + MOVUPS, + MOVZX, + MPSADBW, + MUL, + MULPD, + MULPS, + MULSD, + MULSS, + MULX, + MWAIT, + MWAITX, + NEG, + NOP, + NOT, + OR, + ORPD, + ORPS, + OUT, + OUTS, + PABSB, + PABSD, + PABSW, + PACKSSDW, + PACKSSWB, + PACKUSDW, + PACKUSWB, + PADDB, + PADDD, + PADDQ, + PADDSB, + PADDSW, + PADDUSB, + PADDUSW, + PADDW, + PALIGNR, + PAND, + PANDN, + PAVGB, + PAVGUSB, + PAVGW, + PBLENDVB, + PBLENDW, + PCLMULQDQ, + PCMPEQB, + PCMPEQD, + PCMPEQQ, + PCMPEQW, + PCMPESTRI, + PCMPESTRM, + PCMPGTB, + PCMPGTD, + PCMPGTQ, + PCMPGTW, + PCMPISTRI, + PCMPISTRM, + PCONFIG, + PDEP, + PEXT, + PEXTRB, + PEXTRD, + PEXTRQ, + PEXTRW, + PF2ID, + PF2IW, + PFACC, + PFADD, + PFCMPEQ, + PFCMPGE, + PFCMPGT, + PFMAX, + PFMIN, + PFMUL, + PFMULHRW, + PFNACC, + PFPNACC, + PFRCP, + PFRCPIT1, + PFRCPIT2, + PFRSQIT1, + PFRSQRT, + PFSUB, + PFSUBR, + PHADDD, + PHADDSW, + PHADDW, + PHMINPOSUW, + PHSUBD, + PHSUBSW, + PHSUBW, + PI2FD, + PI2FW, + PINSRB, + PINSRD, + PINSRQ, + PINSRW, + PMADDUBSW, + PMADDWD, + PMAXSB, + PMAXSD, + PMAXSW, + PMAXUB, + PMAXUD, + PMAXUW, + PMINSB, + PMINSD, + PMINSW, + PMINUB, + PMINUD, + PMINUW, + PMOVMSKB, + PMOVSXBD, + PMOVSXBQ, + PMOVSXBW, + PMOVSXDQ, + PMOVSXWD, + PMOVSXWQ, + PMOVZXBD, + PMOVZXBQ, + PMOVZXBW, + PMOVZXDQ, + PMOVZXWD, + PMOVZXWQ, + PMULDQ, + PMULHRSW, + PMULHRW, + PMULHUW, + PMULHW, + PMULLD, + PMULLW, + PMULUDQ, + POP, + POPA, + POPCNT, + POPF, + POR, + PREFETCH0, + PREFETCH1, + PREFETCH2, + PREFETCHNTA, + PREFETCHW, + PSADBW, + PSHUFB, + PSHUFD, + PSHUFHW, + PSHUFLW, + PSHUFW, + PSIGNB, + PSIGND, + PSIGNW, + PSLLD, + PSLLDQ, + PSLLQ, + PSLLW, + PSMASH, + PSRAD, + PSRAW, + PSRLD, + PSRLDQ, + PSRLQ, + PSRLW, + PSUBB, + PSUBD, + PSUBQ, + PSUBSB, + PSUBSW, + PSUBUSB, + PSUBUSW, + PSUBW, + PSWAPD, + PTEST, + PTWRITE, + PUNPCKHBW, + PUNPCKHDQ, + PUNPCKHQDQ, + PUNPCKHWD, + PUNPCKLBW, + PUNPCKLDQ, + PUNPCKLQDQ, + PUNPCKLWD, + PUSH, + PUSHA, + PUSHF, + PVALIDATE, + PXOR, + RCL, + RCPPS, + RCPSS, + RCR, + RDFSBASE, + RDGSBASE, + RDMSR, + RDPID, + RDPKRU, + RDPMC, + RDPRU, + RDRAND, + RDSEED, + RDTSC, + RDTSCP, + RETF, + RETURN, + RMPADJUST, + RMPUPDATE, + ROL, + ROR, + RORX, + ROUNDPD, + ROUNDPS, + ROUNDSD, + ROUNDSS, + RSM, + RSQRTPS, + RSQRTSS, + RSTORSSP, + SAHF, + SAL, + SALC, + SAR, + SARX, + SAVEPREVSSP, + SBB, + SCAS, + SEAMCALL, + SEAMOPS, + SEAMRET, + SENDUIPI, + SETA, + SETAE, + SETB, + SETBE, + SETG, + SETGE, + SETL, + SETLE, + SETNO, + SETNP, + SETNS, + SETNZ, + SETO, + SETP, + SETS, + SETSSBSY, + SETZ, + SFENCE, + SGDT, + SHA1MSG1, + SHA1MSG2, + SHA1NEXTE, + SHA1RNDS4, + SHA256MSG1, + SHA256MSG2, + SHA256RNDS2, + SHL, + SHLD, + SHLX, + SHR, + SHRD, + SHRX, + SHUFPD, + SHUFPS, + SIDT, + SKINIT, + SLDT, + SLHD, + SMSW, + SQRTPD, + SQRTPS, + SQRTSD, + SQRTSS, + STAC, + STC, + STD, + STGI, + STI, + STMXCSR, + STOS, + STR, + STUI, + SUB, + SUBPD, + SUBPS, + SUBSD, + SUBSS, + SWAPGS, + SYSCALL, + SYSENTER, + SYSEXIT, + SYSRET, + TDCALL, + TEST, + TESTUI, + TLBSYNC, + TPAUSE, + TZCNT, + UCOMISD, + UCOMISS, + UD0, + UD1, + UD2, + UIRET, + UMONITOR, + UMWAIT, + UNPCKHPD, + UNPCKHPS, + UNPCKLPD, + UNPCKLPS, + V4FMADDPS, + V4FMADDSS, + V4FNMADDPS, + V4FNMADDSS, + VADDPD, + VADDPS, + VADDSD, + VADDSS, + VADDSUBPD, + VADDSUBPS, + VAESDEC, + VAESDECLAST, + VAESENC, + VAESENCLAST, + VAESIMC, + VAESKEYGENASSIST, + VALIGND, + VALIGNQ, + VANDNPD, + VANDNPS, + VANDPD, + VANDPS, + VBLENDMPD, + VBLENDMPS, + VBLENDPD, + VBLENDPS, + VBLENDVPD, + VBLENDVPS, + VBROADCASTF128, + VBROADCASTF32X2, + VBROADCASTF32X4, + VBROADCASTF32X8, + VBROADCASTF64X2, + VBROADCASTF64X4, + VBROADCASTI128, + VBROADCASTI32X2, + VBROADCASTI32X4, + VBROADCASTI32X8, + VBROADCASTI64X2, + VBROADCASTI64X4, + VBROADCASTSD, + VBROADCASTSS, + VCMPPD, + VCMPPS, + VCMPSD, + VCMPSS, + VCOMISD, + VCOMISS, + VCOMPRESSD, + VCOMPRESSPD, + VCOMPRESSPS, + VCOMPRESSQ, + VCVTDQ2PD, + VCVTDQ2PS, + VCVTNE2PS2BF16, + VCVTNEPS2BF16, + VCVTPD2DQ, + VCVTPD2PS, + VCVTPD2QQ, + VCVTPD2UDQ, + VCVTPD2UQQ, + VCVTPH2PS, + VCVTPS2DQ, + VCVTPS2PD, + VCVTPS2PH, + VCVTPS2QQ, + VCVTPS2UDQ, + VCVTPS2UQQ, + VCVTQQ2PD, + VCVTQQ2PS, + VCVTSD2SI, + VCVTSD2SS, + VCVTSD2USI, + VCVTSI2SD, + VCVTSI2SS, + VCVTSS2SD, + VCVTSS2SI, + VCVTSS2USI, + VCVTTPD2DQ, + VCVTTPD2QQ, + VCVTTPD2UDQ, + VCVTTPD2UQQ, + VCVTTPS2DQ, + VCVTTPS2QQ, + VCVTTPS2UDQ, + VCVTTPS2UQQ, + VCVTTSD2SI, + VCVTTSD2USI, + VCVTTSS2SI, + VCVTTSS2USI, + VCVTUDQ2PD, + VCVTUDQ2PS, + VCVTUQQ2PD, + VCVTUQQ2PS, + VCVTUSI2SD, + VCVTUSI2SS, + VCVTUSI2USD, + VCVTUSI2USS, + VDBPSADBW, + VDIVPD, + VDIVPS, + VDIVSD, + VDIVSS, + VDPBF16PS, + VDPPD, + VDPPS, + VERR, + VERW, + VEXP2PD, + VEXP2PS, + VEXP2SD, + VEXP2SS, + VEXPANDPD, + VEXPANDPS, + VEXTRACTF128, + VEXTRACTF32X4, + VEXTRACTF32X8, + VEXTRACTF64X2, + VEXTRACTF64X4, + VEXTRACTI128, + VEXTRACTI32X4, + VEXTRACTI32X8, + VEXTRACTI64X2, + VEXTRACTI64X4, + VEXTRACTPS, + VFIXUPIMMPD, + VFIXUPIMMPS, + VFIXUPIMMSD, + VFIXUPIMMSS, + VFMADD132PD, + VFMADD132PS, + VFMADD132SD, + VFMADD132SS, + VFMADD213PD, + VFMADD213PS, + VFMADD213SD, + VFMADD213SS, + VFMADD231PD, + VFMADD231PS, + VFMADD231SD, + VFMADD231SS, + VFMADDSUB132PD, + VFMADDSUB132PS, + VFMADDSUB213PD, + VFMADDSUB213PS, + VFMADDSUB231PD, + VFMADDSUB231PS, + VFMSUB132PD, + VFMSUB132PS, + VFMSUB132SD, + VFMSUB132SS, + VFMSUB213PD, + VFMSUB213PS, + VFMSUB213SD, + VFMSUB213SS, + VFMSUB231PD, + VFMSUB231PS, + VFMSUB231SD, + VFMSUB231SS, + VFMSUBADD132PD, + VFMSUBADD132PS, + VFMSUBADD213PD, + VFMSUBADD213PS, + VFMSUBADD231PD, + VFMSUBADD231PS, + VFNMADD132PD, + VFNMADD132PS, + VFNMADD132SD, + VFNMADD132SS, + VFNMADD213PD, + VFNMADD213PS, + VFNMADD213SD, + VFNMADD213SS, + VFNMADD231PD, + VFNMADD231PS, + VFNMADD231SD, + VFNMADD231SS, + VFNMSUB132PD, + VFNMSUB132PS, + VFNMSUB132SD, + VFNMSUB132SS, + VFNMSUB213PD, + VFNMSUB213PS, + VFNMSUB213SD, + VFNMSUB213SS, + VFNMSUB231PD, + VFNMSUB231PS, + VFNMSUB231SD, + VFNMSUB231SS, + VFPCLASSPD, + VFPCLASSPS, + VFPCLASSSD, + VFPCLASSSS, + VGATHERDPD, + VGATHERDPS, + VGATHERPF0DPD, + VGATHERPF0DPS, + VGATHERPF0QPD, + VGATHERPF0QPS, + VGATHERPF1DPD, + VGATHERPF1DPS, + VGATHERPF1QPD, + VGATHERPF1QPS, + VGATHERQPD, + VGATHERQPS, + VGETEXPPD, + VGETEXPPS, + VGETEXPSD, + VGETEXPSS, + VGETMANTPD, + VGETMANTPS, + VGETMANTSD, + VGETMANTSS, + VGF2P8AFFINEINVQB, + VGF2P8AFFINEQB, + VGF2P8MULB, + VHADDPD, + VHADDPS, + VHSUBPD, + VHSUBPS, + VINSERTF128, + VINSERTF32X4, + VINSERTF32X8, + VINSERTF64X2, + VINSERTF64X4, + VINSERTI128, + VINSERTI32X4, + VINSERTI32X8, + VINSERTI64X2, + VINSERTI64X4, + VINSERTPS, + VLDDQU, + VLDMXCSR, + VMASKMOVDQU, + VMASKMOVPD, + VMASKMOVPS, + VMAXPD, + VMAXPS, + VMAXSD, + VMAXSS, + VMCALL, + VMCLEAR, + VMFUNC, + VMINPD, + VMINPS, + VMINSD, + VMINSS, + VMLAUNCH, + VMLOAD, + VMMCALL, + VMOVAPD, + VMOVAPS, + VMOVD, + VMOVDDUP, + VMOVDQA, + VMOVDQA32, + VMOVDQA64, + VMOVDQU, + VMOVDQU16, + VMOVDQU32, + VMOVDQU64, + VMOVDQU8, + VMOVHLPS, + VMOVHPD, + VMOVHPS, + VMOVLHPS, + VMOVLPD, + VMOVLPS, + VMOVMSKPD, + VMOVMSKPS, + VMOVNTDQ, + VMOVNTDQA, + VMOVNTPD, + VMOVNTPS, + VMOVQ, + VMOVSD, + VMOVSHDUP, + VMOVSLDUP, + VMOVSS, + VMOVUPD, + VMOVUPS, + VMPSADBW, + VMPTRLD, + VMPTRST, + VMREAD, + VMRESUME, + VMRUN, + VMSAVE, + VMULPD, + VMULPS, + VMULSD, + VMULSS, + VMWRITE, + VMXOFF, + VMXON, + VORPD, + VORPS, + VP2INTERSECTD, + VP2INTERSECTQ, + VP4DPWSSD, + VP4DPWSSDS, + VPABSB, + VPABSD, + VPABSQ, + VPABSW, + VPACKSSDW, + VPACKSSWB, + VPACKUSDW, + VPACKUSWB, + VPADDB, + VPADDD, + VPADDQ, + VPADDSB, + VPADDSW, + VPADDUSB, + VPADDUSW, + VPADDW, + VPALIGNR, + VPAND, + VPANDD, + VPANDN, + VPANDND, + VPANDNQ, + VPANDQ, + VPAVGB, + VPAVGW, + VPBLENDD, + VPBLENDMB, + VPBLENDMD, + VPBLENDMQ, + VPBLENDMW, + VPBLENDVB, + VPBLENDW, + VPBROADCASTB, + VPBROADCASTD, + VPBROADCASTM, + VPBROADCASTMB2Q, + VPBROADCASTMW2D, + VPBROADCASTQ, + VPBROADCASTW, + VPCLMULQDQ, + VPCMPB, + VPCMPD, + VPCMPEQB, + VPCMPEQD, + VPCMPEQQ, + VPCMPEQW, + VPCMPESTRI, + VPCMPESTRM, + VPCMPGTB, + VPCMPGTD, + VPCMPGTQ, + VPCMPGTW, + VPCMPISTRI, + VPCMPISTRM, + VPCMPQ, + VPCMPUB, + VPCMPUD, + VPCMPUQ, + VPCMPUW, + VPCMPW, + VPCOMPRESSB, + VPCOMPRESSD, + VPCOMPRESSQ, + VPCOMPRESSW, + VPCONFLICTD, + VPCONFLICTQ, + VPDPBUSD, + VPDPBUSDS, + VPDPWSSD, + VPDPWSSDS, + VPERM2F128, + VPERM2I128, + VPERMB, + VPERMD, + VPERMI2B, + VPERMI2D, + VPERMI2PD, + VPERMI2PS, + VPERMI2Q, + VPERMI2W, + VPERMILPD, + VPERMILPS, + VPERMPD, + VPERMPS, + VPERMQ, + VPERMT2B, + VPERMT2D, + VPERMT2PD, + VPERMT2PS, + VPERMT2Q, + VPERMT2W, + VPERMW, + VPEXPANDB, + VPEXPANDD, + VPEXPANDQ, + VPEXPANDW, + VPEXTRB, + VPEXTRD, + VPEXTRQ, + VPEXTRW, + VPGATHERDD, + VPGATHERDQ, + VPGATHERQD, + VPGATHERQQ, + VPHADDD, + VPHADDSW, + VPHADDW, + VPHMINPOSUW, + VPHSUBD, + VPHSUBSW, + VPHSUBW, + VPINSRB, + VPINSRD, + VPINSRQ, + VPINSRW, + VPLZCNTD, + VPLZCNTQ, + VPMADD52HUQ, + VPMADD52LUQ, + VPMADDUBSW, + VPMADDWD, + VPMASKMOVD, + VPMASKMOVQ, + VPMAXSB, + VPMAXSD, + VPMAXSQ, + VPMAXSW, + VPMAXUB, + VPMAXUD, + VPMAXUQ, + VPMAXUW, + VPMINSB, + VPMINSD, + VPMINSQ, + VPMINSW, + VPMINUB, + VPMINUD, + VPMINUQ, + VPMINUW, + VPMOVB2D, + VPMOVB2M, + VPMOVD2M, + VPMOVDB, + VPMOVDW, + VPMOVM2B, + VPMOVM2D, + VPMOVM2Q, + VPMOVM2W, + VPMOVMSKB, + VPMOVQ2M, + VPMOVQB, + VPMOVQD, + VPMOVQW, + VPMOVSDB, + VPMOVSDW, + VPMOVSQB, + VPMOVSQD, + VPMOVSQW, + VPMOVSWB, + VPMOVSXBD, + VPMOVSXBQ, + VPMOVSXBW, + VPMOVSXDQ, + VPMOVSXWD, + VPMOVSXWQ, + VPMOVUSDB, + VPMOVUSDW, + VPMOVUSQB, + VPMOVUSQD, + VPMOVUSQW, + VPMOVUSWB, + VPMOVW2M, + VPMOVWB, + VPMOVZXBD, + VPMOVZXBQ, + VPMOVZXBW, + VPMOVZXDQ, + VPMOVZXWD, + VPMOVZXWQ, + VPMULDQ, + VPMULHRSW, + VPMULHUW, + VPMULHW, + VPMULLD, + VPMULLQ, + VPMULLW, + VPMULTISHIFTQB, + VPMULUDQ, + VPOPCNTB, + VPOPCNTD, + VPOPCNTQ, + VPOPCNTW, + VPOR, + VPORD, + VPORQ, + VPROLD, + VPROLQ, + VPROLVD, + VPROLVQ, + VPRORD, + VPRORQ, + VPRORRD, + VPRORRQ, + VPRORVD, + VPRORVQ, + VPSADBW, + VPSCATTERDD, + VPSCATTERDQ, + VPSCATTERQD, + VPSCATTERQQ, + VPSHLDD, + VPSHLDQ, + VPSHLDVD, + VPSHLDVQ, + VPSHLDVW, + VPSHLDW, + VPSHRDD, + VPSHRDQ, + VPSHRDVD, + VPSHRDVQ, + VPSHRDVW, + VPSHRDW, + VPSHUFB, + VPSHUFBITQMB, + VPSHUFD, + VPSHUFHW, + VPSHUFLW, + VPSIGNB, + VPSIGND, + VPSIGNW, + VPSLLD, + VPSLLDQ, + VPSLLQ, + VPSLLVD, + VPSLLVQ, + VPSLLVW, + VPSLLW, + VPSRAD, + VPSRAQ, + VPSRAVD, + VPSRAVQ, + VPSRAVW, + VPSRAW, + VPSRLD, + VPSRLDQ, + VPSRLQ, + VPSRLVD, + VPSRLVQ, + VPSRLVW, + VPSRLW, + VPSUBB, + VPSUBD, + VPSUBQ, + VPSUBSB, + VPSUBSW, + VPSUBUSB, + VPSUBUSW, + VPSUBW, + VPTERNLOGD, + VPTERNLOGQ, + VPTEST, + VPTESTMB, + VPTESTMD, + VPTESTMQ, + VPTESTMW, + VPTESTNMB, + VPTESTNMD, + VPTESTNMQ, + VPTESTNMW, + VPUNPCKHBW, + VPUNPCKHDQ, + VPUNPCKHQDQ, + VPUNPCKHWD, + VPUNPCKLBW, + VPUNPCKLDQ, + VPUNPCKLQDQ, + VPUNPCKLWD, + VPXOR, + VPXORD, + VPXORQ, + VRANGEPD, + VRANGEPS, + VRANGESD, + VRANGESS, + VRCP14PD, + VRCP14PS, + VRCP14SD, + VRCP14SS, + VRCP28PD, + VRCP28PS, + VRCP28SD, + VRCP28SS, + VRCPPS, + VRCPSS, + VREDUCEPD, + VREDUCEPS, + VREDUCESD, + VREDUCESS, + VRNDSCALEPD, + VRNDSCALEPS, + VRNDSCALESD, + VRNDSCALESS, + VROUNDPD, + VROUNDPS, + VROUNDSD, + VROUNDSS, + VRSQRT14PD, + VRSQRT14PS, + VRSQRT14SD, + VRSQRT14SS, + VRSQRT28PD, + VRSQRT28PS, + VRSQRT28SD, + VRSQRT28SS, + VRSQRTPS, + VRSQRTSS, + VSCALEDPD, + VSCALEDPS, + VSCALEDSD, + VSCALEDSS, + VSCALEFPD, + VSCALEFPS, + VSCALEFSD, + VSCALEFSS, + VSCATTERDD, + VSCATTERDPD, + VSCATTERDPS, + VSCATTERDQ, + VSCATTERPF0DPD, + VSCATTERPF0DPS, + VSCATTERPF0QPD, + VSCATTERPF0QPS, + VSCATTERPF1DPD, + VSCATTERPF1DPS, + VSCATTERPF1QPD, + VSCATTERPF1QPS, + VSCATTERQD, + VSCATTERQPD, + VSCATTERQPS, + VSCATTERQQ, + VSHUFF32X4, + VSHUFF64X2, + VSHUFI32X4, + VSHUFI64X2, + VSHUFPD, + VSHUFPS, + VSQRTPD, + VSQRTPS, + VSQRTSD, + VSQRTSS, + VSTMXCSR, + VSUBPD, + VSUBPS, + VSUBSD, + VSUBSS, + VTESTPD, + VTESTPS, + VUCOMISD, + VUCOMISS, + VUNPCKHPD, + VUNPCKHPS, + VUNPCKLPD, + VUNPCKLPS, + VXORPD, + VXORPS, + VZEROALL, + VZEROUPPER, + WAIT, + WBINVD, + WRFSBASE, + WRGSBASE, + WRMSR, + WRPKRU, + WRSS, + WRUSS, + XABORT, + XADD, + XBEGIN, + XCHG, + XEND, + XGETBV, + XLAT, + XOR, + XORPD, + XORPS, + XRESLDTRK, + XRSTOR, + XRSTORS, + XRSTORS64, + XSAVE, + XSAVEC, + XSAVEC64, + XSAVEOPT, + XSAVES, + XSAVES64, + XSETBV, + XSUSLDTRK, + XTEST, +} + +pub(crate) const MNEMONICS: &'static [&'static str] = &[ + "aaa", + "aad", + "aam", + "aas", + "adc", + "adcx", + "add", + "addpd", + "addps", + "addsd", + "addss", + "addsubpd", + "addsubps", + "adox", + "aesdec", + "aesdec128kl", + "aesdec256kl", + "aesdeclast", + "aesdecwide128kl", + "aesdecwide256kl", + "aesenc", + "aesenc128kl", + "aesenc256kl", + "aesenclast", + "aesencwide128kl", + "aesencwide256kl", + "aesimc", + "aeskeygenassist", + "and", + "andn", + "andnpd", + "andnps", + "andpd", + "andps", + "arpl", + "bextr", + "blendpd", + "blendps", + "blendvpd", + "blendvps", + "blendw", + "blsi", + "blsmsk", + "blsr", + "bndcl", + "bndcn", + "bndcu", + "bndldx", + "bndmk", + "bndmov", + "bndstx", + "bound", + "bsf", + "bsr", + "bswap", + "bt", + "btc", + "btr", + "bts", + "bzhi", + "call", + "callf", + "cbw", + "cdq", + "cdqe", + "clac", + "clc", + "cld", + "clflush", + "clflushopt", + "clgi", + "cli", + "clrssbsy", + "clts", + "clui", + "clwb", + "clzero", + "cmc", + "cmova", + "cmovb", + "cmovg", + "cmovge", + "cmovl", + "cmovle", + "cmovna", + "cmovnb", + "cmovno", + "cmovnp", + "cmovns", + "cmovnz", + "cmovo", + "cmovp", + "cmovs", + "cmovz", + "cmp", + "cmppd", + "cmpps", + "cmps", + "cmpsd", + "cmpss", + "cmpxchg", + "cmpxchg16b", + "cmpxchg8b", + "comisd", + "comiss", + "cpuid", + "cqo", + "crc32", + "cvtdq2pd", + "cvtdq2ps", + "cvtpd2dq", + "cvtpd2pi", + "cvtpd2ps", + "cvtpi2pd", + "cvtpi2ps", + "cvtps2dq", + "cvtps2pd", + "cvtps2pi", + "cvtsd2si", + "cvtsd2ss", + "cvtsi2sd", + "cvtsi2ss", + "cvtss2sd", + "cvtss2si", + "cvttpd2dq", + "cvttpd2pi", + "cvttps2dq", + "cvttps2pi", + "cvttsd2si", + "cvttss2si", + "cwd", + "cwde", + "daa", + "das", + "dec", + "div", + "divpd", + "divps", + "divsd", + "divss", + "dppd", + "dpps", + "emms", + "encls", + "enclu", + "enclv", + "encodekey128", + "encodekey256", + "endbr32", + "endbr64", + "enqcmd", + "enqcmds", + "enter", + "extractps", + "extrq", + "f2xm1", + "fabs", + "fadd", + "faddp", + "fbld", + "fbstp", + "fchs", + "fcmovb", + "fcmovbe", + "fcmove", + "fcmovnb", + "fcmovnbe", + "fcmovne", + "fcmovnu", + "fcmovu", + "fcom", + "fcomi", + "fcomip", + "fcomp", + "fcompp", + "fcos", + "fdecstp", + "fdisi8087_nop", + "fdiv", + "fdivp", + "fdivr", + "fdivrp", + "femms", + "feni8087_nop", + "ffree", + "ffreep", + "fiadd", + "ficom", + "ficomp", + "fidiv", + "fidivr", + "fild", + "fimul", + "fincstp", + "fist", + "fistp", + "fisttp", + "fisub", + "fisubr", + "fld", + "fld1", + "fldcw", + "fldenv", + "fldl2e", + "fldl2t", + "fldlg2", + "fldln2", + "fldpi", + "fldz", + "fmul", + "fmulp", + "fnclex", + "fninit", + "fnop", + "fnsave", + "fnstcw", + "fnstenv", + "fnstor", + "fnstsw", + "fpatan", + "fprem", + "fprem1", + "fptan", + "frndint", + "frstor", + "fscale", + "fsetpm287_nop", + "fsin", + "fsincos", + "fsqrt", + "fst", + "fstp", + "fstpnce", + "fsub", + "fsubp", + "fsubr", + "fsubrp", + "ftst", + "fucom", + "fucomi", + "fucomip", + "fucomp", + "fucompp", + "fxam", + "fxch", + "fxrstor", + "fxsave", + "fxtract", + "fyl2x", + "fyl2xp1", + "getsec", + "gf2p8affineinvqb", + "gf2p8affineqb", + "gf2p8mulb", + "haddpd", + "haddps", + "hlt", + "hreset", + "hsubpd", + "hsubps", + "idiv", + "imul", + "in", + "inc", + "incssp", + "ins", + "insertps", + "insertq", + "int", + "into", + "invalid", + "invd", + "invept", + "invlpg", + "invlpga", + "invlpgb", + "invpcid", + "invvpid", + "iret", + "iretd", + "iretq", + "ja", + "jb", + "jcxz", + "jecxz", + "jg", + "jge", + "jl", + "jle", + "jmp", + "jmpe", + "jmpf", + "jna", + "jnb", + "jno", + "jnp", + "jns", + "jnz", + "jo", + "jp", + "jrcxz", + "js", + "jz", + "kaddb", + "kaddd", + "kaddq", + "kaddw", + "kandb", + "kandd", + "kandnb", + "kandnd", + "kandnq", + "kandnw", + "kandq", + "kandw", + "kmovb", + "kmovd", + "kmovq", + "kmovw", + "knotb", + "knotd", + "knotq", + "knotw", + "korb", + "kord", + "korq", + "kortestb", + "kortestd", + "kortestq", + "kortestw", + "korw", + "kshiftlb", + "kshiftld", + "kshiftlq", + "kshiftlw", + "kshiftrb", + "kshiftrd", + "kshiftrq", + "kshiftrw", + "ktestb", + "ktestd", + "ktestq", + "ktestw", + "kunpckbw", + "kunpckdq", + "kunpckwd", + "kxnorb", + "kxnord", + "kxnorq", + "kxnorw", + "kxorb", + "kxord", + "kxorq", + "kxorw", + "lahf", + "lar", + "lddqu", + "ldmxcsr", + "lds", + "lea", + "leave", + "les", + "lfence", + "lfs", + "lgdt", + "lgs", + "lidt", + "lldt", + "lmsw", + "loadiwkey", + "lods", + "loop", + "loopnz", + "loopz", + "lsl", + "lss", + "ltr", + "lzcnt", + "maskmovdqu", + "maskmovq", + "maxpd", + "maxps", + "maxsd", + "maxss", + "mfence", + "minpd", + "minps", + "minsd", + "minss", + "monitor", + "monitorx", + "mov", + "movapd", + "movaps", + "movbe", + "movd", + "movddup", + "movdir64b", + "movdiri", + "movdq2q", + "movdqa", + "movdqu", + "movhlps", + "movhpd", + "movhps", + "movlhps", + "movlpd", + "movlps", + "movmskpd", + "movmskps", + "movntdq", + "movntdqa", + "movnti", + "movntpd", + "movntps", + "movntq", + "movntsd", + "movntss", + "movq", + "movq2dq", + "movs", + "movsd", + "movshdup", + "movsldup", + "movss", + "movsx", + "movsxd", + "movupd", + "movups", + "movzx", + "mpsadbw", + "mul", + "mulpd", + "mulps", + "mulsd", + "mulss", + "mulx", + "mwait", + "mwaitx", + "neg", + "nop", + "not", + "or", + "orpd", + "orps", + "out", + "outs", + "pabsb", + "pabsd", + "pabsw", + "packssdw", + "packsswb", + "packusdw", + "packuswb", + "paddb", + "paddd", + "paddq", + "paddsb", + "paddsw", + "paddusb", + "paddusw", + "paddw", + "palignr", + "pand", + "pandn", + "pavgb", + "pavgusb", + "pavgw", + "pblendvb", + "pblendw", + "pclmulqdq", + "pcmpeqb", + "pcmpeqd", + "pcmpeqq", + "pcmpeqw", + "pcmpestri", + "pcmpestrm", + "pcmpgtb", + "pcmpgtd", + "pcmpgtq", + "pcmpgtw", + "pcmpistri", + "pcmpistrm", + "pconfig", + "pdep", + "pext", + "pextrb", + "pextrd", + "pextrq", + "pextrw", + "pf2id", + "pf2iw", + "pfacc", + "pfadd", + "pfcmpeq", + "pfcmpge", + "pfcmpgt", + "pfmax", + "pfmin", + "pfmul", + "pfmulhrw", + "pfnacc", + "pfpnacc", + "pfrcp", + "pfrcpit1", + "pfrcpit2", + "pfrsqit1", + "pfrsqrt", + "pfsub", + "pfsubr", + "phaddd", + "phaddsw", + "phaddw", + "phminposuw", + "phsubd", + "phsubsw", + "phsubw", + "pi2fd", + "pi2fw", + "pinsrb", + "pinsrd", + "pinsrq", + "pinsrw", + "pmaddubsw", + "pmaddwd", + "pmaxsb", + "pmaxsd", + "pmaxsw", + "pmaxub", + "pmaxud", + "pmaxuw", + "pminsb", + "pminsd", + "pminsw", + "pminub", + "pminud", + "pminuw", + "pmovmskb", + "pmovsxbd", + "pmovsxbq", + "pmovsxbw", + "pmovsxdq", + "pmovsxwd", + "pmovsxwq", + "pmovzxbd", + "pmovzxbq", + "pmovzxbw", + "pmovzxdq", + "pmovzxwd", + "pmovzxwq", + "pmuldq", + "pmulhrsw", + "pmulhrw", + "pmulhuw", + "pmulhw", + "pmulld", + "pmullw", + "pmuludq", + "pop", + "popa", + "popcnt", + "popf", + "por", + "prefetch0", + "prefetch1", + "prefetch2", + "prefetchnta", + "prefetchw", + "psadbw", + "pshufb", + "pshufd", + "pshufhw", + "pshuflw", + "pshufw", + "psignb", + "psignd", + "psignw", + "pslld", + "pslldq", + "psllq", + "psllw", + "psmash", + "psrad", + "psraw", + "psrld", + "psrldq", + "psrlq", + "psrlw", + "psubb", + "psubd", + "psubq", + "psubsb", + "psubsw", + "psubusb", + "psubusw", + "psubw", + "pswapd", + "ptest", + "ptwrite", + "punpckhbw", + "punpckhdq", + "punpckhqdq", + "punpckhwd", + "punpcklbw", + "punpckldq", + "punpcklqdq", + "punpcklwd", + "push", + "pusha", + "pushf", + "pvalidate", + "pxor", + "rcl", + "rcpps", + "rcpss", + "rcr", + "rdfsbase", + "rdgsbase", + "rdmsr", + "rdpid", + "rdpkru", + "rdpmc", + "rdpru", + "rdrand", + "rdseed", + "rdtsc", + "rdtscp", + "retf", + "return", + "rmpadjust", + "rmpupdate", + "rol", + "ror", + "rorx", + "roundpd", + "roundps", + "roundsd", + "roundss", + "rsm", + "rsqrtps", + "rsqrtss", + "rstorssp", + "sahf", + "sal", + "salc", + "sar", + "sarx", + "saveprevssp", + "sbb", + "scas", + "seamcall", + "seamops", + "seamret", + "senduipi", + "seta", + "setae", + "setb", + "setbe", + "setg", + "setge", + "setl", + "setle", + "setno", + "setnp", + "setns", + "setnz", + "seto", + "setp", + "sets", + "setssbsy", + "setz", + "sfence", + "sgdt", + "sha1msg1", + "sha1msg2", + "sha1nexte", + "sha1rnds4", + "sha256msg1", + "sha256msg2", + "sha256rnds2", + "shl", + "shld", + "shlx", + "shr", + "shrd", + "shrx", + "shufpd", + "shufps", + "sidt", + "skinit", + "sldt", + "slhd", + "smsw", + "sqrtpd", + "sqrtps", + "sqrtsd", + "sqrtss", + "stac", + "stc", + "std", + "stgi", + "sti", + "stmxcsr", + "stos", + "str", + "stui", + "sub", + "subpd", + "subps", + "subsd", + "subss", + "swapgs", + "syscall", + "sysenter", + "sysexit", + "sysret", + "tdcall", + "test", + "testui", + "tlbsync", + "tpause", + "tzcnt", + "ucomisd", + "ucomiss", + "ud0", + "ud1", + "ud2", + "uiret", + "umonitor", + "umwait", + "unpckhpd", + "unpckhps", + "unpcklpd", + "unpcklps", + "v4fmaddps", + "v4fmaddss", + "v4fnmaddps", + "v4fnmaddss", + "vaddpd", + "vaddps", + "vaddsd", + "vaddss", + "vaddsubpd", + "vaddsubps", + "vaesdec", + "vaesdeclast", + "vaesenc", + "vaesenclast", + "vaesimc", + "vaeskeygenassist", + "valignd", + "valignq", + "vandnpd", + "vandnps", + "vandpd", + "vandps", + "vblendmpd", + "vblendmps", + "vblendpd", + "vblendps", + "vblendvpd", + "vblendvps", + "vbroadcastf128", + "vbroadcastf32x2", + "vbroadcastf32x4", + "vbroadcastf32x8", + "vbroadcastf64x2", + "vbroadcastf64x4", + "vbroadcasti128", + "vbroadcasti32x2", + "vbroadcasti32x4", + "vbroadcasti32x8", + "vbroadcasti64x2", + "vbroadcasti64x4", + "vbroadcastsd", + "vbroadcastss", + "vcmppd", + "vcmpps", + "vcmpsd", + "vcmpss", + "vcomisd", + "vcomiss", + "vcompressd", + "vcompresspd", + "vcompressps", + "vcompressq", + "vcvtdq2pd", + "vcvtdq2ps", + "vcvtne2ps2bf16", + "vcvtneps2bf16", + "vcvtpd2dq", + "vcvtpd2ps", + "vcvtpd2qq", + "vcvtpd2udq", + "vcvtpd2uqq", + "vcvtph2ps", + "vcvtps2dq", + "vcvtps2pd", + "vcvtps2ph", + "vcvtps2qq", + "vcvtps2udq", + "vcvtps2uqq", + "vcvtqq2pd", + "vcvtqq2ps", + "vcvtsd2si", + "vcvtsd2ss", + "vcvtsd2usi", + "vcvtsi2sd", + "vcvtsi2ss", + "vcvtss2sd", + "vcvtss2si", + "vcvtss2usi", + "vcvttpd2dq", + "vcvttpd2qq", + "vcvttpd2udq", + "vcvttpd2uqq", + "vcvttps2dq", + "vcvttps2qq", + "vcvttps2udq", + "vcvttps2uqq", + "vcvttsd2si", + "vcvttsd2usi", + "vcvttss2si", + "vcvttss2usi", + "vcvtudq2pd", + "vcvtudq2ps", + "vcvtuqq2pd", + "vcvtuqq2ps", + "vcvtusi2sd", + "vcvtusi2ss", + "vcvtusi2usd", + "vcvtusi2uss", + "vdbpsadbw", + "vdivpd", + "vdivps", + "vdivsd", + "vdivss", + "vdpbf16ps", + "vdppd", + "vdpps", + "verr", + "verw", + "vexp2pd", + "vexp2ps", + "vexp2sd", + "vexp2ss", + "vexpandpd", + "vexpandps", + "vextractf128", + "vextractf32x4", + "vextractf32x8", + "vextractf64x2", + "vextractf64x4", + "vextracti128", + "vextracti32x4", + "vextracti32x8", + "vextracti64x2", + "vextracti64x4", + "vextractps", + "vfixupimmpd", + "vfixupimmps", + "vfixupimmsd", + "vfixupimmss", + "vfmadd132pd", + "vfmadd132ps", + "vfmadd132sd", + "vfmadd132ss", + "vfmadd213pd", + "vfmadd213ps", + "vfmadd213sd", + "vfmadd213ss", + "vfmadd231pd", + "vfmadd231ps", + "vfmadd231sd", + "vfmadd231ss", + "vfmaddsub132pd", + "vfmaddsub132ps", + "vfmaddsub213pd", + "vfmaddsub213ps", + "vfmaddsub231pd", + "vfmaddsub231ps", + "vfmsub132pd", + "vfmsub132ps", + "vfmsub132sd", + "vfmsub132ss", + "vfmsub213pd", + "vfmsub213ps", + "vfmsub213sd", + "vfmsub213ss", + "vfmsub231pd", + "vfmsub231ps", + "vfmsub231sd", + "vfmsub231ss", + "vfmsubadd132pd", + "vfmsubadd132ps", + "vfmsubadd213pd", + "vfmsubadd213ps", + "vfmsubadd231pd", + "vfmsubadd231ps", + "vfnmadd132pd", + "vfnmadd132ps", + "vfnmadd132sd", + "vfnmadd132ss", + "vfnmadd213pd", + "vfnmadd213ps", + "vfnmadd213sd", + "vfnmadd213ss", + "vfnmadd231pd", + "vfnmadd231ps", + "vfnmadd231sd", + "vfnmadd231ss", + "vfnmsub132pd", + "vfnmsub132ps", + "vfnmsub132sd", + "vfnmsub132ss", + "vfnmsub213pd", + "vfnmsub213ps", + "vfnmsub213sd", + "vfnmsub213ss", + "vfnmsub231pd", + "vfnmsub231ps", + "vfnmsub231sd", + "vfnmsub231ss", + "vfpclasspd", + "vfpclassps", + "vfpclasssd", + "vfpclassss", + "vgatherdpd", + "vgatherdps", + "vgatherpf0dpd", + "vgatherpf0dps", + "vgatherpf0qpd", + "vgatherpf0qps", + "vgatherpf1dpd", + "vgatherpf1dps", + "vgatherpf1qpd", + "vgatherpf1qps", + "vgatherqpd", + "vgatherqps", + "vgetexppd", + "vgetexpps", + "vgetexpsd", + "vgetexpss", + "vgetmantpd", + "vgetmantps", + "vgetmantsd", + "vgetmantss", + "vgf2p8affineinvqb", + "vgf2p8affineqb", + "vgf2p8mulb", + "vhaddpd", + "vhaddps", + "vhsubpd", + "vhsubps", + "vinsertf128", + "vinsertf32x4", + "vinsertf32x8", + "vinsertf64x2", + "vinsertf64x4", + "vinserti128", + "vinserti32x4", + "vinserti32x8", + "vinserti64x2", + "vinserti64x4", + "vinsertps", + "vlddqu", + "vldmxcsr", + "vmaskmovdqu", + "vmaskmovpd", + "vmaskmovps", + "vmaxpd", + "vmaxps", + "vmaxsd", + "vmaxss", + "vmcall", + "vmclear", + "vmfunc", + "vminpd", + "vminps", + "vminsd", + "vminss", + "vmlaunch", + "vmload", + "vmmcall", + "vmovapd", + "vmovaps", + "vmovd", + "vmovddup", + "vmovdqa", + "vmovdqa32", + "vmovdqa64", + "vmovdqu", + "vmovdqu16", + "vmovdqu32", + "vmovdqu64", + "vmovdqu8", + "vmovhlps", + "vmovhpd", + "vmovhps", + "vmovlhps", + "vmovlpd", + "vmovlps", + "vmovmskpd", + "vmovmskps", + "vmovntdq", + "vmovntdqa", + "vmovntpd", + "vmovntps", + "vmovq", + "vmovsd", + "vmovshdup", + "vmovsldup", + "vmovss", + "vmovupd", + "vmovups", + "vmpsadbw", + "vmptrld", + "vmptrst", + "vmread", + "vmresume", + "vmrun", + "vmsave", + "vmulpd", + "vmulps", + "vmulsd", + "vmulss", + "vmwrite", + "vmxoff", + "vmxon", + "vorpd", + "vorps", + "vp2intersectd", + "vp2intersectq", + "vp4dpwssd", + "vp4dpwssds", + "vpabsb", + "vpabsd", + "vpabsq", + "vpabsw", + "vpackssdw", + "vpacksswb", + "vpackusdw", + "vpackuswb", + "vpaddb", + "vpaddd", + "vpaddq", + "vpaddsb", + "vpaddsw", + "vpaddusb", + "vpaddusw", + "vpaddw", + "vpalignr", + "vpand", + "vpandd", + "vpandn", + "vpandnd", + "vpandnq", + "vpandq", + "vpavgb", + "vpavgw", + "vpblendd", + "vpblendmb", + "vpblendmd", + "vpblendmq", + "vpblendmw", + "vpblendvb", + "vpblendw", + "vpbroadcastb", + "vpbroadcastd", + "vpbroadcastm", + "vpbroadcastmb2q", + "vpbroadcastmw2d", + "vpbroadcastq", + "vpbroadcastw", + "vpclmulqdq", + "vpcmpb", + "vpcmpd", + "vpcmpeqb", + "vpcmpeqd", + "vpcmpeqq", + "vpcmpeqw", + "vpcmpestri", + "vpcmpestrm", + "vpcmpgtb", + "vpcmpgtd", + "vpcmpgtq", + "vpcmpgtw", + "vpcmpistri", + "vpcmpistrm", + "vpcmpq", + "vpcmpub", + "vpcmpud", + "vpcmpuq", + "vpcmpuw", + "vpcmpw", + "vpcompressb", + "vpcompressd", + "vpcompressq", + "vpcompressw", + "vpconflictd", + "vpconflictq", + "vpdpbusd", + "vpdpbusds", + "vpdpwssd", + "vpdpwssds", + "vperm2f128", + "vperm2i128", + "vpermb", + "vpermd", + "vpermi2b", + "vpermi2d", + "vpermi2pd", + "vpermi2ps", + "vpermi2q", + "vpermi2w", + "vpermilpd", + "vpermilps", + "vpermpd", + "vpermps", + "vpermq", + "vpermt2b", + "vpermt2d", + "vpermt2pd", + "vpermt2ps", + "vpermt2q", + "vpermt2w", + "vpermw", + "vpexpandb", + "vpexpandd", + "vpexpandq", + "vpexpandw", + "vpextrb", + "vpextrd", + "vpextrq", + "vpextrw", + "vpgatherdd", + "vpgatherdq", + "vpgatherqd", + "vpgatherqq", + "vphaddd", + "vphaddsw", + "vphaddw", + "vphminposuw", + "vphsubd", + "vphsubsw", + "vphsubw", + "vpinsrb", + "vpinsrd", + "vpinsrq", + "vpinsrw", + "vplzcntd", + "vplzcntq", + "vpmadd52huq", + "vpmadd52luq", + "vpmaddubsw", + "vpmaddwd", + "vpmaskmovd", + "vpmaskmovq", + "vpmaxsb", + "vpmaxsd", + "vpmaxsq", + "vpmaxsw", + "vpmaxub", + "vpmaxud", + "vpmaxuq", + "vpmaxuw", + "vpminsb", + "vpminsd", + "vpminsq", + "vpminsw", + "vpminub", + "vpminud", + "vpminuq", + "vpminuw", + "vpmovb2d", + "vpmovb2m", + "vpmovd2m", + "vpmovdb", + "vpmovdw", + "vpmovm2b", + "vpmovm2d", + "vpmovm2q", + "vpmovm2w", + "vpmovmskb", + "vpmovq2m", + "vpmovqb", + "vpmovqd", + "vpmovqw", + "vpmovsdb", + "vpmovsdw", + "vpmovsqb", + "vpmovsqd", + "vpmovsqw", + "vpmovswb", + "vpmovsxbd", + "vpmovsxbq", + "vpmovsxbw", + "vpmovsxdq", + "vpmovsxwd", + "vpmovsxwq", + "vpmovusdb", + "vpmovusdw", + "vpmovusqb", + "vpmovusqd", + "vpmovusqw", + "vpmovuswb", + "vpmovw2m", + "vpmovwb", + "vpmovzxbd", + "vpmovzxbq", + "vpmovzxbw", + "vpmovzxdq", + "vpmovzxwd", + "vpmovzxwq", + "vpmuldq", + "vpmulhrsw", + "vpmulhuw", + "vpmulhw", + "vpmulld", + "vpmullq", + "vpmullw", + "vpmultishiftqb", + "vpmuludq", + "vpopcntb", + "vpopcntd", + "vpopcntq", + "vpopcntw", + "vpor", + "vpord", + "vporq", + "vprold", + "vprolq", + "vprolvd", + "vprolvq", + "vprord", + "vprorq", + "vprorrd", + "vprorrq", + "vprorvd", + "vprorvq", + "vpsadbw", + "vpscatterdd", + "vpscatterdq", + "vpscatterqd", + "vpscatterqq", + "vpshldd", + "vpshldq", + "vpshldvd", + "vpshldvq", + "vpshldvw", + "vpshldw", + "vpshrdd", + "vpshrdq", + "vpshrdvd", + "vpshrdvq", + "vpshrdvw", + "vpshrdw", + "vpshufb", + "vpshufbitqmb", + "vpshufd", + "vpshufhw", + "vpshuflw", + "vpsignb", + "vpsignd", + "vpsignw", + "vpslld", + "vpslldq", + "vpsllq", + "vpsllvd", + "vpsllvq", + "vpsllvw", + "vpsllw", + "vpsrad", + "vpsraq", + "vpsravd", + "vpsravq", + "vpsravw", + "vpsraw", + "vpsrld", + "vpsrldq", + "vpsrlq", + "vpsrlvd", + "vpsrlvq", + "vpsrlvw", + "vpsrlw", + "vpsubb", + "vpsubd", + "vpsubq", + "vpsubsb", + "vpsubsw", + "vpsubusb", + "vpsubusw", + "vpsubw", + "vpternlogd", + "vpternlogq", + "vptest", + "vptestmb", + "vptestmd", + "vptestmq", + "vptestmw", + "vptestnmb", + "vptestnmd", + "vptestnmq", + "vptestnmw", + "vpunpckhbw", + "vpunpckhdq", + "vpunpckhqdq", + "vpunpckhwd", + "vpunpcklbw", + "vpunpckldq", + "vpunpcklqdq", + "vpunpcklwd", + "vpxor", + "vpxord", + "vpxorq", + "vrangepd", + "vrangeps", + "vrangesd", + "vrangess", + "vrcp14pd", + "vrcp14ps", + "vrcp14sd", + "vrcp14ss", + "vrcp28pd", + "vrcp28ps", + "vrcp28sd", + "vrcp28ss", + "vrcpps", + "vrcpss", + "vreducepd", + "vreduceps", + "vreducesd", + "vreducess", + "vrndscalepd", + "vrndscaleps", + "vrndscalesd", + "vrndscaless", + "vroundpd", + "vroundps", + "vroundsd", + "vroundss", + "vrsqrt14pd", + "vrsqrt14ps", + "vrsqrt14sd", + "vrsqrt14ss", + "vrsqrt28pd", + "vrsqrt28ps", + "vrsqrt28sd", + "vrsqrt28ss", + "vrsqrtps", + "vrsqrtss", + "vscaledpd", + "vscaledps", + "vscaledsd", + "vscaledss", + "vscalefpd", + "vscalefps", + "vscalefsd", + "vscalefss", + "vscatterdd", + "vscatterdpd", + "vscatterdps", + "vscatterdq", + "vscatterpf0dpd", + "vscatterpf0dps", + "vscatterpf0qpd", + "vscatterpf0qps", + "vscatterpf1dpd", + "vscatterpf1dps", + "vscatterpf1qpd", + "vscatterpf1qps", + "vscatterqd", + "vscatterqpd", + "vscatterqps", + "vscatterqq", + "vshuff32x4", + "vshuff64x2", + "vshufi32x4", + "vshufi64x2", + "vshufpd", + "vshufps", + "vsqrtpd", + "vsqrtps", + "vsqrtsd", + "vsqrtss", + "vstmxcsr", + "vsubpd", + "vsubps", + "vsubsd", + "vsubss", + "vtestpd", + "vtestps", + "vucomisd", + "vucomiss", + "vunpckhpd", + "vunpckhps", + "vunpcklpd", + "vunpcklps", + "vxorpd", + "vxorps", + "vzeroall", + "vzeroupper", + "wait", + "wbinvd", + "wrfsbase", + "wrgsbase", + "wrmsr", + "wrpkru", + "wrss", + "wruss", + "xabort", + "xadd", + "xbegin", + "xchg", + "xend", + "xgetbv", + "xlat", + "xor", + "xorpd", + "xorps", + "xresldtrk", + "xrstor", + "xrstors", + "xrstors64", + "xsave", + "xsavec", + "xsavec64", + "xsaveopt", + "xsaves", + "xsaves64", + "xsetbv", + "xsusldtrk", + "xtest", +]; + +pub(crate) mod real_mode { + #[allow(non_camel_case_types)] + #[derive(Copy, Clone, Debug, Eq, PartialEq)] + #[non_exhaustive] + #[repr(u16)] + pub enum Opcode { + AAA = super::Opcode::AAA as u16, + AAD = super::Opcode::AAD as u16, + AAM = super::Opcode::AAM as u16, + AAS = super::Opcode::AAS as u16, + ADC = super::Opcode::ADC as u16, + ADCX = super::Opcode::ADCX as u16, + ADD = super::Opcode::ADD as u16, + ADDPD = super::Opcode::ADDPD as u16, + ADDPS = super::Opcode::ADDPS as u16, + ADDSD = super::Opcode::ADDSD as u16, + ADDSS = super::Opcode::ADDSS as u16, + ADDSUBPD = super::Opcode::ADDSUBPD as u16, + ADDSUBPS = super::Opcode::ADDSUBPS as u16, + ADOX = super::Opcode::ADOX as u16, + AESDEC = super::Opcode::AESDEC as u16, + AESDEC128KL = super::Opcode::AESDEC128KL as u16, + AESDEC256KL = super::Opcode::AESDEC256KL as u16, + AESDECLAST = super::Opcode::AESDECLAST as u16, + AESDECWIDE128KL = super::Opcode::AESDECWIDE128KL as u16, + AESDECWIDE256KL = super::Opcode::AESDECWIDE256KL as u16, + AESENC = super::Opcode::AESENC as u16, + AESENC128KL = super::Opcode::AESENC128KL as u16, + AESENC256KL = super::Opcode::AESENC256KL as u16, + AESENCLAST = super::Opcode::AESENCLAST as u16, + AESENCWIDE128KL = super::Opcode::AESENCWIDE128KL as u16, + AESENCWIDE256KL = super::Opcode::AESENCWIDE256KL as u16, + AESIMC = super::Opcode::AESIMC as u16, + AESKEYGENASSIST = super::Opcode::AESKEYGENASSIST as u16, + AND = super::Opcode::AND as u16, + ANDN = super::Opcode::ANDN as u16, + ANDNPD = super::Opcode::ANDNPD as u16, + ANDNPS = super::Opcode::ANDNPS as u16, + ANDPD = super::Opcode::ANDPD as u16, + ANDPS = super::Opcode::ANDPS as u16, + ARPL = super::Opcode::ARPL as u16, + BEXTR = super::Opcode::BEXTR as u16, + BLENDPD = super::Opcode::BLENDPD as u16, + BLENDPS = super::Opcode::BLENDPS as u16, + BLENDVPD = super::Opcode::BLENDVPD as u16, + BLENDVPS = super::Opcode::BLENDVPS as u16, + BLENDW = super::Opcode::BLENDW as u16, + BLSI = super::Opcode::BLSI as u16, + BLSMSK = super::Opcode::BLSMSK as u16, + BLSR = super::Opcode::BLSR as u16, + BNDCL = super::Opcode::BNDCL as u16, + BNDCN = super::Opcode::BNDCN as u16, + BNDCU = super::Opcode::BNDCU as u16, + BNDLDX = super::Opcode::BNDLDX as u16, + BNDMK = super::Opcode::BNDMK as u16, + BNDMOV = super::Opcode::BNDMOV as u16, + BNDSTX = super::Opcode::BNDSTX as u16, + BOUND = super::Opcode::BOUND as u16, + BSF = super::Opcode::BSF as u16, + BSR = super::Opcode::BSR as u16, + BSWAP = super::Opcode::BSWAP as u16, + BT = super::Opcode::BT as u16, + BTC = super::Opcode::BTC as u16, + BTR = super::Opcode::BTR as u16, + BTS = super::Opcode::BTS as u16, + BZHI = super::Opcode::BZHI as u16, + CALL = super::Opcode::CALL as u16, + CALLF = super::Opcode::CALLF as u16, + CBW = super::Opcode::CBW as u16, + CDQ = super::Opcode::CDQ as u16, + CDQE = super::Opcode::CDQE as u16, + CLAC = super::Opcode::CLAC as u16, + CLC = super::Opcode::CLC as u16, + CLD = super::Opcode::CLD as u16, + CLFLUSH = super::Opcode::CLFLUSH as u16, + CLFLUSHOPT = super::Opcode::CLFLUSHOPT as u16, + CLGI = super::Opcode::CLGI as u16, + CLI = super::Opcode::CLI as u16, + CLRSSBSY = super::Opcode::CLRSSBSY as u16, + CLTS = super::Opcode::CLTS as u16, + CLUI = super::Opcode::CLUI as u16, + CLWB = super::Opcode::CLWB as u16, + CLZERO = super::Opcode::CLZERO as u16, + CMC = super::Opcode::CMC as u16, + CMOVA = super::Opcode::CMOVA as u16, + CMOVB = super::Opcode::CMOVB as u16, + CMOVG = super::Opcode::CMOVG as u16, + CMOVGE = super::Opcode::CMOVGE as u16, + CMOVL = super::Opcode::CMOVL as u16, + CMOVLE = super::Opcode::CMOVLE as u16, + CMOVNA = super::Opcode::CMOVNA as u16, + CMOVNB = super::Opcode::CMOVNB as u16, + CMOVNO = super::Opcode::CMOVNO as u16, + CMOVNP = super::Opcode::CMOVNP as u16, + CMOVNS = super::Opcode::CMOVNS as u16, + CMOVNZ = super::Opcode::CMOVNZ as u16, + CMOVO = super::Opcode::CMOVO as u16, + CMOVP = super::Opcode::CMOVP as u16, + CMOVS = super::Opcode::CMOVS as u16, + CMOVZ = super::Opcode::CMOVZ as u16, + CMP = super::Opcode::CMP as u16, + CMPPD = super::Opcode::CMPPD as u16, + CMPPS = super::Opcode::CMPPS as u16, + CMPS = super::Opcode::CMPS as u16, + CMPSD = super::Opcode::CMPSD as u16, + CMPSS = super::Opcode::CMPSS as u16, + CMPXCHG = super::Opcode::CMPXCHG as u16, + CMPXCHG16B = super::Opcode::CMPXCHG16B as u16, + CMPXCHG8B = super::Opcode::CMPXCHG8B as u16, + COMISD = super::Opcode::COMISD as u16, + COMISS = super::Opcode::COMISS as u16, + CPUID = super::Opcode::CPUID as u16, + CQO = super::Opcode::CQO as u16, + CRC32 = super::Opcode::CRC32 as u16, + CVTDQ2PD = super::Opcode::CVTDQ2PD as u16, + CVTDQ2PS = super::Opcode::CVTDQ2PS as u16, + CVTPD2DQ = super::Opcode::CVTPD2DQ as u16, + CVTPD2PI = super::Opcode::CVTPD2PI as u16, + CVTPD2PS = super::Opcode::CVTPD2PS as u16, + CVTPI2PD = super::Opcode::CVTPI2PD as u16, + CVTPI2PS = super::Opcode::CVTPI2PS as u16, + CVTPS2DQ = super::Opcode::CVTPS2DQ as u16, + CVTPS2PD = super::Opcode::CVTPS2PD as u16, + CVTPS2PI = super::Opcode::CVTPS2PI as u16, + CVTSD2SI = super::Opcode::CVTSD2SI as u16, + CVTSD2SS = super::Opcode::CVTSD2SS as u16, + CVTSI2SD = super::Opcode::CVTSI2SD as u16, + CVTSI2SS = super::Opcode::CVTSI2SS as u16, + CVTSS2SD = super::Opcode::CVTSS2SD as u16, + CVTSS2SI = super::Opcode::CVTSS2SI as u16, + CVTTPD2DQ = super::Opcode::CVTTPD2DQ as u16, + CVTTPD2PI = super::Opcode::CVTTPD2PI as u16, + CVTTPS2DQ = super::Opcode::CVTTPS2DQ as u16, + CVTTPS2PI = super::Opcode::CVTTPS2PI as u16, + CVTTSD2SI = super::Opcode::CVTTSD2SI as u16, + CVTTSS2SI = super::Opcode::CVTTSS2SI as u16, + CWD = super::Opcode::CWD as u16, + CWDE = super::Opcode::CWDE as u16, + DAA = super::Opcode::DAA as u16, + DAS = super::Opcode::DAS as u16, + DEC = super::Opcode::DEC as u16, + DIV = super::Opcode::DIV as u16, + DIVPD = super::Opcode::DIVPD as u16, + DIVPS = super::Opcode::DIVPS as u16, + DIVSD = super::Opcode::DIVSD as u16, + DIVSS = super::Opcode::DIVSS as u16, + DPPD = super::Opcode::DPPD as u16, + DPPS = super::Opcode::DPPS as u16, + EMMS = super::Opcode::EMMS as u16, + ENCLS = super::Opcode::ENCLS as u16, + ENCLU = super::Opcode::ENCLU as u16, + ENCLV = super::Opcode::ENCLV as u16, + ENCODEKEY128 = super::Opcode::ENCODEKEY128 as u16, + ENCODEKEY256 = super::Opcode::ENCODEKEY256 as u16, + ENDBR32 = super::Opcode::ENDBR32 as u16, + ENDBR64 = super::Opcode::ENDBR64 as u16, + ENQCMD = super::Opcode::ENQCMD as u16, + ENQCMDS = super::Opcode::ENQCMDS as u16, + ENTER = super::Opcode::ENTER as u16, + EXTRACTPS = super::Opcode::EXTRACTPS as u16, + EXTRQ = super::Opcode::EXTRQ as u16, + F2XM1 = super::Opcode::F2XM1 as u16, + FABS = super::Opcode::FABS as u16, + FADD = super::Opcode::FADD as u16, + FADDP = super::Opcode::FADDP as u16, + FBLD = super::Opcode::FBLD as u16, + FBSTP = super::Opcode::FBSTP as u16, + FCHS = super::Opcode::FCHS as u16, + FCMOVB = super::Opcode::FCMOVB as u16, + FCMOVBE = super::Opcode::FCMOVBE as u16, + FCMOVE = super::Opcode::FCMOVE as u16, + FCMOVNB = super::Opcode::FCMOVNB as u16, + FCMOVNBE = super::Opcode::FCMOVNBE as u16, + FCMOVNE = super::Opcode::FCMOVNE as u16, + FCMOVNU = super::Opcode::FCMOVNU as u16, + FCMOVU = super::Opcode::FCMOVU as u16, + FCOM = super::Opcode::FCOM as u16, + FCOMI = super::Opcode::FCOMI as u16, + FCOMIP = super::Opcode::FCOMIP as u16, + FCOMP = super::Opcode::FCOMP as u16, + FCOMPP = super::Opcode::FCOMPP as u16, + FCOS = super::Opcode::FCOS as u16, + FDECSTP = super::Opcode::FDECSTP as u16, + FDISI8087_NOP = super::Opcode::FDISI8087_NOP as u16, + FDIV = super::Opcode::FDIV as u16, + FDIVP = super::Opcode::FDIVP as u16, + FDIVR = super::Opcode::FDIVR as u16, + FDIVRP = super::Opcode::FDIVRP as u16, + FEMMS = super::Opcode::FEMMS as u16, + FENI8087_NOP = super::Opcode::FENI8087_NOP as u16, + FFREE = super::Opcode::FFREE as u16, + FFREEP = super::Opcode::FFREEP as u16, + FIADD = super::Opcode::FIADD as u16, + FICOM = super::Opcode::FICOM as u16, + FICOMP = super::Opcode::FICOMP as u16, + FIDIV = super::Opcode::FIDIV as u16, + FIDIVR = super::Opcode::FIDIVR as u16, + FILD = super::Opcode::FILD as u16, + FIMUL = super::Opcode::FIMUL as u16, + FINCSTP = super::Opcode::FINCSTP as u16, + FIST = super::Opcode::FIST as u16, + FISTP = super::Opcode::FISTP as u16, + FISTTP = super::Opcode::FISTTP as u16, + FISUB = super::Opcode::FISUB as u16, + FISUBR = super::Opcode::FISUBR as u16, + FLD = super::Opcode::FLD as u16, + FLD1 = super::Opcode::FLD1 as u16, + FLDCW = super::Opcode::FLDCW as u16, + FLDENV = super::Opcode::FLDENV as u16, + FLDL2E = super::Opcode::FLDL2E as u16, + FLDL2T = super::Opcode::FLDL2T as u16, + FLDLG2 = super::Opcode::FLDLG2 as u16, + FLDLN2 = super::Opcode::FLDLN2 as u16, + FLDPI = super::Opcode::FLDPI as u16, + FLDZ = super::Opcode::FLDZ as u16, + FMUL = super::Opcode::FMUL as u16, + FMULP = super::Opcode::FMULP as u16, + FNCLEX = super::Opcode::FNCLEX as u16, + FNINIT = super::Opcode::FNINIT as u16, + FNOP = super::Opcode::FNOP as u16, + FNSAVE = super::Opcode::FNSAVE as u16, + FNSTCW = super::Opcode::FNSTCW as u16, + FNSTENV = super::Opcode::FNSTENV as u16, + FNSTOR = super::Opcode::FNSTOR as u16, + FNSTSW = super::Opcode::FNSTSW as u16, + FPATAN = super::Opcode::FPATAN as u16, + FPREM = super::Opcode::FPREM as u16, + FPREM1 = super::Opcode::FPREM1 as u16, + FPTAN = super::Opcode::FPTAN as u16, + FRNDINT = super::Opcode::FRNDINT as u16, + FRSTOR = super::Opcode::FRSTOR as u16, + FSCALE = super::Opcode::FSCALE as u16, + FSETPM287_NOP = super::Opcode::FSETPM287_NOP as u16, + FSIN = super::Opcode::FSIN as u16, + FSINCOS = super::Opcode::FSINCOS as u16, + FSQRT = super::Opcode::FSQRT as u16, + FST = super::Opcode::FST as u16, + FSTP = super::Opcode::FSTP as u16, + FSTPNCE = super::Opcode::FSTPNCE as u16, + FSUB = super::Opcode::FSUB as u16, + FSUBP = super::Opcode::FSUBP as u16, + FSUBR = super::Opcode::FSUBR as u16, + FSUBRP = super::Opcode::FSUBRP as u16, + FTST = super::Opcode::FTST as u16, + FUCOM = super::Opcode::FUCOM as u16, + FUCOMI = super::Opcode::FUCOMI as u16, + FUCOMIP = super::Opcode::FUCOMIP as u16, + FUCOMP = super::Opcode::FUCOMP as u16, + FUCOMPP = super::Opcode::FUCOMPP as u16, + FXAM = super::Opcode::FXAM as u16, + FXCH = super::Opcode::FXCH as u16, + FXRSTOR = super::Opcode::FXRSTOR as u16, + FXSAVE = super::Opcode::FXSAVE as u16, + FXTRACT = super::Opcode::FXTRACT as u16, + FYL2X = super::Opcode::FYL2X as u16, + FYL2XP1 = super::Opcode::FYL2XP1 as u16, + GETSEC = super::Opcode::GETSEC as u16, + GF2P8AFFINEINVQB = super::Opcode::GF2P8AFFINEINVQB as u16, + GF2P8AFFINEQB = super::Opcode::GF2P8AFFINEQB as u16, + GF2P8MULB = super::Opcode::GF2P8MULB as u16, + HADDPD = super::Opcode::HADDPD as u16, + HADDPS = super::Opcode::HADDPS as u16, + HLT = super::Opcode::HLT as u16, + HRESET = super::Opcode::HRESET as u16, + HSUBPD = super::Opcode::HSUBPD as u16, + HSUBPS = super::Opcode::HSUBPS as u16, + IDIV = super::Opcode::IDIV as u16, + IMUL = super::Opcode::IMUL as u16, + IN = super::Opcode::IN as u16, + INC = super::Opcode::INC as u16, + INCSSP = super::Opcode::INCSSP as u16, + INS = super::Opcode::INS as u16, + INSERTPS = super::Opcode::INSERTPS as u16, + INSERTQ = super::Opcode::INSERTQ as u16, + INT = super::Opcode::INT as u16, + INTO = super::Opcode::INTO as u16, + Invalid = super::Opcode::Invalid as u16, + INVD = super::Opcode::INVD as u16, + INVEPT = super::Opcode::INVEPT as u16, + INVLPG = super::Opcode::INVLPG as u16, + INVLPGA = super::Opcode::INVLPGA as u16, + INVLPGB = super::Opcode::INVLPGB as u16, + INVPCID = super::Opcode::INVPCID as u16, + INVVPID = super::Opcode::INVVPID as u16, + IRET = super::Opcode::IRET as u16, + IRETD = super::Opcode::IRETD as u16, + IRETQ = super::Opcode::IRETQ as u16, + JA = super::Opcode::JA as u16, + JB = super::Opcode::JB as u16, + JCXZ = super::Opcode::JCXZ as u16, + JG = super::Opcode::JG as u16, + JGE = super::Opcode::JGE as u16, + JL = super::Opcode::JL as u16, + JLE = super::Opcode::JLE as u16, + JMP = super::Opcode::JMP as u16, + JMPE = super::Opcode::JMPE as u16, + JMPF = super::Opcode::JMPF as u16, + JNA = super::Opcode::JNA as u16, + JNB = super::Opcode::JNB as u16, + JNO = super::Opcode::JNO as u16, + JNP = super::Opcode::JNP as u16, + JNS = super::Opcode::JNS as u16, + JNZ = super::Opcode::JNZ as u16, + JO = super::Opcode::JO as u16, + JP = super::Opcode::JP as u16, + JS = super::Opcode::JS as u16, + JZ = super::Opcode::JZ as u16, + KADDB = super::Opcode::KADDB as u16, + KADDD = super::Opcode::KADDD as u16, + KADDQ = super::Opcode::KADDQ as u16, + KADDW = super::Opcode::KADDW as u16, + KANDB = super::Opcode::KANDB as u16, + KANDD = super::Opcode::KANDD as u16, + KANDNB = super::Opcode::KANDNB as u16, + KANDND = super::Opcode::KANDND as u16, + KANDNQ = super::Opcode::KANDNQ as u16, + KANDNW = super::Opcode::KANDNW as u16, + KANDQ = super::Opcode::KANDQ as u16, + KANDW = super::Opcode::KANDW as u16, + KMOVB = super::Opcode::KMOVB as u16, + KMOVD = super::Opcode::KMOVD as u16, + KMOVQ = super::Opcode::KMOVQ as u16, + KMOVW = super::Opcode::KMOVW as u16, + KNOTB = super::Opcode::KNOTB as u16, + KNOTD = super::Opcode::KNOTD as u16, + KNOTQ = super::Opcode::KNOTQ as u16, + KNOTW = super::Opcode::KNOTW as u16, + KORB = super::Opcode::KORB as u16, + KORD = super::Opcode::KORD as u16, + KORQ = super::Opcode::KORQ as u16, + KORTESTB = super::Opcode::KORTESTB as u16, + KORTESTD = super::Opcode::KORTESTD as u16, + KORTESTQ = super::Opcode::KORTESTQ as u16, + KORTESTW = super::Opcode::KORTESTW as u16, + KORW = super::Opcode::KORW as u16, + KSHIFTLB = super::Opcode::KSHIFTLB as u16, + KSHIFTLD = super::Opcode::KSHIFTLD as u16, + KSHIFTLQ = super::Opcode::KSHIFTLQ as u16, + KSHIFTLW = super::Opcode::KSHIFTLW as u16, + KSHIFTRB = super::Opcode::KSHIFTRB as u16, + KSHIFTRD = super::Opcode::KSHIFTRD as u16, + KSHIFTRQ = super::Opcode::KSHIFTRQ as u16, + KSHIFTRW = super::Opcode::KSHIFTRW as u16, + KTESTB = super::Opcode::KTESTB as u16, + KTESTD = super::Opcode::KTESTD as u16, + KTESTQ = super::Opcode::KTESTQ as u16, + KTESTW = super::Opcode::KTESTW as u16, + KUNPCKBW = super::Opcode::KUNPCKBW as u16, + KUNPCKDQ = super::Opcode::KUNPCKDQ as u16, + KUNPCKWD = super::Opcode::KUNPCKWD as u16, + KXNORB = super::Opcode::KXNORB as u16, + KXNORD = super::Opcode::KXNORD as u16, + KXNORQ = super::Opcode::KXNORQ as u16, + KXNORW = super::Opcode::KXNORW as u16, + KXORB = super::Opcode::KXORB as u16, + KXORD = super::Opcode::KXORD as u16, + KXORQ = super::Opcode::KXORQ as u16, + KXORW = super::Opcode::KXORW as u16, + LAHF = super::Opcode::LAHF as u16, + LAR = super::Opcode::LAR as u16, + LDDQU = super::Opcode::LDDQU as u16, + LDMXCSR = super::Opcode::LDMXCSR as u16, + LDS = super::Opcode::LDS as u16, + LEA = super::Opcode::LEA as u16, + LEAVE = super::Opcode::LEAVE as u16, + LES = super::Opcode::LES as u16, + LFENCE = super::Opcode::LFENCE as u16, + LFS = super::Opcode::LFS as u16, + LGDT = super::Opcode::LGDT as u16, + LGS = super::Opcode::LGS as u16, + LIDT = super::Opcode::LIDT as u16, + LLDT = super::Opcode::LLDT as u16, + LMSW = super::Opcode::LMSW as u16, + LOADIWKEY = super::Opcode::LOADIWKEY as u16, + LODS = super::Opcode::LODS as u16, + LOOP = super::Opcode::LOOP as u16, + LOOPNZ = super::Opcode::LOOPNZ as u16, + LOOPZ = super::Opcode::LOOPZ as u16, + LSL = super::Opcode::LSL as u16, + LSS = super::Opcode::LSS as u16, + LTR = super::Opcode::LTR as u16, + LZCNT = super::Opcode::LZCNT as u16, + MASKMOVDQU = super::Opcode::MASKMOVDQU as u16, + MASKMOVQ = super::Opcode::MASKMOVQ as u16, + MAXPD = super::Opcode::MAXPD as u16, + MAXPS = super::Opcode::MAXPS as u16, + MAXSD = super::Opcode::MAXSD as u16, + MAXSS = super::Opcode::MAXSS as u16, + MFENCE = super::Opcode::MFENCE as u16, + MINPD = super::Opcode::MINPD as u16, + MINPS = super::Opcode::MINPS as u16, + MINSD = super::Opcode::MINSD as u16, + MINSS = super::Opcode::MINSS as u16, + MONITOR = super::Opcode::MONITOR as u16, + MONITORX = super::Opcode::MONITORX as u16, + MOV = super::Opcode::MOV as u16, + MOVAPD = super::Opcode::MOVAPD as u16, + MOVAPS = super::Opcode::MOVAPS as u16, + MOVBE = super::Opcode::MOVBE as u16, + MOVD = super::Opcode::MOVD as u16, + MOVDDUP = super::Opcode::MOVDDUP as u16, + MOVDIR64B = super::Opcode::MOVDIR64B as u16, + MOVDIRI = super::Opcode::MOVDIRI as u16, + MOVDQ2Q = super::Opcode::MOVDQ2Q as u16, + MOVDQA = super::Opcode::MOVDQA as u16, + MOVDQU = super::Opcode::MOVDQU as u16, + MOVHLPS = super::Opcode::MOVHLPS as u16, + MOVHPD = super::Opcode::MOVHPD as u16, + MOVHPS = super::Opcode::MOVHPS as u16, + MOVLHPS = super::Opcode::MOVLHPS as u16, + MOVLPD = super::Opcode::MOVLPD as u16, + MOVLPS = super::Opcode::MOVLPS as u16, + MOVMSKPD = super::Opcode::MOVMSKPD as u16, + MOVMSKPS = super::Opcode::MOVMSKPS as u16, + MOVNTDQ = super::Opcode::MOVNTDQ as u16, + MOVNTDQA = super::Opcode::MOVNTDQA as u16, + MOVNTI = super::Opcode::MOVNTI as u16, + MOVNTPD = super::Opcode::MOVNTPD as u16, + MOVNTPS = super::Opcode::MOVNTPS as u16, + MOVNTQ = super::Opcode::MOVNTQ as u16, + MOVNTSD = super::Opcode::MOVNTSD as u16, + MOVNTSS = super::Opcode::MOVNTSS as u16, + MOVQ = super::Opcode::MOVQ as u16, + MOVQ2DQ = super::Opcode::MOVQ2DQ as u16, + MOVS = super::Opcode::MOVS as u16, + MOVSD = super::Opcode::MOVSD as u16, + MOVSHDUP = super::Opcode::MOVSHDUP as u16, + MOVSLDUP = super::Opcode::MOVSLDUP as u16, + MOVSS = super::Opcode::MOVSS as u16, + MOVSX = super::Opcode::MOVSX as u16, + MOVSXD = super::Opcode::MOVSXD as u16, + MOVUPD = super::Opcode::MOVUPD as u16, + MOVUPS = super::Opcode::MOVUPS as u16, + MOVZX = super::Opcode::MOVZX as u16, + MPSADBW = super::Opcode::MPSADBW as u16, + MUL = super::Opcode::MUL as u16, + MULPD = super::Opcode::MULPD as u16, + MULPS = super::Opcode::MULPS as u16, + MULSD = super::Opcode::MULSD as u16, + MULSS = super::Opcode::MULSS as u16, + MULX = super::Opcode::MULX as u16, + MWAIT = super::Opcode::MWAIT as u16, + MWAITX = super::Opcode::MWAITX as u16, + NEG = super::Opcode::NEG as u16, + NOP = super::Opcode::NOP as u16, + NOT = super::Opcode::NOT as u16, + OR = super::Opcode::OR as u16, + ORPD = super::Opcode::ORPD as u16, + ORPS = super::Opcode::ORPS as u16, + OUT = super::Opcode::OUT as u16, + OUTS = super::Opcode::OUTS as u16, + PABSB = super::Opcode::PABSB as u16, + PABSD = super::Opcode::PABSD as u16, + PABSW = super::Opcode::PABSW as u16, + PACKSSDW = super::Opcode::PACKSSDW as u16, + PACKSSWB = super::Opcode::PACKSSWB as u16, + PACKUSDW = super::Opcode::PACKUSDW as u16, + PACKUSWB = super::Opcode::PACKUSWB as u16, + PADDB = super::Opcode::PADDB as u16, + PADDD = super::Opcode::PADDD as u16, + PADDQ = super::Opcode::PADDQ as u16, + PADDSB = super::Opcode::PADDSB as u16, + PADDSW = super::Opcode::PADDSW as u16, + PADDUSB = super::Opcode::PADDUSB as u16, + PADDUSW = super::Opcode::PADDUSW as u16, + PADDW = super::Opcode::PADDW as u16, + PALIGNR = super::Opcode::PALIGNR as u16, + PAND = super::Opcode::PAND as u16, + PANDN = super::Opcode::PANDN as u16, + PAVGB = super::Opcode::PAVGB as u16, + PAVGUSB = super::Opcode::PAVGUSB as u16, + PAVGW = super::Opcode::PAVGW as u16, + PBLENDVB = super::Opcode::PBLENDVB as u16, + PBLENDW = super::Opcode::PBLENDW as u16, + PCLMULQDQ = super::Opcode::PCLMULQDQ as u16, + PCMPEQB = super::Opcode::PCMPEQB as u16, + PCMPEQD = super::Opcode::PCMPEQD as u16, + PCMPEQQ = super::Opcode::PCMPEQQ as u16, + PCMPEQW = super::Opcode::PCMPEQW as u16, + PCMPESTRI = super::Opcode::PCMPESTRI as u16, + PCMPESTRM = super::Opcode::PCMPESTRM as u16, + PCMPGTB = super::Opcode::PCMPGTB as u16, + PCMPGTD = super::Opcode::PCMPGTD as u16, + PCMPGTQ = super::Opcode::PCMPGTQ as u16, + PCMPGTW = super::Opcode::PCMPGTW as u16, + PCMPISTRI = super::Opcode::PCMPISTRI as u16, + PCMPISTRM = super::Opcode::PCMPISTRM as u16, + PCONFIG = super::Opcode::PCONFIG as u16, + PDEP = super::Opcode::PDEP as u16, + PEXT = super::Opcode::PEXT as u16, + PEXTRB = super::Opcode::PEXTRB as u16, + PEXTRD = super::Opcode::PEXTRD as u16, + PEXTRQ = super::Opcode::PEXTRQ as u16, + PEXTRW = super::Opcode::PEXTRW as u16, + PF2ID = super::Opcode::PF2ID as u16, + PF2IW = super::Opcode::PF2IW as u16, + PFACC = super::Opcode::PFACC as u16, + PFADD = super::Opcode::PFADD as u16, + PFCMPEQ = super::Opcode::PFCMPEQ as u16, + PFCMPGE = super::Opcode::PFCMPGE as u16, + PFCMPGT = super::Opcode::PFCMPGT as u16, + PFMAX = super::Opcode::PFMAX as u16, + PFMIN = super::Opcode::PFMIN as u16, + PFMUL = super::Opcode::PFMUL as u16, + PFMULHRW = super::Opcode::PFMULHRW as u16, + PFNACC = super::Opcode::PFNACC as u16, + PFPNACC = super::Opcode::PFPNACC as u16, + PFRCP = super::Opcode::PFRCP as u16, + PFRCPIT1 = super::Opcode::PFRCPIT1 as u16, + PFRCPIT2 = super::Opcode::PFRCPIT2 as u16, + PFRSQIT1 = super::Opcode::PFRSQIT1 as u16, + PFRSQRT = super::Opcode::PFRSQRT as u16, + PFSUB = super::Opcode::PFSUB as u16, + PFSUBR = super::Opcode::PFSUBR as u16, + PHADDD = super::Opcode::PHADDD as u16, + PHADDSW = super::Opcode::PHADDSW as u16, + PHADDW = super::Opcode::PHADDW as u16, + PHMINPOSUW = super::Opcode::PHMINPOSUW as u16, + PHSUBD = super::Opcode::PHSUBD as u16, + PHSUBSW = super::Opcode::PHSUBSW as u16, + PHSUBW = super::Opcode::PHSUBW as u16, + PI2FD = super::Opcode::PI2FD as u16, + PI2FW = super::Opcode::PI2FW as u16, + PINSRB = super::Opcode::PINSRB as u16, + PINSRD = super::Opcode::PINSRD as u16, + PINSRQ = super::Opcode::PINSRQ as u16, + PINSRW = super::Opcode::PINSRW as u16, + PMADDUBSW = super::Opcode::PMADDUBSW as u16, + PMADDWD = super::Opcode::PMADDWD as u16, + PMAXSB = super::Opcode::PMAXSB as u16, + PMAXSD = super::Opcode::PMAXSD as u16, + PMAXSW = super::Opcode::PMAXSW as u16, + PMAXUB = super::Opcode::PMAXUB as u16, + PMAXUD = super::Opcode::PMAXUD as u16, + PMAXUW = super::Opcode::PMAXUW as u16, + PMINSB = super::Opcode::PMINSB as u16, + PMINSD = super::Opcode::PMINSD as u16, + PMINSW = super::Opcode::PMINSW as u16, + PMINUB = super::Opcode::PMINUB as u16, + PMINUD = super::Opcode::PMINUD as u16, + PMINUW = super::Opcode::PMINUW as u16, + PMOVMSKB = super::Opcode::PMOVMSKB as u16, + PMOVSXBD = super::Opcode::PMOVSXBD as u16, + PMOVSXBQ = super::Opcode::PMOVSXBQ as u16, + PMOVSXBW = super::Opcode::PMOVSXBW as u16, + PMOVSXDQ = super::Opcode::PMOVSXDQ as u16, + PMOVSXWD = super::Opcode::PMOVSXWD as u16, + PMOVSXWQ = super::Opcode::PMOVSXWQ as u16, + PMOVZXBD = super::Opcode::PMOVZXBD as u16, + PMOVZXBQ = super::Opcode::PMOVZXBQ as u16, + PMOVZXBW = super::Opcode::PMOVZXBW as u16, + PMOVZXDQ = super::Opcode::PMOVZXDQ as u16, + PMOVZXWD = super::Opcode::PMOVZXWD as u16, + PMOVZXWQ = super::Opcode::PMOVZXWQ as u16, + PMULDQ = super::Opcode::PMULDQ as u16, + PMULHRSW = super::Opcode::PMULHRSW as u16, + PMULHRW = super::Opcode::PMULHRW as u16, + PMULHUW = super::Opcode::PMULHUW as u16, + PMULHW = super::Opcode::PMULHW as u16, + PMULLD = super::Opcode::PMULLD as u16, + PMULLW = super::Opcode::PMULLW as u16, + PMULUDQ = super::Opcode::PMULUDQ as u16, + POP = super::Opcode::POP as u16, + POPA = super::Opcode::POPA as u16, + POPCNT = super::Opcode::POPCNT as u16, + POPF = super::Opcode::POPF as u16, + POR = super::Opcode::POR as u16, + PREFETCH0 = super::Opcode::PREFETCH0 as u16, + PREFETCH1 = super::Opcode::PREFETCH1 as u16, + PREFETCH2 = super::Opcode::PREFETCH2 as u16, + PREFETCHNTA = super::Opcode::PREFETCHNTA as u16, + PREFETCHW = super::Opcode::PREFETCHW as u16, + PSADBW = super::Opcode::PSADBW as u16, + PSHUFB = super::Opcode::PSHUFB as u16, + PSHUFD = super::Opcode::PSHUFD as u16, + PSHUFHW = super::Opcode::PSHUFHW as u16, + PSHUFLW = super::Opcode::PSHUFLW as u16, + PSHUFW = super::Opcode::PSHUFW as u16, + PSIGNB = super::Opcode::PSIGNB as u16, + PSIGND = super::Opcode::PSIGND as u16, + PSIGNW = super::Opcode::PSIGNW as u16, + PSLLD = super::Opcode::PSLLD as u16, + PSLLDQ = super::Opcode::PSLLDQ as u16, + PSLLQ = super::Opcode::PSLLQ as u16, + PSLLW = super::Opcode::PSLLW as u16, + PSMASH = super::Opcode::PSMASH as u16, + PSRAD = super::Opcode::PSRAD as u16, + PSRAW = super::Opcode::PSRAW as u16, + PSRLD = super::Opcode::PSRLD as u16, + PSRLDQ = super::Opcode::PSRLDQ as u16, + PSRLQ = super::Opcode::PSRLQ as u16, + PSRLW = super::Opcode::PSRLW as u16, + PSUBB = super::Opcode::PSUBB as u16, + PSUBD = super::Opcode::PSUBD as u16, + PSUBQ = super::Opcode::PSUBQ as u16, + PSUBSB = super::Opcode::PSUBSB as u16, + PSUBSW = super::Opcode::PSUBSW as u16, + PSUBUSB = super::Opcode::PSUBUSB as u16, + PSUBUSW = super::Opcode::PSUBUSW as u16, + PSUBW = super::Opcode::PSUBW as u16, + PSWAPD = super::Opcode::PSWAPD as u16, + PTEST = super::Opcode::PTEST as u16, + PTWRITE = super::Opcode::PTWRITE as u16, + PUNPCKHBW = super::Opcode::PUNPCKHBW as u16, + PUNPCKHDQ = super::Opcode::PUNPCKHDQ as u16, + PUNPCKHQDQ = super::Opcode::PUNPCKHQDQ as u16, + PUNPCKHWD = super::Opcode::PUNPCKHWD as u16, + PUNPCKLBW = super::Opcode::PUNPCKLBW as u16, + PUNPCKLDQ = super::Opcode::PUNPCKLDQ as u16, + PUNPCKLQDQ = super::Opcode::PUNPCKLQDQ as u16, + PUNPCKLWD = super::Opcode::PUNPCKLWD as u16, + PUSH = super::Opcode::PUSH as u16, + PUSHA = super::Opcode::PUSHA as u16, + PUSHF = super::Opcode::PUSHF as u16, + PVALIDATE = super::Opcode::PVALIDATE as u16, + PXOR = super::Opcode::PXOR as u16, + RCL = super::Opcode::RCL as u16, + RCPPS = super::Opcode::RCPPS as u16, + RCPSS = super::Opcode::RCPSS as u16, + RCR = super::Opcode::RCR as u16, + RDFSBASE = super::Opcode::RDFSBASE as u16, + RDGSBASE = super::Opcode::RDGSBASE as u16, + RDMSR = super::Opcode::RDMSR as u16, + RDPID = super::Opcode::RDPID as u16, + RDPKRU = super::Opcode::RDPKRU as u16, + RDPMC = super::Opcode::RDPMC as u16, + RDPRU = super::Opcode::RDPRU as u16, + RDRAND = super::Opcode::RDRAND as u16, + RDSEED = super::Opcode::RDSEED as u16, + RDTSC = super::Opcode::RDTSC as u16, + RDTSCP = super::Opcode::RDTSCP as u16, + RETF = super::Opcode::RETF as u16, + RETURN = super::Opcode::RETURN as u16, + RMPADJUST = super::Opcode::RMPADJUST as u16, + RMPUPDATE = super::Opcode::RMPUPDATE as u16, + ROL = super::Opcode::ROL as u16, + ROR = super::Opcode::ROR as u16, + RORX = super::Opcode::RORX as u16, + ROUNDPD = super::Opcode::ROUNDPD as u16, + ROUNDPS = super::Opcode::ROUNDPS as u16, + ROUNDSD = super::Opcode::ROUNDSD as u16, + ROUNDSS = super::Opcode::ROUNDSS as u16, + RSM = super::Opcode::RSM as u16, + RSQRTPS = super::Opcode::RSQRTPS as u16, + RSQRTSS = super::Opcode::RSQRTSS as u16, + RSTORSSP = super::Opcode::RSTORSSP as u16, + SAHF = super::Opcode::SAHF as u16, + SAL = super::Opcode::SAL as u16, + SALC = super::Opcode::SALC as u16, + SAR = super::Opcode::SAR as u16, + SARX = super::Opcode::SARX as u16, + SAVEPREVSSP = super::Opcode::SAVEPREVSSP as u16, + SBB = super::Opcode::SBB as u16, + SCAS = super::Opcode::SCAS as u16, + SEAMCALL = super::Opcode::SEAMCALL as u16, + SEAMOPS = super::Opcode::SEAMOPS as u16, + SEAMRET = super::Opcode::SEAMRET as u16, + SENDUIPI = super::Opcode::SENDUIPI as u16, + SETA = super::Opcode::SETA as u16, + SETAE = super::Opcode::SETAE as u16, + SETB = super::Opcode::SETB as u16, + SETBE = super::Opcode::SETBE as u16, + SETG = super::Opcode::SETG as u16, + SETGE = super::Opcode::SETGE as u16, + SETL = super::Opcode::SETL as u16, + SETLE = super::Opcode::SETLE as u16, + SETNO = super::Opcode::SETNO as u16, + SETNP = super::Opcode::SETNP as u16, + SETNS = super::Opcode::SETNS as u16, + SETNZ = super::Opcode::SETNZ as u16, + SETO = super::Opcode::SETO as u16, + SETP = super::Opcode::SETP as u16, + SETS = super::Opcode::SETS as u16, + SETSSBSY = super::Opcode::SETSSBSY as u16, + SETZ = super::Opcode::SETZ as u16, + SFENCE = super::Opcode::SFENCE as u16, + SGDT = super::Opcode::SGDT as u16, + SHA1MSG1 = super::Opcode::SHA1MSG1 as u16, + SHA1MSG2 = super::Opcode::SHA1MSG2 as u16, + SHA1NEXTE = super::Opcode::SHA1NEXTE as u16, + SHA1RNDS4 = super::Opcode::SHA1RNDS4 as u16, + SHA256MSG1 = super::Opcode::SHA256MSG1 as u16, + SHA256MSG2 = super::Opcode::SHA256MSG2 as u16, + SHA256RNDS2 = super::Opcode::SHA256RNDS2 as u16, + SHL = super::Opcode::SHL as u16, + SHLD = super::Opcode::SHLD as u16, + SHLX = super::Opcode::SHLX as u16, + SHR = super::Opcode::SHR as u16, + SHRD = super::Opcode::SHRD as u16, + SHRX = super::Opcode::SHRX as u16, + SHUFPD = super::Opcode::SHUFPD as u16, + SHUFPS = super::Opcode::SHUFPS as u16, + SIDT = super::Opcode::SIDT as u16, + SKINIT = super::Opcode::SKINIT as u16, + SLDT = super::Opcode::SLDT as u16, + SLHD = super::Opcode::SLHD as u16, + SMSW = super::Opcode::SMSW as u16, + SQRTPD = super::Opcode::SQRTPD as u16, + SQRTPS = super::Opcode::SQRTPS as u16, + SQRTSD = super::Opcode::SQRTSD as u16, + SQRTSS = super::Opcode::SQRTSS as u16, + STAC = super::Opcode::STAC as u16, + STC = super::Opcode::STC as u16, + STD = super::Opcode::STD as u16, + STGI = super::Opcode::STGI as u16, + STI = super::Opcode::STI as u16, + STMXCSR = super::Opcode::STMXCSR as u16, + STOS = super::Opcode::STOS as u16, + STR = super::Opcode::STR as u16, + STUI = super::Opcode::STUI as u16, + SUB = super::Opcode::SUB as u16, + SUBPD = super::Opcode::SUBPD as u16, + SUBPS = super::Opcode::SUBPS as u16, + SUBSD = super::Opcode::SUBSD as u16, + SUBSS = super::Opcode::SUBSS as u16, + SWAPGS = super::Opcode::SWAPGS as u16, + SYSCALL = super::Opcode::SYSCALL as u16, + SYSENTER = super::Opcode::SYSENTER as u16, + SYSEXIT = super::Opcode::SYSEXIT as u16, + SYSRET = super::Opcode::SYSRET as u16, + TDCALL = super::Opcode::TDCALL as u16, + TEST = super::Opcode::TEST as u16, + TESTUI = super::Opcode::TESTUI as u16, + TLBSYNC = super::Opcode::TLBSYNC as u16, + TPAUSE = super::Opcode::TPAUSE as u16, + TZCNT = super::Opcode::TZCNT as u16, + UCOMISD = super::Opcode::UCOMISD as u16, + UCOMISS = super::Opcode::UCOMISS as u16, + UD0 = super::Opcode::UD0 as u16, + UD1 = super::Opcode::UD1 as u16, + UD2 = super::Opcode::UD2 as u16, + UIRET = super::Opcode::UIRET as u16, + UMONITOR = super::Opcode::UMONITOR as u16, + UMWAIT = super::Opcode::UMWAIT as u16, + UNPCKHPD = super::Opcode::UNPCKHPD as u16, + UNPCKHPS = super::Opcode::UNPCKHPS as u16, + UNPCKLPD = super::Opcode::UNPCKLPD as u16, + UNPCKLPS = super::Opcode::UNPCKLPS as u16, + V4FMADDPS = super::Opcode::V4FMADDPS as u16, + V4FMADDSS = super::Opcode::V4FMADDSS as u16, + V4FNMADDPS = super::Opcode::V4FNMADDPS as u16, + V4FNMADDSS = super::Opcode::V4FNMADDSS as u16, + VADDPD = super::Opcode::VADDPD as u16, + VADDPS = super::Opcode::VADDPS as u16, + VADDSD = super::Opcode::VADDSD as u16, + VADDSS = super::Opcode::VADDSS as u16, + VADDSUBPD = super::Opcode::VADDSUBPD as u16, + VADDSUBPS = super::Opcode::VADDSUBPS as u16, + VAESDEC = super::Opcode::VAESDEC as u16, + VAESDECLAST = super::Opcode::VAESDECLAST as u16, + VAESENC = super::Opcode::VAESENC as u16, + VAESENCLAST = super::Opcode::VAESENCLAST as u16, + VAESIMC = super::Opcode::VAESIMC as u16, + VAESKEYGENASSIST = super::Opcode::VAESKEYGENASSIST as u16, + VALIGND = super::Opcode::VALIGND as u16, + VALIGNQ = super::Opcode::VALIGNQ as u16, + VANDNPD = super::Opcode::VANDNPD as u16, + VANDNPS = super::Opcode::VANDNPS as u16, + VANDPD = super::Opcode::VANDPD as u16, + VANDPS = super::Opcode::VANDPS as u16, + VBLENDMPD = super::Opcode::VBLENDMPD as u16, + VBLENDMPS = super::Opcode::VBLENDMPS as u16, + VBLENDPD = super::Opcode::VBLENDPD as u16, + VBLENDPS = super::Opcode::VBLENDPS as u16, + VBLENDVPD = super::Opcode::VBLENDVPD as u16, + VBLENDVPS = super::Opcode::VBLENDVPS as u16, + VBROADCASTF128 = super::Opcode::VBROADCASTF128 as u16, + VBROADCASTF32X2 = super::Opcode::VBROADCASTF32X2 as u16, + VBROADCASTF32X4 = super::Opcode::VBROADCASTF32X4 as u16, + VBROADCASTF32X8 = super::Opcode::VBROADCASTF32X8 as u16, + VBROADCASTF64X2 = super::Opcode::VBROADCASTF64X2 as u16, + VBROADCASTF64X4 = super::Opcode::VBROADCASTF64X4 as u16, + VBROADCASTI128 = super::Opcode::VBROADCASTI128 as u16, + VBROADCASTI32X2 = super::Opcode::VBROADCASTI32X2 as u16, + VBROADCASTI32X4 = super::Opcode::VBROADCASTI32X4 as u16, + VBROADCASTI32X8 = super::Opcode::VBROADCASTI32X8 as u16, + VBROADCASTI64X2 = super::Opcode::VBROADCASTI64X2 as u16, + VBROADCASTI64X4 = super::Opcode::VBROADCASTI64X4 as u16, + VBROADCASTSD = super::Opcode::VBROADCASTSD as u16, + VBROADCASTSS = super::Opcode::VBROADCASTSS as u16, + VCMPPD = super::Opcode::VCMPPD as u16, + VCMPPS = super::Opcode::VCMPPS as u16, + VCMPSD = super::Opcode::VCMPSD as u16, + VCMPSS = super::Opcode::VCMPSS as u16, + VCOMISD = super::Opcode::VCOMISD as u16, + VCOMISS = super::Opcode::VCOMISS as u16, + VCOMPRESSD = super::Opcode::VCOMPRESSD as u16, + VCOMPRESSPD = super::Opcode::VCOMPRESSPD as u16, + VCOMPRESSPS = super::Opcode::VCOMPRESSPS as u16, + VCOMPRESSQ = super::Opcode::VCOMPRESSQ as u16, + VCVTDQ2PD = super::Opcode::VCVTDQ2PD as u16, + VCVTDQ2PS = super::Opcode::VCVTDQ2PS as u16, + VCVTNE2PS2BF16 = super::Opcode::VCVTNE2PS2BF16 as u16, + VCVTNEPS2BF16 = super::Opcode::VCVTNEPS2BF16 as u16, + VCVTPD2DQ = super::Opcode::VCVTPD2DQ as u16, + VCVTPD2PS = super::Opcode::VCVTPD2PS as u16, + VCVTPD2QQ = super::Opcode::VCVTPD2QQ as u16, + VCVTPD2UDQ = super::Opcode::VCVTPD2UDQ as u16, + VCVTPD2UQQ = super::Opcode::VCVTPD2UQQ as u16, + VCVTPH2PS = super::Opcode::VCVTPH2PS as u16, + VCVTPS2DQ = super::Opcode::VCVTPS2DQ as u16, + VCVTPS2PD = super::Opcode::VCVTPS2PD as u16, + VCVTPS2PH = super::Opcode::VCVTPS2PH as u16, + VCVTPS2QQ = super::Opcode::VCVTPS2QQ as u16, + VCVTPS2UDQ = super::Opcode::VCVTPS2UDQ as u16, + VCVTPS2UQQ = super::Opcode::VCVTPS2UQQ as u16, + VCVTQQ2PD = super::Opcode::VCVTQQ2PD as u16, + VCVTQQ2PS = super::Opcode::VCVTQQ2PS as u16, + VCVTSD2SI = super::Opcode::VCVTSD2SI as u16, + VCVTSD2SS = super::Opcode::VCVTSD2SS as u16, + VCVTSD2USI = super::Opcode::VCVTSD2USI as u16, + VCVTSI2SD = super::Opcode::VCVTSI2SD as u16, + VCVTSI2SS = super::Opcode::VCVTSI2SS as u16, + VCVTSS2SD = super::Opcode::VCVTSS2SD as u16, + VCVTSS2SI = super::Opcode::VCVTSS2SI as u16, + VCVTSS2USI = super::Opcode::VCVTSS2USI as u16, + VCVTTPD2DQ = super::Opcode::VCVTTPD2DQ as u16, + VCVTTPD2QQ = super::Opcode::VCVTTPD2QQ as u16, + VCVTTPD2UDQ = super::Opcode::VCVTTPD2UDQ as u16, + VCVTTPD2UQQ = super::Opcode::VCVTTPD2UQQ as u16, + VCVTTPS2DQ = super::Opcode::VCVTTPS2DQ as u16, + VCVTTPS2QQ = super::Opcode::VCVTTPS2QQ as u16, + VCVTTPS2UDQ = super::Opcode::VCVTTPS2UDQ as u16, + VCVTTPS2UQQ = super::Opcode::VCVTTPS2UQQ as u16, + VCVTTSD2SI = super::Opcode::VCVTTSD2SI as u16, + VCVTTSD2USI = super::Opcode::VCVTTSD2USI as u16, + VCVTTSS2SI = super::Opcode::VCVTTSS2SI as u16, + VCVTTSS2USI = super::Opcode::VCVTTSS2USI as u16, + VCVTUDQ2PD = super::Opcode::VCVTUDQ2PD as u16, + VCVTUDQ2PS = super::Opcode::VCVTUDQ2PS as u16, + VCVTUQQ2PD = super::Opcode::VCVTUQQ2PD as u16, + VCVTUQQ2PS = super::Opcode::VCVTUQQ2PS as u16, + VCVTUSI2SD = super::Opcode::VCVTUSI2SD as u16, + VCVTUSI2SS = super::Opcode::VCVTUSI2SS as u16, + VCVTUSI2USD = super::Opcode::VCVTUSI2USD as u16, + VCVTUSI2USS = super::Opcode::VCVTUSI2USS as u16, + VDBPSADBW = super::Opcode::VDBPSADBW as u16, + VDIVPD = super::Opcode::VDIVPD as u16, + VDIVPS = super::Opcode::VDIVPS as u16, + VDIVSD = super::Opcode::VDIVSD as u16, + VDIVSS = super::Opcode::VDIVSS as u16, + VDPBF16PS = super::Opcode::VDPBF16PS as u16, + VDPPD = super::Opcode::VDPPD as u16, + VDPPS = super::Opcode::VDPPS as u16, + VERR = super::Opcode::VERR as u16, + VERW = super::Opcode::VERW as u16, + VEXP2PD = super::Opcode::VEXP2PD as u16, + VEXP2PS = super::Opcode::VEXP2PS as u16, + VEXP2SD = super::Opcode::VEXP2SD as u16, + VEXP2SS = super::Opcode::VEXP2SS as u16, + VEXPANDPD = super::Opcode::VEXPANDPD as u16, + VEXPANDPS = super::Opcode::VEXPANDPS as u16, + VEXTRACTF128 = super::Opcode::VEXTRACTF128 as u16, + VEXTRACTF32X4 = super::Opcode::VEXTRACTF32X4 as u16, + VEXTRACTF32X8 = super::Opcode::VEXTRACTF32X8 as u16, + VEXTRACTF64X2 = super::Opcode::VEXTRACTF64X2 as u16, + VEXTRACTF64X4 = super::Opcode::VEXTRACTF64X4 as u16, + VEXTRACTI128 = super::Opcode::VEXTRACTI128 as u16, + VEXTRACTI32X4 = super::Opcode::VEXTRACTI32X4 as u16, + VEXTRACTI32X8 = super::Opcode::VEXTRACTI32X8 as u16, + VEXTRACTI64X2 = super::Opcode::VEXTRACTI64X2 as u16, + VEXTRACTI64X4 = super::Opcode::VEXTRACTI64X4 as u16, + VEXTRACTPS = super::Opcode::VEXTRACTPS as u16, + VFIXUPIMMPD = super::Opcode::VFIXUPIMMPD as u16, + VFIXUPIMMPS = super::Opcode::VFIXUPIMMPS as u16, + VFIXUPIMMSD = super::Opcode::VFIXUPIMMSD as u16, + VFIXUPIMMSS = super::Opcode::VFIXUPIMMSS as u16, + VFMADD132PD = super::Opcode::VFMADD132PD as u16, + VFMADD132PS = super::Opcode::VFMADD132PS as u16, + VFMADD132SD = super::Opcode::VFMADD132SD as u16, + VFMADD132SS = super::Opcode::VFMADD132SS as u16, + VFMADD213PD = super::Opcode::VFMADD213PD as u16, + VFMADD213PS = super::Opcode::VFMADD213PS as u16, + VFMADD213SD = super::Opcode::VFMADD213SD as u16, + VFMADD213SS = super::Opcode::VFMADD213SS as u16, + VFMADD231PD = super::Opcode::VFMADD231PD as u16, + VFMADD231PS = super::Opcode::VFMADD231PS as u16, + VFMADD231SD = super::Opcode::VFMADD231SD as u16, + VFMADD231SS = super::Opcode::VFMADD231SS as u16, + VFMADDSUB132PD = super::Opcode::VFMADDSUB132PD as u16, + VFMADDSUB132PS = super::Opcode::VFMADDSUB132PS as u16, + VFMADDSUB213PD = super::Opcode::VFMADDSUB213PD as u16, + VFMADDSUB213PS = super::Opcode::VFMADDSUB213PS as u16, + VFMADDSUB231PD = super::Opcode::VFMADDSUB231PD as u16, + VFMADDSUB231PS = super::Opcode::VFMADDSUB231PS as u16, + VFMSUB132PD = super::Opcode::VFMSUB132PD as u16, + VFMSUB132PS = super::Opcode::VFMSUB132PS as u16, + VFMSUB132SD = super::Opcode::VFMSUB132SD as u16, + VFMSUB132SS = super::Opcode::VFMSUB132SS as u16, + VFMSUB213PD = super::Opcode::VFMSUB213PD as u16, + VFMSUB213PS = super::Opcode::VFMSUB213PS as u16, + VFMSUB213SD = super::Opcode::VFMSUB213SD as u16, + VFMSUB213SS = super::Opcode::VFMSUB213SS as u16, + VFMSUB231PD = super::Opcode::VFMSUB231PD as u16, + VFMSUB231PS = super::Opcode::VFMSUB231PS as u16, + VFMSUB231SD = super::Opcode::VFMSUB231SD as u16, + VFMSUB231SS = super::Opcode::VFMSUB231SS as u16, + VFMSUBADD132PD = super::Opcode::VFMSUBADD132PD as u16, + VFMSUBADD132PS = super::Opcode::VFMSUBADD132PS as u16, + VFMSUBADD213PD = super::Opcode::VFMSUBADD213PD as u16, + VFMSUBADD213PS = super::Opcode::VFMSUBADD213PS as u16, + VFMSUBADD231PD = super::Opcode::VFMSUBADD231PD as u16, + VFMSUBADD231PS = super::Opcode::VFMSUBADD231PS as u16, + VFNMADD132PD = super::Opcode::VFNMADD132PD as u16, + VFNMADD132PS = super::Opcode::VFNMADD132PS as u16, + VFNMADD132SD = super::Opcode::VFNMADD132SD as u16, + VFNMADD132SS = super::Opcode::VFNMADD132SS as u16, + VFNMADD213PD = super::Opcode::VFNMADD213PD as u16, + VFNMADD213PS = super::Opcode::VFNMADD213PS as u16, + VFNMADD213SD = super::Opcode::VFNMADD213SD as u16, + VFNMADD213SS = super::Opcode::VFNMADD213SS as u16, + VFNMADD231PD = super::Opcode::VFNMADD231PD as u16, + VFNMADD231PS = super::Opcode::VFNMADD231PS as u16, + VFNMADD231SD = super::Opcode::VFNMADD231SD as u16, + VFNMADD231SS = super::Opcode::VFNMADD231SS as u16, + VFNMSUB132PD = super::Opcode::VFNMSUB132PD as u16, + VFNMSUB132PS = super::Opcode::VFNMSUB132PS as u16, + VFNMSUB132SD = super::Opcode::VFNMSUB132SD as u16, + VFNMSUB132SS = super::Opcode::VFNMSUB132SS as u16, + VFNMSUB213PD = super::Opcode::VFNMSUB213PD as u16, + VFNMSUB213PS = super::Opcode::VFNMSUB213PS as u16, + VFNMSUB213SD = super::Opcode::VFNMSUB213SD as u16, + VFNMSUB213SS = super::Opcode::VFNMSUB213SS as u16, + VFNMSUB231PD = super::Opcode::VFNMSUB231PD as u16, + VFNMSUB231PS = super::Opcode::VFNMSUB231PS as u16, + VFNMSUB231SD = super::Opcode::VFNMSUB231SD as u16, + VFNMSUB231SS = super::Opcode::VFNMSUB231SS as u16, + VFPCLASSPD = super::Opcode::VFPCLASSPD as u16, + VFPCLASSPS = super::Opcode::VFPCLASSPS as u16, + VFPCLASSSD = super::Opcode::VFPCLASSSD as u16, + VFPCLASSSS = super::Opcode::VFPCLASSSS as u16, + VGATHERDPD = super::Opcode::VGATHERDPD as u16, + VGATHERDPS = super::Opcode::VGATHERDPS as u16, + VGATHERPF0DPD = super::Opcode::VGATHERPF0DPD as u16, + VGATHERPF0DPS = super::Opcode::VGATHERPF0DPS as u16, + VGATHERPF0QPD = super::Opcode::VGATHERPF0QPD as u16, + VGATHERPF0QPS = super::Opcode::VGATHERPF0QPS as u16, + VGATHERPF1DPD = super::Opcode::VGATHERPF1DPD as u16, + VGATHERPF1DPS = super::Opcode::VGATHERPF1DPS as u16, + VGATHERPF1QPD = super::Opcode::VGATHERPF1QPD as u16, + VGATHERPF1QPS = super::Opcode::VGATHERPF1QPS as u16, + VGATHERQPD = super::Opcode::VGATHERQPD as u16, + VGATHERQPS = super::Opcode::VGATHERQPS as u16, + VGETEXPPD = super::Opcode::VGETEXPPD as u16, + VGETEXPPS = super::Opcode::VGETEXPPS as u16, + VGETEXPSD = super::Opcode::VGETEXPSD as u16, + VGETEXPSS = super::Opcode::VGETEXPSS as u16, + VGETMANTPD = super::Opcode::VGETMANTPD as u16, + VGETMANTPS = super::Opcode::VGETMANTPS as u16, + VGETMANTSD = super::Opcode::VGETMANTSD as u16, + VGETMANTSS = super::Opcode::VGETMANTSS as u16, + VGF2P8AFFINEINVQB = super::Opcode::VGF2P8AFFINEINVQB as u16, + VGF2P8AFFINEQB = super::Opcode::VGF2P8AFFINEQB as u16, + VGF2P8MULB = super::Opcode::VGF2P8MULB as u16, + VHADDPD = super::Opcode::VHADDPD as u16, + VHADDPS = super::Opcode::VHADDPS as u16, + VHSUBPD = super::Opcode::VHSUBPD as u16, + VHSUBPS = super::Opcode::VHSUBPS as u16, + VINSERTF128 = super::Opcode::VINSERTF128 as u16, + VINSERTF32X4 = super::Opcode::VINSERTF32X4 as u16, + VINSERTF32X8 = super::Opcode::VINSERTF32X8 as u16, + VINSERTF64X2 = super::Opcode::VINSERTF64X2 as u16, + VINSERTF64X4 = super::Opcode::VINSERTF64X4 as u16, + VINSERTI128 = super::Opcode::VINSERTI128 as u16, + VINSERTI32X4 = super::Opcode::VINSERTI32X4 as u16, + VINSERTI32X8 = super::Opcode::VINSERTI32X8 as u16, + VINSERTI64X2 = super::Opcode::VINSERTI64X2 as u16, + VINSERTI64X4 = super::Opcode::VINSERTI64X4 as u16, + VINSERTPS = super::Opcode::VINSERTPS as u16, + VLDDQU = super::Opcode::VLDDQU as u16, + VLDMXCSR = super::Opcode::VLDMXCSR as u16, + VMASKMOVDQU = super::Opcode::VMASKMOVDQU as u16, + VMASKMOVPD = super::Opcode::VMASKMOVPD as u16, + VMASKMOVPS = super::Opcode::VMASKMOVPS as u16, + VMAXPD = super::Opcode::VMAXPD as u16, + VMAXPS = super::Opcode::VMAXPS as u16, + VMAXSD = super::Opcode::VMAXSD as u16, + VMAXSS = super::Opcode::VMAXSS as u16, + VMCALL = super::Opcode::VMCALL as u16, + VMCLEAR = super::Opcode::VMCLEAR as u16, + VMFUNC = super::Opcode::VMFUNC as u16, + VMINPD = super::Opcode::VMINPD as u16, + VMINPS = super::Opcode::VMINPS as u16, + VMINSD = super::Opcode::VMINSD as u16, + VMINSS = super::Opcode::VMINSS as u16, + VMLAUNCH = super::Opcode::VMLAUNCH as u16, + VMLOAD = super::Opcode::VMLOAD as u16, + VMMCALL = super::Opcode::VMMCALL as u16, + VMOVAPD = super::Opcode::VMOVAPD as u16, + VMOVAPS = super::Opcode::VMOVAPS as u16, + VMOVD = super::Opcode::VMOVD as u16, + VMOVDDUP = super::Opcode::VMOVDDUP as u16, + VMOVDQA = super::Opcode::VMOVDQA as u16, + VMOVDQA32 = super::Opcode::VMOVDQA32 as u16, + VMOVDQA64 = super::Opcode::VMOVDQA64 as u16, + VMOVDQU = super::Opcode::VMOVDQU as u16, + VMOVDQU16 = super::Opcode::VMOVDQU16 as u16, + VMOVDQU32 = super::Opcode::VMOVDQU32 as u16, + VMOVDQU64 = super::Opcode::VMOVDQU64 as u16, + VMOVDQU8 = super::Opcode::VMOVDQU8 as u16, + VMOVHLPS = super::Opcode::VMOVHLPS as u16, + VMOVHPD = super::Opcode::VMOVHPD as u16, + VMOVHPS = super::Opcode::VMOVHPS as u16, + VMOVLHPS = super::Opcode::VMOVLHPS as u16, + VMOVLPD = super::Opcode::VMOVLPD as u16, + VMOVLPS = super::Opcode::VMOVLPS as u16, + VMOVMSKPD = super::Opcode::VMOVMSKPD as u16, + VMOVMSKPS = super::Opcode::VMOVMSKPS as u16, + VMOVNTDQ = super::Opcode::VMOVNTDQ as u16, + VMOVNTDQA = super::Opcode::VMOVNTDQA as u16, + VMOVNTPD = super::Opcode::VMOVNTPD as u16, + VMOVNTPS = super::Opcode::VMOVNTPS as u16, + VMOVQ = super::Opcode::VMOVQ as u16, + VMOVSD = super::Opcode::VMOVSD as u16, + VMOVSHDUP = super::Opcode::VMOVSHDUP as u16, + VMOVSLDUP = super::Opcode::VMOVSLDUP as u16, + VMOVSS = super::Opcode::VMOVSS as u16, + VMOVUPD = super::Opcode::VMOVUPD as u16, + VMOVUPS = super::Opcode::VMOVUPS as u16, + VMPSADBW = super::Opcode::VMPSADBW as u16, + VMPTRLD = super::Opcode::VMPTRLD as u16, + VMPTRST = super::Opcode::VMPTRST as u16, + VMREAD = super::Opcode::VMREAD as u16, + VMRESUME = super::Opcode::VMRESUME as u16, + VMRUN = super::Opcode::VMRUN as u16, + VMSAVE = super::Opcode::VMSAVE as u16, + VMULPD = super::Opcode::VMULPD as u16, + VMULPS = super::Opcode::VMULPS as u16, + VMULSD = super::Opcode::VMULSD as u16, + VMULSS = super::Opcode::VMULSS as u16, + VMWRITE = super::Opcode::VMWRITE as u16, + VMXOFF = super::Opcode::VMXOFF as u16, + VMXON = super::Opcode::VMXON as u16, + VORPD = super::Opcode::VORPD as u16, + VORPS = super::Opcode::VORPS as u16, + VP2INTERSECTD = super::Opcode::VP2INTERSECTD as u16, + VP2INTERSECTQ = super::Opcode::VP2INTERSECTQ as u16, + VP4DPWSSD = super::Opcode::VP4DPWSSD as u16, + VP4DPWSSDS = super::Opcode::VP4DPWSSDS as u16, + VPABSB = super::Opcode::VPABSB as u16, + VPABSD = super::Opcode::VPABSD as u16, + VPABSQ = super::Opcode::VPABSQ as u16, + VPABSW = super::Opcode::VPABSW as u16, + VPACKSSDW = super::Opcode::VPACKSSDW as u16, + VPACKSSWB = super::Opcode::VPACKSSWB as u16, + VPACKUSDW = super::Opcode::VPACKUSDW as u16, + VPACKUSWB = super::Opcode::VPACKUSWB as u16, + VPADDB = super::Opcode::VPADDB as u16, + VPADDD = super::Opcode::VPADDD as u16, + VPADDQ = super::Opcode::VPADDQ as u16, + VPADDSB = super::Opcode::VPADDSB as u16, + VPADDSW = super::Opcode::VPADDSW as u16, + VPADDUSB = super::Opcode::VPADDUSB as u16, + VPADDUSW = super::Opcode::VPADDUSW as u16, + VPADDW = super::Opcode::VPADDW as u16, + VPALIGNR = super::Opcode::VPALIGNR as u16, + VPAND = super::Opcode::VPAND as u16, + VPANDD = super::Opcode::VPANDD as u16, + VPANDN = super::Opcode::VPANDN as u16, + VPANDND = super::Opcode::VPANDND as u16, + VPANDNQ = super::Opcode::VPANDNQ as u16, + VPANDQ = super::Opcode::VPANDQ as u16, + VPAVGB = super::Opcode::VPAVGB as u16, + VPAVGW = super::Opcode::VPAVGW as u16, + VPBLENDD = super::Opcode::VPBLENDD as u16, + VPBLENDMB = super::Opcode::VPBLENDMB as u16, + VPBLENDMD = super::Opcode::VPBLENDMD as u16, + VPBLENDMQ = super::Opcode::VPBLENDMQ as u16, + VPBLENDMW = super::Opcode::VPBLENDMW as u16, + VPBLENDVB = super::Opcode::VPBLENDVB as u16, + VPBLENDW = super::Opcode::VPBLENDW as u16, + VPBROADCASTB = super::Opcode::VPBROADCASTB as u16, + VPBROADCASTD = super::Opcode::VPBROADCASTD as u16, + VPBROADCASTM = super::Opcode::VPBROADCASTM as u16, + VPBROADCASTMB2Q = super::Opcode::VPBROADCASTMB2Q as u16, + VPBROADCASTMW2D = super::Opcode::VPBROADCASTMW2D as u16, + VPBROADCASTQ = super::Opcode::VPBROADCASTQ as u16, + VPBROADCASTW = super::Opcode::VPBROADCASTW as u16, + VPCLMULQDQ = super::Opcode::VPCLMULQDQ as u16, + VPCMPB = super::Opcode::VPCMPB as u16, + VPCMPD = super::Opcode::VPCMPD as u16, + VPCMPEQB = super::Opcode::VPCMPEQB as u16, + VPCMPEQD = super::Opcode::VPCMPEQD as u16, + VPCMPEQQ = super::Opcode::VPCMPEQQ as u16, + VPCMPEQW = super::Opcode::VPCMPEQW as u16, + VPCMPESTRI = super::Opcode::VPCMPESTRI as u16, + VPCMPESTRM = super::Opcode::VPCMPESTRM as u16, + VPCMPGTB = super::Opcode::VPCMPGTB as u16, + VPCMPGTD = super::Opcode::VPCMPGTD as u16, + VPCMPGTQ = super::Opcode::VPCMPGTQ as u16, + VPCMPGTW = super::Opcode::VPCMPGTW as u16, + VPCMPISTRI = super::Opcode::VPCMPISTRI as u16, + VPCMPISTRM = super::Opcode::VPCMPISTRM as u16, + VPCMPQ = super::Opcode::VPCMPQ as u16, + VPCMPUB = super::Opcode::VPCMPUB as u16, + VPCMPUD = super::Opcode::VPCMPUD as u16, + VPCMPUQ = super::Opcode::VPCMPUQ as u16, + VPCMPUW = super::Opcode::VPCMPUW as u16, + VPCMPW = super::Opcode::VPCMPW as u16, + VPCOMPRESSB = super::Opcode::VPCOMPRESSB as u16, + VPCOMPRESSD = super::Opcode::VPCOMPRESSD as u16, + VPCOMPRESSQ = super::Opcode::VPCOMPRESSQ as u16, + VPCOMPRESSW = super::Opcode::VPCOMPRESSW as u16, + VPCONFLICTD = super::Opcode::VPCONFLICTD as u16, + VPCONFLICTQ = super::Opcode::VPCONFLICTQ as u16, + VPDPBUSD = super::Opcode::VPDPBUSD as u16, + VPDPBUSDS = super::Opcode::VPDPBUSDS as u16, + VPDPWSSD = super::Opcode::VPDPWSSD as u16, + VPDPWSSDS = super::Opcode::VPDPWSSDS as u16, + VPERM2F128 = super::Opcode::VPERM2F128 as u16, + VPERM2I128 = super::Opcode::VPERM2I128 as u16, + VPERMB = super::Opcode::VPERMB as u16, + VPERMD = super::Opcode::VPERMD as u16, + VPERMI2B = super::Opcode::VPERMI2B as u16, + VPERMI2D = super::Opcode::VPERMI2D as u16, + VPERMI2PD = super::Opcode::VPERMI2PD as u16, + VPERMI2PS = super::Opcode::VPERMI2PS as u16, + VPERMI2Q = super::Opcode::VPERMI2Q as u16, + VPERMI2W = super::Opcode::VPERMI2W as u16, + VPERMILPD = super::Opcode::VPERMILPD as u16, + VPERMILPS = super::Opcode::VPERMILPS as u16, + VPERMPD = super::Opcode::VPERMPD as u16, + VPERMPS = super::Opcode::VPERMPS as u16, + VPERMQ = super::Opcode::VPERMQ as u16, + VPERMT2B = super::Opcode::VPERMT2B as u16, + VPERMT2D = super::Opcode::VPERMT2D as u16, + VPERMT2PD = super::Opcode::VPERMT2PD as u16, + VPERMT2PS = super::Opcode::VPERMT2PS as u16, + VPERMT2Q = super::Opcode::VPERMT2Q as u16, + VPERMT2W = super::Opcode::VPERMT2W as u16, + VPERMW = super::Opcode::VPERMW as u16, + VPEXPANDB = super::Opcode::VPEXPANDB as u16, + VPEXPANDD = super::Opcode::VPEXPANDD as u16, + VPEXPANDQ = super::Opcode::VPEXPANDQ as u16, + VPEXPANDW = super::Opcode::VPEXPANDW as u16, + VPEXTRB = super::Opcode::VPEXTRB as u16, + VPEXTRD = super::Opcode::VPEXTRD as u16, + VPEXTRQ = super::Opcode::VPEXTRQ as u16, + VPEXTRW = super::Opcode::VPEXTRW as u16, + VPGATHERDD = super::Opcode::VPGATHERDD as u16, + VPGATHERDQ = super::Opcode::VPGATHERDQ as u16, + VPGATHERQD = super::Opcode::VPGATHERQD as u16, + VPGATHERQQ = super::Opcode::VPGATHERQQ as u16, + VPHADDD = super::Opcode::VPHADDD as u16, + VPHADDSW = super::Opcode::VPHADDSW as u16, + VPHADDW = super::Opcode::VPHADDW as u16, + VPHMINPOSUW = super::Opcode::VPHMINPOSUW as u16, + VPHSUBD = super::Opcode::VPHSUBD as u16, + VPHSUBSW = super::Opcode::VPHSUBSW as u16, + VPHSUBW = super::Opcode::VPHSUBW as u16, + VPINSRB = super::Opcode::VPINSRB as u16, + VPINSRD = super::Opcode::VPINSRD as u16, + VPINSRQ = super::Opcode::VPINSRQ as u16, + VPINSRW = super::Opcode::VPINSRW as u16, + VPLZCNTD = super::Opcode::VPLZCNTD as u16, + VPLZCNTQ = super::Opcode::VPLZCNTQ as u16, + VPMADD52HUQ = super::Opcode::VPMADD52HUQ as u16, + VPMADD52LUQ = super::Opcode::VPMADD52LUQ as u16, + VPMADDUBSW = super::Opcode::VPMADDUBSW as u16, + VPMADDWD = super::Opcode::VPMADDWD as u16, + VPMASKMOVD = super::Opcode::VPMASKMOVD as u16, + VPMASKMOVQ = super::Opcode::VPMASKMOVQ as u16, + VPMAXSB = super::Opcode::VPMAXSB as u16, + VPMAXSD = super::Opcode::VPMAXSD as u16, + VPMAXSQ = super::Opcode::VPMAXSQ as u16, + VPMAXSW = super::Opcode::VPMAXSW as u16, + VPMAXUB = super::Opcode::VPMAXUB as u16, + VPMAXUD = super::Opcode::VPMAXUD as u16, + VPMAXUQ = super::Opcode::VPMAXUQ as u16, + VPMAXUW = super::Opcode::VPMAXUW as u16, + VPMINSB = super::Opcode::VPMINSB as u16, + VPMINSD = super::Opcode::VPMINSD as u16, + VPMINSQ = super::Opcode::VPMINSQ as u16, + VPMINSW = super::Opcode::VPMINSW as u16, + VPMINUB = super::Opcode::VPMINUB as u16, + VPMINUD = super::Opcode::VPMINUD as u16, + VPMINUQ = super::Opcode::VPMINUQ as u16, + VPMINUW = super::Opcode::VPMINUW as u16, + VPMOVB2D = super::Opcode::VPMOVB2D as u16, + VPMOVB2M = super::Opcode::VPMOVB2M as u16, + VPMOVD2M = super::Opcode::VPMOVD2M as u16, + VPMOVDB = super::Opcode::VPMOVDB as u16, + VPMOVDW = super::Opcode::VPMOVDW as u16, + VPMOVM2B = super::Opcode::VPMOVM2B as u16, + VPMOVM2D = super::Opcode::VPMOVM2D as u16, + VPMOVM2Q = super::Opcode::VPMOVM2Q as u16, + VPMOVM2W = super::Opcode::VPMOVM2W as u16, + VPMOVMSKB = super::Opcode::VPMOVMSKB as u16, + VPMOVQ2M = super::Opcode::VPMOVQ2M as u16, + VPMOVQB = super::Opcode::VPMOVQB as u16, + VPMOVQD = super::Opcode::VPMOVQD as u16, + VPMOVQW = super::Opcode::VPMOVQW as u16, + VPMOVSDB = super::Opcode::VPMOVSDB as u16, + VPMOVSDW = super::Opcode::VPMOVSDW as u16, + VPMOVSQB = super::Opcode::VPMOVSQB as u16, + VPMOVSQD = super::Opcode::VPMOVSQD as u16, + VPMOVSQW = super::Opcode::VPMOVSQW as u16, + VPMOVSWB = super::Opcode::VPMOVSWB as u16, + VPMOVSXBD = super::Opcode::VPMOVSXBD as u16, + VPMOVSXBQ = super::Opcode::VPMOVSXBQ as u16, + VPMOVSXBW = super::Opcode::VPMOVSXBW as u16, + VPMOVSXDQ = super::Opcode::VPMOVSXDQ as u16, + VPMOVSXWD = super::Opcode::VPMOVSXWD as u16, + VPMOVSXWQ = super::Opcode::VPMOVSXWQ as u16, + VPMOVUSDB = super::Opcode::VPMOVUSDB as u16, + VPMOVUSDW = super::Opcode::VPMOVUSDW as u16, + VPMOVUSQB = super::Opcode::VPMOVUSQB as u16, + VPMOVUSQD = super::Opcode::VPMOVUSQD as u16, + VPMOVUSQW = super::Opcode::VPMOVUSQW as u16, + VPMOVUSWB = super::Opcode::VPMOVUSWB as u16, + VPMOVW2M = super::Opcode::VPMOVW2M as u16, + VPMOVWB = super::Opcode::VPMOVWB as u16, + VPMOVZXBD = super::Opcode::VPMOVZXBD as u16, + VPMOVZXBQ = super::Opcode::VPMOVZXBQ as u16, + VPMOVZXBW = super::Opcode::VPMOVZXBW as u16, + VPMOVZXDQ = super::Opcode::VPMOVZXDQ as u16, + VPMOVZXWD = super::Opcode::VPMOVZXWD as u16, + VPMOVZXWQ = super::Opcode::VPMOVZXWQ as u16, + VPMULDQ = super::Opcode::VPMULDQ as u16, + VPMULHRSW = super::Opcode::VPMULHRSW as u16, + VPMULHUW = super::Opcode::VPMULHUW as u16, + VPMULHW = super::Opcode::VPMULHW as u16, + VPMULLD = super::Opcode::VPMULLD as u16, + VPMULLQ = super::Opcode::VPMULLQ as u16, + VPMULLW = super::Opcode::VPMULLW as u16, + VPMULTISHIFTQB = super::Opcode::VPMULTISHIFTQB as u16, + VPMULUDQ = super::Opcode::VPMULUDQ as u16, + VPOPCNTB = super::Opcode::VPOPCNTB as u16, + VPOPCNTD = super::Opcode::VPOPCNTD as u16, + VPOPCNTQ = super::Opcode::VPOPCNTQ as u16, + VPOPCNTW = super::Opcode::VPOPCNTW as u16, + VPOR = super::Opcode::VPOR as u16, + VPORD = super::Opcode::VPORD as u16, + VPORQ = super::Opcode::VPORQ as u16, + VPROLD = super::Opcode::VPROLD as u16, + VPROLQ = super::Opcode::VPROLQ as u16, + VPROLVD = super::Opcode::VPROLVD as u16, + VPROLVQ = super::Opcode::VPROLVQ as u16, + VPRORD = super::Opcode::VPRORD as u16, + VPRORQ = super::Opcode::VPRORQ as u16, + VPRORRD = super::Opcode::VPRORRD as u16, + VPRORRQ = super::Opcode::VPRORRQ as u16, + VPRORVD = super::Opcode::VPRORVD as u16, + VPRORVQ = super::Opcode::VPRORVQ as u16, + VPSADBW = super::Opcode::VPSADBW as u16, + VPSCATTERDD = super::Opcode::VPSCATTERDD as u16, + VPSCATTERDQ = super::Opcode::VPSCATTERDQ as u16, + VPSCATTERQD = super::Opcode::VPSCATTERQD as u16, + VPSCATTERQQ = super::Opcode::VPSCATTERQQ as u16, + VPSHLDD = super::Opcode::VPSHLDD as u16, + VPSHLDQ = super::Opcode::VPSHLDQ as u16, + VPSHLDVD = super::Opcode::VPSHLDVD as u16, + VPSHLDVQ = super::Opcode::VPSHLDVQ as u16, + VPSHLDVW = super::Opcode::VPSHLDVW as u16, + VPSHLDW = super::Opcode::VPSHLDW as u16, + VPSHRDD = super::Opcode::VPSHRDD as u16, + VPSHRDQ = super::Opcode::VPSHRDQ as u16, + VPSHRDVD = super::Opcode::VPSHRDVD as u16, + VPSHRDVQ = super::Opcode::VPSHRDVQ as u16, + VPSHRDVW = super::Opcode::VPSHRDVW as u16, + VPSHRDW = super::Opcode::VPSHRDW as u16, + VPSHUFB = super::Opcode::VPSHUFB as u16, + VPSHUFBITQMB = super::Opcode::VPSHUFBITQMB as u16, + VPSHUFD = super::Opcode::VPSHUFD as u16, + VPSHUFHW = super::Opcode::VPSHUFHW as u16, + VPSHUFLW = super::Opcode::VPSHUFLW as u16, + VPSIGNB = super::Opcode::VPSIGNB as u16, + VPSIGND = super::Opcode::VPSIGND as u16, + VPSIGNW = super::Opcode::VPSIGNW as u16, + VPSLLD = super::Opcode::VPSLLD as u16, + VPSLLDQ = super::Opcode::VPSLLDQ as u16, + VPSLLQ = super::Opcode::VPSLLQ as u16, + VPSLLVD = super::Opcode::VPSLLVD as u16, + VPSLLVQ = super::Opcode::VPSLLVQ as u16, + VPSLLVW = super::Opcode::VPSLLVW as u16, + VPSLLW = super::Opcode::VPSLLW as u16, + VPSRAD = super::Opcode::VPSRAD as u16, + VPSRAQ = super::Opcode::VPSRAQ as u16, + VPSRAVD = super::Opcode::VPSRAVD as u16, + VPSRAVQ = super::Opcode::VPSRAVQ as u16, + VPSRAVW = super::Opcode::VPSRAVW as u16, + VPSRAW = super::Opcode::VPSRAW as u16, + VPSRLD = super::Opcode::VPSRLD as u16, + VPSRLDQ = super::Opcode::VPSRLDQ as u16, + VPSRLQ = super::Opcode::VPSRLQ as u16, + VPSRLVD = super::Opcode::VPSRLVD as u16, + VPSRLVQ = super::Opcode::VPSRLVQ as u16, + VPSRLVW = super::Opcode::VPSRLVW as u16, + VPSRLW = super::Opcode::VPSRLW as u16, + VPSUBB = super::Opcode::VPSUBB as u16, + VPSUBD = super::Opcode::VPSUBD as u16, + VPSUBQ = super::Opcode::VPSUBQ as u16, + VPSUBSB = super::Opcode::VPSUBSB as u16, + VPSUBSW = super::Opcode::VPSUBSW as u16, + VPSUBUSB = super::Opcode::VPSUBUSB as u16, + VPSUBUSW = super::Opcode::VPSUBUSW as u16, + VPSUBW = super::Opcode::VPSUBW as u16, + VPTERNLOGD = super::Opcode::VPTERNLOGD as u16, + VPTERNLOGQ = super::Opcode::VPTERNLOGQ as u16, + VPTEST = super::Opcode::VPTEST as u16, + VPTESTMB = super::Opcode::VPTESTMB as u16, + VPTESTMD = super::Opcode::VPTESTMD as u16, + VPTESTMQ = super::Opcode::VPTESTMQ as u16, + VPTESTMW = super::Opcode::VPTESTMW as u16, + VPTESTNMB = super::Opcode::VPTESTNMB as u16, + VPTESTNMD = super::Opcode::VPTESTNMD as u16, + VPTESTNMQ = super::Opcode::VPTESTNMQ as u16, + VPTESTNMW = super::Opcode::VPTESTNMW as u16, + VPUNPCKHBW = super::Opcode::VPUNPCKHBW as u16, + VPUNPCKHDQ = super::Opcode::VPUNPCKHDQ as u16, + VPUNPCKHQDQ = super::Opcode::VPUNPCKHQDQ as u16, + VPUNPCKHWD = super::Opcode::VPUNPCKHWD as u16, + VPUNPCKLBW = super::Opcode::VPUNPCKLBW as u16, + VPUNPCKLDQ = super::Opcode::VPUNPCKLDQ as u16, + VPUNPCKLQDQ = super::Opcode::VPUNPCKLQDQ as u16, + VPUNPCKLWD = super::Opcode::VPUNPCKLWD as u16, + VPXOR = super::Opcode::VPXOR as u16, + VPXORD = super::Opcode::VPXORD as u16, + VPXORQ = super::Opcode::VPXORQ as u16, + VRANGEPD = super::Opcode::VRANGEPD as u16, + VRANGEPS = super::Opcode::VRANGEPS as u16, + VRANGESD = super::Opcode::VRANGESD as u16, + VRANGESS = super::Opcode::VRANGESS as u16, + VRCP14PD = super::Opcode::VRCP14PD as u16, + VRCP14PS = super::Opcode::VRCP14PS as u16, + VRCP14SD = super::Opcode::VRCP14SD as u16, + VRCP14SS = super::Opcode::VRCP14SS as u16, + VRCP28PD = super::Opcode::VRCP28PD as u16, + VRCP28PS = super::Opcode::VRCP28PS as u16, + VRCP28SD = super::Opcode::VRCP28SD as u16, + VRCP28SS = super::Opcode::VRCP28SS as u16, + VRCPPS = super::Opcode::VRCPPS as u16, + VRCPSS = super::Opcode::VRCPSS as u16, + VREDUCEPD = super::Opcode::VREDUCEPD as u16, + VREDUCEPS = super::Opcode::VREDUCEPS as u16, + VREDUCESD = super::Opcode::VREDUCESD as u16, + VREDUCESS = super::Opcode::VREDUCESS as u16, + VRNDSCALEPD = super::Opcode::VRNDSCALEPD as u16, + VRNDSCALEPS = super::Opcode::VRNDSCALEPS as u16, + VRNDSCALESD = super::Opcode::VRNDSCALESD as u16, + VRNDSCALESS = super::Opcode::VRNDSCALESS as u16, + VROUNDPD = super::Opcode::VROUNDPD as u16, + VROUNDPS = super::Opcode::VROUNDPS as u16, + VROUNDSD = super::Opcode::VROUNDSD as u16, + VROUNDSS = super::Opcode::VROUNDSS as u16, + VRSQRT14PD = super::Opcode::VRSQRT14PD as u16, + VRSQRT14PS = super::Opcode::VRSQRT14PS as u16, + VRSQRT14SD = super::Opcode::VRSQRT14SD as u16, + VRSQRT14SS = super::Opcode::VRSQRT14SS as u16, + VRSQRT28PD = super::Opcode::VRSQRT28PD as u16, + VRSQRT28PS = super::Opcode::VRSQRT28PS as u16, + VRSQRT28SD = super::Opcode::VRSQRT28SD as u16, + VRSQRT28SS = super::Opcode::VRSQRT28SS as u16, + VRSQRTPS = super::Opcode::VRSQRTPS as u16, + VRSQRTSS = super::Opcode::VRSQRTSS as u16, + VSCALEDPD = super::Opcode::VSCALEDPD as u16, + VSCALEDPS = super::Opcode::VSCALEDPS as u16, + VSCALEDSD = super::Opcode::VSCALEDSD as u16, + VSCALEDSS = super::Opcode::VSCALEDSS as u16, + VSCALEFPD = super::Opcode::VSCALEFPD as u16, + VSCALEFPS = super::Opcode::VSCALEFPS as u16, + VSCALEFSD = super::Opcode::VSCALEFSD as u16, + VSCALEFSS = super::Opcode::VSCALEFSS as u16, + VSCATTERDD = super::Opcode::VSCATTERDD as u16, + VSCATTERDPD = super::Opcode::VSCATTERDPD as u16, + VSCATTERDPS = super::Opcode::VSCATTERDPS as u16, + VSCATTERDQ = super::Opcode::VSCATTERDQ as u16, + VSCATTERPF0DPD = super::Opcode::VSCATTERPF0DPD as u16, + VSCATTERPF0DPS = super::Opcode::VSCATTERPF0DPS as u16, + VSCATTERPF0QPD = super::Opcode::VSCATTERPF0QPD as u16, + VSCATTERPF0QPS = super::Opcode::VSCATTERPF0QPS as u16, + VSCATTERPF1DPD = super::Opcode::VSCATTERPF1DPD as u16, + VSCATTERPF1DPS = super::Opcode::VSCATTERPF1DPS as u16, + VSCATTERPF1QPD = super::Opcode::VSCATTERPF1QPD as u16, + VSCATTERPF1QPS = super::Opcode::VSCATTERPF1QPS as u16, + VSCATTERQD = super::Opcode::VSCATTERQD as u16, + VSCATTERQPD = super::Opcode::VSCATTERQPD as u16, + VSCATTERQPS = super::Opcode::VSCATTERQPS as u16, + VSCATTERQQ = super::Opcode::VSCATTERQQ as u16, + VSHUFF32X4 = super::Opcode::VSHUFF32X4 as u16, + VSHUFF64X2 = super::Opcode::VSHUFF64X2 as u16, + VSHUFI32X4 = super::Opcode::VSHUFI32X4 as u16, + VSHUFI64X2 = super::Opcode::VSHUFI64X2 as u16, + VSHUFPD = super::Opcode::VSHUFPD as u16, + VSHUFPS = super::Opcode::VSHUFPS as u16, + VSQRTPD = super::Opcode::VSQRTPD as u16, + VSQRTPS = super::Opcode::VSQRTPS as u16, + VSQRTSD = super::Opcode::VSQRTSD as u16, + VSQRTSS = super::Opcode::VSQRTSS as u16, + VSTMXCSR = super::Opcode::VSTMXCSR as u16, + VSUBPD = super::Opcode::VSUBPD as u16, + VSUBPS = super::Opcode::VSUBPS as u16, + VSUBSD = super::Opcode::VSUBSD as u16, + VSUBSS = super::Opcode::VSUBSS as u16, + VTESTPD = super::Opcode::VTESTPD as u16, + VTESTPS = super::Opcode::VTESTPS as u16, + VUCOMISD = super::Opcode::VUCOMISD as u16, + VUCOMISS = super::Opcode::VUCOMISS as u16, + VUNPCKHPD = super::Opcode::VUNPCKHPD as u16, + VUNPCKHPS = super::Opcode::VUNPCKHPS as u16, + VUNPCKLPD = super::Opcode::VUNPCKLPD as u16, + VUNPCKLPS = super::Opcode::VUNPCKLPS as u16, + VXORPD = super::Opcode::VXORPD as u16, + VXORPS = super::Opcode::VXORPS as u16, + VZEROALL = super::Opcode::VZEROALL as u16, + VZEROUPPER = super::Opcode::VZEROUPPER as u16, + WAIT = super::Opcode::WAIT as u16, + WBINVD = super::Opcode::WBINVD as u16, + WRFSBASE = super::Opcode::WRFSBASE as u16, + WRGSBASE = super::Opcode::WRGSBASE as u16, + WRMSR = super::Opcode::WRMSR as u16, + WRPKRU = super::Opcode::WRPKRU as u16, + WRSS = super::Opcode::WRSS as u16, + WRUSS = super::Opcode::WRUSS as u16, + XABORT = super::Opcode::XABORT as u16, + XADD = super::Opcode::XADD as u16, + XBEGIN = super::Opcode::XBEGIN as u16, + XCHG = super::Opcode::XCHG as u16, + XEND = super::Opcode::XEND as u16, + XGETBV = super::Opcode::XGETBV as u16, + XLAT = super::Opcode::XLAT as u16, + XOR = super::Opcode::XOR as u16, + XORPD = super::Opcode::XORPD as u16, + XORPS = super::Opcode::XORPS as u16, + XRESLDTRK = super::Opcode::XRESLDTRK as u16, + XRSTOR = super::Opcode::XRSTOR as u16, + XRSTORS = super::Opcode::XRSTORS as u16, + XRSTORS64 = super::Opcode::XRSTORS64 as u16, + XSAVE = super::Opcode::XSAVE as u16, + XSAVEC = super::Opcode::XSAVEC as u16, + XSAVEC64 = super::Opcode::XSAVEC64 as u16, + XSAVEOPT = super::Opcode::XSAVEOPT as u16, + XSAVES = super::Opcode::XSAVES as u16, + XSAVES64 = super::Opcode::XSAVES64 as u16, + XSETBV = super::Opcode::XSETBV as u16, + XSUSLDTRK = super::Opcode::XSUSLDTRK as u16, + XTEST = super::Opcode::XTEST as u16, + } +} + +pub(crate) mod protected_mode { + #[allow(non_camel_case_types)] + #[derive(Copy, Clone, Debug, Eq, PartialEq)] + #[non_exhaustive] + #[repr(u16)] + pub enum Opcode { + AAA = super::Opcode::AAA as u16, + AAD = super::Opcode::AAD as u16, + AAM = super::Opcode::AAM as u16, + AAS = super::Opcode::AAS as u16, + ADC = super::Opcode::ADC as u16, + ADCX = super::Opcode::ADCX as u16, + ADD = super::Opcode::ADD as u16, + ADDPD = super::Opcode::ADDPD as u16, + ADDPS = super::Opcode::ADDPS as u16, + ADDSD = super::Opcode::ADDSD as u16, + ADDSS = super::Opcode::ADDSS as u16, + ADDSUBPD = super::Opcode::ADDSUBPD as u16, + ADDSUBPS = super::Opcode::ADDSUBPS as u16, + ADOX = super::Opcode::ADOX as u16, + AESDEC = super::Opcode::AESDEC as u16, + AESDEC128KL = super::Opcode::AESDEC128KL as u16, + AESDEC256KL = super::Opcode::AESDEC256KL as u16, + AESDECLAST = super::Opcode::AESDECLAST as u16, + AESDECWIDE128KL = super::Opcode::AESDECWIDE128KL as u16, + AESDECWIDE256KL = super::Opcode::AESDECWIDE256KL as u16, + AESENC = super::Opcode::AESENC as u16, + AESENC128KL = super::Opcode::AESENC128KL as u16, + AESENC256KL = super::Opcode::AESENC256KL as u16, + AESENCLAST = super::Opcode::AESENCLAST as u16, + AESENCWIDE128KL = super::Opcode::AESENCWIDE128KL as u16, + AESENCWIDE256KL = super::Opcode::AESENCWIDE256KL as u16, + AESIMC = super::Opcode::AESIMC as u16, + AESKEYGENASSIST = super::Opcode::AESKEYGENASSIST as u16, + AND = super::Opcode::AND as u16, + ANDN = super::Opcode::ANDN as u16, + ANDNPD = super::Opcode::ANDNPD as u16, + ANDNPS = super::Opcode::ANDNPS as u16, + ANDPD = super::Opcode::ANDPD as u16, + ANDPS = super::Opcode::ANDPS as u16, + ARPL = super::Opcode::ARPL as u16, + BEXTR = super::Opcode::BEXTR as u16, + BLENDPD = super::Opcode::BLENDPD as u16, + BLENDPS = super::Opcode::BLENDPS as u16, + BLENDVPD = super::Opcode::BLENDVPD as u16, + BLENDVPS = super::Opcode::BLENDVPS as u16, + BLENDW = super::Opcode::BLENDW as u16, + BLSI = super::Opcode::BLSI as u16, + BLSMSK = super::Opcode::BLSMSK as u16, + BLSR = super::Opcode::BLSR as u16, + BNDCL = super::Opcode::BNDCL as u16, + BNDCN = super::Opcode::BNDCN as u16, + BNDCU = super::Opcode::BNDCU as u16, + BNDLDX = super::Opcode::BNDLDX as u16, + BNDMK = super::Opcode::BNDMK as u16, + BNDMOV = super::Opcode::BNDMOV as u16, + BNDSTX = super::Opcode::BNDSTX as u16, + BOUND = super::Opcode::BOUND as u16, + BSF = super::Opcode::BSF as u16, + BSR = super::Opcode::BSR as u16, + BSWAP = super::Opcode::BSWAP as u16, + BT = super::Opcode::BT as u16, + BTC = super::Opcode::BTC as u16, + BTR = super::Opcode::BTR as u16, + BTS = super::Opcode::BTS as u16, + BZHI = super::Opcode::BZHI as u16, + CALL = super::Opcode::CALL as u16, + CALLF = super::Opcode::CALLF as u16, + CBW = super::Opcode::CBW as u16, + CDQ = super::Opcode::CDQ as u16, + CDQE = super::Opcode::CDQE as u16, + CLAC = super::Opcode::CLAC as u16, + CLC = super::Opcode::CLC as u16, + CLD = super::Opcode::CLD as u16, + CLFLUSH = super::Opcode::CLFLUSH as u16, + CLFLUSHOPT = super::Opcode::CLFLUSHOPT as u16, + CLGI = super::Opcode::CLGI as u16, + CLI = super::Opcode::CLI as u16, + CLRSSBSY = super::Opcode::CLRSSBSY as u16, + CLTS = super::Opcode::CLTS as u16, + CLUI = super::Opcode::CLUI as u16, + CLWB = super::Opcode::CLWB as u16, + CLZERO = super::Opcode::CLZERO as u16, + CMC = super::Opcode::CMC as u16, + CMOVA = super::Opcode::CMOVA as u16, + CMOVB = super::Opcode::CMOVB as u16, + CMOVG = super::Opcode::CMOVG as u16, + CMOVGE = super::Opcode::CMOVGE as u16, + CMOVL = super::Opcode::CMOVL as u16, + CMOVLE = super::Opcode::CMOVLE as u16, + CMOVNA = super::Opcode::CMOVNA as u16, + CMOVNB = super::Opcode::CMOVNB as u16, + CMOVNO = super::Opcode::CMOVNO as u16, + CMOVNP = super::Opcode::CMOVNP as u16, + CMOVNS = super::Opcode::CMOVNS as u16, + CMOVNZ = super::Opcode::CMOVNZ as u16, + CMOVO = super::Opcode::CMOVO as u16, + CMOVP = super::Opcode::CMOVP as u16, + CMOVS = super::Opcode::CMOVS as u16, + CMOVZ = super::Opcode::CMOVZ as u16, + CMP = super::Opcode::CMP as u16, + CMPPD = super::Opcode::CMPPD as u16, + CMPPS = super::Opcode::CMPPS as u16, + CMPS = super::Opcode::CMPS as u16, + CMPSD = super::Opcode::CMPSD as u16, + CMPSS = super::Opcode::CMPSS as u16, + CMPXCHG = super::Opcode::CMPXCHG as u16, + CMPXCHG16B = super::Opcode::CMPXCHG16B as u16, + CMPXCHG8B = super::Opcode::CMPXCHG8B as u16, + COMISD = super::Opcode::COMISD as u16, + COMISS = super::Opcode::COMISS as u16, + CPUID = super::Opcode::CPUID as u16, + CQO = super::Opcode::CQO as u16, + CRC32 = super::Opcode::CRC32 as u16, + CVTDQ2PD = super::Opcode::CVTDQ2PD as u16, + CVTDQ2PS = super::Opcode::CVTDQ2PS as u16, + CVTPD2DQ = super::Opcode::CVTPD2DQ as u16, + CVTPD2PI = super::Opcode::CVTPD2PI as u16, + CVTPD2PS = super::Opcode::CVTPD2PS as u16, + CVTPI2PD = super::Opcode::CVTPI2PD as u16, + CVTPI2PS = super::Opcode::CVTPI2PS as u16, + CVTPS2DQ = super::Opcode::CVTPS2DQ as u16, + CVTPS2PD = super::Opcode::CVTPS2PD as u16, + CVTPS2PI = super::Opcode::CVTPS2PI as u16, + CVTSD2SI = super::Opcode::CVTSD2SI as u16, + CVTSD2SS = super::Opcode::CVTSD2SS as u16, + CVTSI2SD = super::Opcode::CVTSI2SD as u16, + CVTSI2SS = super::Opcode::CVTSI2SS as u16, + CVTSS2SD = super::Opcode::CVTSS2SD as u16, + CVTSS2SI = super::Opcode::CVTSS2SI as u16, + CVTTPD2DQ = super::Opcode::CVTTPD2DQ as u16, + CVTTPD2PI = super::Opcode::CVTTPD2PI as u16, + CVTTPS2DQ = super::Opcode::CVTTPS2DQ as u16, + CVTTPS2PI = super::Opcode::CVTTPS2PI as u16, + CVTTSD2SI = super::Opcode::CVTTSD2SI as u16, + CVTTSS2SI = super::Opcode::CVTTSS2SI as u16, + CWD = super::Opcode::CWD as u16, + CWDE = super::Opcode::CWDE as u16, + DAA = super::Opcode::DAA as u16, + DAS = super::Opcode::DAS as u16, + DEC = super::Opcode::DEC as u16, + DIV = super::Opcode::DIV as u16, + DIVPD = super::Opcode::DIVPD as u16, + DIVPS = super::Opcode::DIVPS as u16, + DIVSD = super::Opcode::DIVSD as u16, + DIVSS = super::Opcode::DIVSS as u16, + DPPD = super::Opcode::DPPD as u16, + DPPS = super::Opcode::DPPS as u16, + EMMS = super::Opcode::EMMS as u16, + ENCLS = super::Opcode::ENCLS as u16, + ENCLU = super::Opcode::ENCLU as u16, + ENCLV = super::Opcode::ENCLV as u16, + ENCODEKEY128 = super::Opcode::ENCODEKEY128 as u16, + ENCODEKEY256 = super::Opcode::ENCODEKEY256 as u16, + ENDBR32 = super::Opcode::ENDBR32 as u16, + ENDBR64 = super::Opcode::ENDBR64 as u16, + ENQCMD = super::Opcode::ENQCMD as u16, + ENQCMDS = super::Opcode::ENQCMDS as u16, + ENTER = super::Opcode::ENTER as u16, + EXTRACTPS = super::Opcode::EXTRACTPS as u16, + EXTRQ = super::Opcode::EXTRQ as u16, + F2XM1 = super::Opcode::F2XM1 as u16, + FABS = super::Opcode::FABS as u16, + FADD = super::Opcode::FADD as u16, + FADDP = super::Opcode::FADDP as u16, + FBLD = super::Opcode::FBLD as u16, + FBSTP = super::Opcode::FBSTP as u16, + FCHS = super::Opcode::FCHS as u16, + FCMOVB = super::Opcode::FCMOVB as u16, + FCMOVBE = super::Opcode::FCMOVBE as u16, + FCMOVE = super::Opcode::FCMOVE as u16, + FCMOVNB = super::Opcode::FCMOVNB as u16, + FCMOVNBE = super::Opcode::FCMOVNBE as u16, + FCMOVNE = super::Opcode::FCMOVNE as u16, + FCMOVNU = super::Opcode::FCMOVNU as u16, + FCMOVU = super::Opcode::FCMOVU as u16, + FCOM = super::Opcode::FCOM as u16, + FCOMI = super::Opcode::FCOMI as u16, + FCOMIP = super::Opcode::FCOMIP as u16, + FCOMP = super::Opcode::FCOMP as u16, + FCOMPP = super::Opcode::FCOMPP as u16, + FCOS = super::Opcode::FCOS as u16, + FDECSTP = super::Opcode::FDECSTP as u16, + FDISI8087_NOP = super::Opcode::FDISI8087_NOP as u16, + FDIV = super::Opcode::FDIV as u16, + FDIVP = super::Opcode::FDIVP as u16, + FDIVR = super::Opcode::FDIVR as u16, + FDIVRP = super::Opcode::FDIVRP as u16, + FEMMS = super::Opcode::FEMMS as u16, + FENI8087_NOP = super::Opcode::FENI8087_NOP as u16, + FFREE = super::Opcode::FFREE as u16, + FFREEP = super::Opcode::FFREEP as u16, + FIADD = super::Opcode::FIADD as u16, + FICOM = super::Opcode::FICOM as u16, + FICOMP = super::Opcode::FICOMP as u16, + FIDIV = super::Opcode::FIDIV as u16, + FIDIVR = super::Opcode::FIDIVR as u16, + FILD = super::Opcode::FILD as u16, + FIMUL = super::Opcode::FIMUL as u16, + FINCSTP = super::Opcode::FINCSTP as u16, + FIST = super::Opcode::FIST as u16, + FISTP = super::Opcode::FISTP as u16, + FISTTP = super::Opcode::FISTTP as u16, + FISUB = super::Opcode::FISUB as u16, + FISUBR = super::Opcode::FISUBR as u16, + FLD = super::Opcode::FLD as u16, + FLD1 = super::Opcode::FLD1 as u16, + FLDCW = super::Opcode::FLDCW as u16, + FLDENV = super::Opcode::FLDENV as u16, + FLDL2E = super::Opcode::FLDL2E as u16, + FLDL2T = super::Opcode::FLDL2T as u16, + FLDLG2 = super::Opcode::FLDLG2 as u16, + FLDLN2 = super::Opcode::FLDLN2 as u16, + FLDPI = super::Opcode::FLDPI as u16, + FLDZ = super::Opcode::FLDZ as u16, + FMUL = super::Opcode::FMUL as u16, + FMULP = super::Opcode::FMULP as u16, + FNCLEX = super::Opcode::FNCLEX as u16, + FNINIT = super::Opcode::FNINIT as u16, + FNOP = super::Opcode::FNOP as u16, + FNSAVE = super::Opcode::FNSAVE as u16, + FNSTCW = super::Opcode::FNSTCW as u16, + FNSTENV = super::Opcode::FNSTENV as u16, + FNSTOR = super::Opcode::FNSTOR as u16, + FNSTSW = super::Opcode::FNSTSW as u16, + FPATAN = super::Opcode::FPATAN as u16, + FPREM = super::Opcode::FPREM as u16, + FPREM1 = super::Opcode::FPREM1 as u16, + FPTAN = super::Opcode::FPTAN as u16, + FRNDINT = super::Opcode::FRNDINT as u16, + FRSTOR = super::Opcode::FRSTOR as u16, + FSCALE = super::Opcode::FSCALE as u16, + FSETPM287_NOP = super::Opcode::FSETPM287_NOP as u16, + FSIN = super::Opcode::FSIN as u16, + FSINCOS = super::Opcode::FSINCOS as u16, + FSQRT = super::Opcode::FSQRT as u16, + FST = super::Opcode::FST as u16, + FSTP = super::Opcode::FSTP as u16, + FSTPNCE = super::Opcode::FSTPNCE as u16, + FSUB = super::Opcode::FSUB as u16, + FSUBP = super::Opcode::FSUBP as u16, + FSUBR = super::Opcode::FSUBR as u16, + FSUBRP = super::Opcode::FSUBRP as u16, + FTST = super::Opcode::FTST as u16, + FUCOM = super::Opcode::FUCOM as u16, + FUCOMI = super::Opcode::FUCOMI as u16, + FUCOMIP = super::Opcode::FUCOMIP as u16, + FUCOMP = super::Opcode::FUCOMP as u16, + FUCOMPP = super::Opcode::FUCOMPP as u16, + FXAM = super::Opcode::FXAM as u16, + FXCH = super::Opcode::FXCH as u16, + FXRSTOR = super::Opcode::FXRSTOR as u16, + FXSAVE = super::Opcode::FXSAVE as u16, + FXTRACT = super::Opcode::FXTRACT as u16, + FYL2X = super::Opcode::FYL2X as u16, + FYL2XP1 = super::Opcode::FYL2XP1 as u16, + GETSEC = super::Opcode::GETSEC as u16, + GF2P8AFFINEINVQB = super::Opcode::GF2P8AFFINEINVQB as u16, + GF2P8AFFINEQB = super::Opcode::GF2P8AFFINEQB as u16, + GF2P8MULB = super::Opcode::GF2P8MULB as u16, + HADDPD = super::Opcode::HADDPD as u16, + HADDPS = super::Opcode::HADDPS as u16, + HLT = super::Opcode::HLT as u16, + HRESET = super::Opcode::HRESET as u16, + HSUBPD = super::Opcode::HSUBPD as u16, + HSUBPS = super::Opcode::HSUBPS as u16, + IDIV = super::Opcode::IDIV as u16, + IMUL = super::Opcode::IMUL as u16, + IN = super::Opcode::IN as u16, + INC = super::Opcode::INC as u16, + INCSSP = super::Opcode::INCSSP as u16, + INS = super::Opcode::INS as u16, + INSERTPS = super::Opcode::INSERTPS as u16, + INSERTQ = super::Opcode::INSERTQ as u16, + INT = super::Opcode::INT as u16, + INTO = super::Opcode::INTO as u16, + Invalid = super::Opcode::Invalid as u16, + INVD = super::Opcode::INVD as u16, + INVEPT = super::Opcode::INVEPT as u16, + INVLPG = super::Opcode::INVLPG as u16, + INVLPGA = super::Opcode::INVLPGA as u16, + INVLPGB = super::Opcode::INVLPGB as u16, + INVPCID = super::Opcode::INVPCID as u16, + INVVPID = super::Opcode::INVVPID as u16, + IRET = super::Opcode::IRET as u16, + IRETD = super::Opcode::IRETD as u16, + IRETQ = super::Opcode::IRETQ as u16, + JA = super::Opcode::JA as u16, + JB = super::Opcode::JB as u16, + JECXZ = super::Opcode::JECXZ as u16, + JG = super::Opcode::JG as u16, + JGE = super::Opcode::JGE as u16, + JL = super::Opcode::JL as u16, + JLE = super::Opcode::JLE as u16, + JMP = super::Opcode::JMP as u16, + JMPE = super::Opcode::JMPE as u16, + JMPF = super::Opcode::JMPF as u16, + JNA = super::Opcode::JNA as u16, + JNB = super::Opcode::JNB as u16, + JNO = super::Opcode::JNO as u16, + JNP = super::Opcode::JNP as u16, + JNS = super::Opcode::JNS as u16, + JNZ = super::Opcode::JNZ as u16, + JO = super::Opcode::JO as u16, + JP = super::Opcode::JP as u16, + JS = super::Opcode::JS as u16, + JZ = super::Opcode::JZ as u16, + KADDB = super::Opcode::KADDB as u16, + KADDD = super::Opcode::KADDD as u16, + KADDQ = super::Opcode::KADDQ as u16, + KADDW = super::Opcode::KADDW as u16, + KANDB = super::Opcode::KANDB as u16, + KANDD = super::Opcode::KANDD as u16, + KANDNB = super::Opcode::KANDNB as u16, + KANDND = super::Opcode::KANDND as u16, + KANDNQ = super::Opcode::KANDNQ as u16, + KANDNW = super::Opcode::KANDNW as u16, + KANDQ = super::Opcode::KANDQ as u16, + KANDW = super::Opcode::KANDW as u16, + KMOVB = super::Opcode::KMOVB as u16, + KMOVD = super::Opcode::KMOVD as u16, + KMOVQ = super::Opcode::KMOVQ as u16, + KMOVW = super::Opcode::KMOVW as u16, + KNOTB = super::Opcode::KNOTB as u16, + KNOTD = super::Opcode::KNOTD as u16, + KNOTQ = super::Opcode::KNOTQ as u16, + KNOTW = super::Opcode::KNOTW as u16, + KORB = super::Opcode::KORB as u16, + KORD = super::Opcode::KORD as u16, + KORQ = super::Opcode::KORQ as u16, + KORTESTB = super::Opcode::KORTESTB as u16, + KORTESTD = super::Opcode::KORTESTD as u16, + KORTESTQ = super::Opcode::KORTESTQ as u16, + KORTESTW = super::Opcode::KORTESTW as u16, + KORW = super::Opcode::KORW as u16, + KSHIFTLB = super::Opcode::KSHIFTLB as u16, + KSHIFTLD = super::Opcode::KSHIFTLD as u16, + KSHIFTLQ = super::Opcode::KSHIFTLQ as u16, + KSHIFTLW = super::Opcode::KSHIFTLW as u16, + KSHIFTRB = super::Opcode::KSHIFTRB as u16, + KSHIFTRD = super::Opcode::KSHIFTRD as u16, + KSHIFTRQ = super::Opcode::KSHIFTRQ as u16, + KSHIFTRW = super::Opcode::KSHIFTRW as u16, + KTESTB = super::Opcode::KTESTB as u16, + KTESTD = super::Opcode::KTESTD as u16, + KTESTQ = super::Opcode::KTESTQ as u16, + KTESTW = super::Opcode::KTESTW as u16, + KUNPCKBW = super::Opcode::KUNPCKBW as u16, + KUNPCKDQ = super::Opcode::KUNPCKDQ as u16, + KUNPCKWD = super::Opcode::KUNPCKWD as u16, + KXNORB = super::Opcode::KXNORB as u16, + KXNORD = super::Opcode::KXNORD as u16, + KXNORQ = super::Opcode::KXNORQ as u16, + KXNORW = super::Opcode::KXNORW as u16, + KXORB = super::Opcode::KXORB as u16, + KXORD = super::Opcode::KXORD as u16, + KXORQ = super::Opcode::KXORQ as u16, + KXORW = super::Opcode::KXORW as u16, + LAHF = super::Opcode::LAHF as u16, + LAR = super::Opcode::LAR as u16, + LDDQU = super::Opcode::LDDQU as u16, + LDMXCSR = super::Opcode::LDMXCSR as u16, + LDS = super::Opcode::LDS as u16, + LEA = super::Opcode::LEA as u16, + LEAVE = super::Opcode::LEAVE as u16, + LES = super::Opcode::LES as u16, + LFENCE = super::Opcode::LFENCE as u16, + LFS = super::Opcode::LFS as u16, + LGDT = super::Opcode::LGDT as u16, + LGS = super::Opcode::LGS as u16, + LIDT = super::Opcode::LIDT as u16, + LLDT = super::Opcode::LLDT as u16, + LMSW = super::Opcode::LMSW as u16, + LOADIWKEY = super::Opcode::LOADIWKEY as u16, + LODS = super::Opcode::LODS as u16, + LOOP = super::Opcode::LOOP as u16, + LOOPNZ = super::Opcode::LOOPNZ as u16, + LOOPZ = super::Opcode::LOOPZ as u16, + LSL = super::Opcode::LSL as u16, + LSS = super::Opcode::LSS as u16, + LTR = super::Opcode::LTR as u16, + LZCNT = super::Opcode::LZCNT as u16, + MASKMOVDQU = super::Opcode::MASKMOVDQU as u16, + MASKMOVQ = super::Opcode::MASKMOVQ as u16, + MAXPD = super::Opcode::MAXPD as u16, + MAXPS = super::Opcode::MAXPS as u16, + MAXSD = super::Opcode::MAXSD as u16, + MAXSS = super::Opcode::MAXSS as u16, + MFENCE = super::Opcode::MFENCE as u16, + MINPD = super::Opcode::MINPD as u16, + MINPS = super::Opcode::MINPS as u16, + MINSD = super::Opcode::MINSD as u16, + MINSS = super::Opcode::MINSS as u16, + MONITOR = super::Opcode::MONITOR as u16, + MONITORX = super::Opcode::MONITORX as u16, + MOV = super::Opcode::MOV as u16, + MOVAPD = super::Opcode::MOVAPD as u16, + MOVAPS = super::Opcode::MOVAPS as u16, + MOVBE = super::Opcode::MOVBE as u16, + MOVD = super::Opcode::MOVD as u16, + MOVDDUP = super::Opcode::MOVDDUP as u16, + MOVDIR64B = super::Opcode::MOVDIR64B as u16, + MOVDIRI = super::Opcode::MOVDIRI as u16, + MOVDQ2Q = super::Opcode::MOVDQ2Q as u16, + MOVDQA = super::Opcode::MOVDQA as u16, + MOVDQU = super::Opcode::MOVDQU as u16, + MOVHLPS = super::Opcode::MOVHLPS as u16, + MOVHPD = super::Opcode::MOVHPD as u16, + MOVHPS = super::Opcode::MOVHPS as u16, + MOVLHPS = super::Opcode::MOVLHPS as u16, + MOVLPD = super::Opcode::MOVLPD as u16, + MOVLPS = super::Opcode::MOVLPS as u16, + MOVMSKPD = super::Opcode::MOVMSKPD as u16, + MOVMSKPS = super::Opcode::MOVMSKPS as u16, + MOVNTDQ = super::Opcode::MOVNTDQ as u16, + MOVNTDQA = super::Opcode::MOVNTDQA as u16, + MOVNTI = super::Opcode::MOVNTI as u16, + MOVNTPD = super::Opcode::MOVNTPD as u16, + MOVNTPS = super::Opcode::MOVNTPS as u16, + MOVNTQ = super::Opcode::MOVNTQ as u16, + MOVNTSD = super::Opcode::MOVNTSD as u16, + MOVNTSS = super::Opcode::MOVNTSS as u16, + MOVQ = super::Opcode::MOVQ as u16, + MOVQ2DQ = super::Opcode::MOVQ2DQ as u16, + MOVS = super::Opcode::MOVS as u16, + MOVSD = super::Opcode::MOVSD as u16, + MOVSHDUP = super::Opcode::MOVSHDUP as u16, + MOVSLDUP = super::Opcode::MOVSLDUP as u16, + MOVSS = super::Opcode::MOVSS as u16, + MOVSX = super::Opcode::MOVSX as u16, + MOVSXD = super::Opcode::MOVSXD as u16, + MOVUPD = super::Opcode::MOVUPD as u16, + MOVUPS = super::Opcode::MOVUPS as u16, + MOVZX = super::Opcode::MOVZX as u16, + MPSADBW = super::Opcode::MPSADBW as u16, + MUL = super::Opcode::MUL as u16, + MULPD = super::Opcode::MULPD as u16, + MULPS = super::Opcode::MULPS as u16, + MULSD = super::Opcode::MULSD as u16, + MULSS = super::Opcode::MULSS as u16, + MULX = super::Opcode::MULX as u16, + MWAIT = super::Opcode::MWAIT as u16, + MWAITX = super::Opcode::MWAITX as u16, + NEG = super::Opcode::NEG as u16, + NOP = super::Opcode::NOP as u16, + NOT = super::Opcode::NOT as u16, + OR = super::Opcode::OR as u16, + ORPD = super::Opcode::ORPD as u16, + ORPS = super::Opcode::ORPS as u16, + OUT = super::Opcode::OUT as u16, + OUTS = super::Opcode::OUTS as u16, + PABSB = super::Opcode::PABSB as u16, + PABSD = super::Opcode::PABSD as u16, + PABSW = super::Opcode::PABSW as u16, + PACKSSDW = super::Opcode::PACKSSDW as u16, + PACKSSWB = super::Opcode::PACKSSWB as u16, + PACKUSDW = super::Opcode::PACKUSDW as u16, + PACKUSWB = super::Opcode::PACKUSWB as u16, + PADDB = super::Opcode::PADDB as u16, + PADDD = super::Opcode::PADDD as u16, + PADDQ = super::Opcode::PADDQ as u16, + PADDSB = super::Opcode::PADDSB as u16, + PADDSW = super::Opcode::PADDSW as u16, + PADDUSB = super::Opcode::PADDUSB as u16, + PADDUSW = super::Opcode::PADDUSW as u16, + PADDW = super::Opcode::PADDW as u16, + PALIGNR = super::Opcode::PALIGNR as u16, + PAND = super::Opcode::PAND as u16, + PANDN = super::Opcode::PANDN as u16, + PAVGB = super::Opcode::PAVGB as u16, + PAVGUSB = super::Opcode::PAVGUSB as u16, + PAVGW = super::Opcode::PAVGW as u16, + PBLENDVB = super::Opcode::PBLENDVB as u16, + PBLENDW = super::Opcode::PBLENDW as u16, + PCLMULQDQ = super::Opcode::PCLMULQDQ as u16, + PCMPEQB = super::Opcode::PCMPEQB as u16, + PCMPEQD = super::Opcode::PCMPEQD as u16, + PCMPEQQ = super::Opcode::PCMPEQQ as u16, + PCMPEQW = super::Opcode::PCMPEQW as u16, + PCMPESTRI = super::Opcode::PCMPESTRI as u16, + PCMPESTRM = super::Opcode::PCMPESTRM as u16, + PCMPGTB = super::Opcode::PCMPGTB as u16, + PCMPGTD = super::Opcode::PCMPGTD as u16, + PCMPGTQ = super::Opcode::PCMPGTQ as u16, + PCMPGTW = super::Opcode::PCMPGTW as u16, + PCMPISTRI = super::Opcode::PCMPISTRI as u16, + PCMPISTRM = super::Opcode::PCMPISTRM as u16, + PCONFIG = super::Opcode::PCONFIG as u16, + PDEP = super::Opcode::PDEP as u16, + PEXT = super::Opcode::PEXT as u16, + PEXTRB = super::Opcode::PEXTRB as u16, + PEXTRD = super::Opcode::PEXTRD as u16, + PEXTRQ = super::Opcode::PEXTRQ as u16, + PEXTRW = super::Opcode::PEXTRW as u16, + PF2ID = super::Opcode::PF2ID as u16, + PF2IW = super::Opcode::PF2IW as u16, + PFACC = super::Opcode::PFACC as u16, + PFADD = super::Opcode::PFADD as u16, + PFCMPEQ = super::Opcode::PFCMPEQ as u16, + PFCMPGE = super::Opcode::PFCMPGE as u16, + PFCMPGT = super::Opcode::PFCMPGT as u16, + PFMAX = super::Opcode::PFMAX as u16, + PFMIN = super::Opcode::PFMIN as u16, + PFMUL = super::Opcode::PFMUL as u16, + PFMULHRW = super::Opcode::PFMULHRW as u16, + PFNACC = super::Opcode::PFNACC as u16, + PFPNACC = super::Opcode::PFPNACC as u16, + PFRCP = super::Opcode::PFRCP as u16, + PFRCPIT1 = super::Opcode::PFRCPIT1 as u16, + PFRCPIT2 = super::Opcode::PFRCPIT2 as u16, + PFRSQIT1 = super::Opcode::PFRSQIT1 as u16, + PFRSQRT = super::Opcode::PFRSQRT as u16, + PFSUB = super::Opcode::PFSUB as u16, + PFSUBR = super::Opcode::PFSUBR as u16, + PHADDD = super::Opcode::PHADDD as u16, + PHADDSW = super::Opcode::PHADDSW as u16, + PHADDW = super::Opcode::PHADDW as u16, + PHMINPOSUW = super::Opcode::PHMINPOSUW as u16, + PHSUBD = super::Opcode::PHSUBD as u16, + PHSUBSW = super::Opcode::PHSUBSW as u16, + PHSUBW = super::Opcode::PHSUBW as u16, + PI2FD = super::Opcode::PI2FD as u16, + PI2FW = super::Opcode::PI2FW as u16, + PINSRB = super::Opcode::PINSRB as u16, + PINSRD = super::Opcode::PINSRD as u16, + PINSRQ = super::Opcode::PINSRQ as u16, + PINSRW = super::Opcode::PINSRW as u16, + PMADDUBSW = super::Opcode::PMADDUBSW as u16, + PMADDWD = super::Opcode::PMADDWD as u16, + PMAXSB = super::Opcode::PMAXSB as u16, + PMAXSD = super::Opcode::PMAXSD as u16, + PMAXSW = super::Opcode::PMAXSW as u16, + PMAXUB = super::Opcode::PMAXUB as u16, + PMAXUD = super::Opcode::PMAXUD as u16, + PMAXUW = super::Opcode::PMAXUW as u16, + PMINSB = super::Opcode::PMINSB as u16, + PMINSD = super::Opcode::PMINSD as u16, + PMINSW = super::Opcode::PMINSW as u16, + PMINUB = super::Opcode::PMINUB as u16, + PMINUD = super::Opcode::PMINUD as u16, + PMINUW = super::Opcode::PMINUW as u16, + PMOVMSKB = super::Opcode::PMOVMSKB as u16, + PMOVSXBD = super::Opcode::PMOVSXBD as u16, + PMOVSXBQ = super::Opcode::PMOVSXBQ as u16, + PMOVSXBW = super::Opcode::PMOVSXBW as u16, + PMOVSXDQ = super::Opcode::PMOVSXDQ as u16, + PMOVSXWD = super::Opcode::PMOVSXWD as u16, + PMOVSXWQ = super::Opcode::PMOVSXWQ as u16, + PMOVZXBD = super::Opcode::PMOVZXBD as u16, + PMOVZXBQ = super::Opcode::PMOVZXBQ as u16, + PMOVZXBW = super::Opcode::PMOVZXBW as u16, + PMOVZXDQ = super::Opcode::PMOVZXDQ as u16, + PMOVZXWD = super::Opcode::PMOVZXWD as u16, + PMOVZXWQ = super::Opcode::PMOVZXWQ as u16, + PMULDQ = super::Opcode::PMULDQ as u16, + PMULHRSW = super::Opcode::PMULHRSW as u16, + PMULHRW = super::Opcode::PMULHRW as u16, + PMULHUW = super::Opcode::PMULHUW as u16, + PMULHW = super::Opcode::PMULHW as u16, + PMULLD = super::Opcode::PMULLD as u16, + PMULLW = super::Opcode::PMULLW as u16, + PMULUDQ = super::Opcode::PMULUDQ as u16, + POP = super::Opcode::POP as u16, + POPA = super::Opcode::POPA as u16, + POPCNT = super::Opcode::POPCNT as u16, + POPF = super::Opcode::POPF as u16, + POR = super::Opcode::POR as u16, + PREFETCH0 = super::Opcode::PREFETCH0 as u16, + PREFETCH1 = super::Opcode::PREFETCH1 as u16, + PREFETCH2 = super::Opcode::PREFETCH2 as u16, + PREFETCHNTA = super::Opcode::PREFETCHNTA as u16, + PREFETCHW = super::Opcode::PREFETCHW as u16, + PSADBW = super::Opcode::PSADBW as u16, + PSHUFB = super::Opcode::PSHUFB as u16, + PSHUFD = super::Opcode::PSHUFD as u16, + PSHUFHW = super::Opcode::PSHUFHW as u16, + PSHUFLW = super::Opcode::PSHUFLW as u16, + PSHUFW = super::Opcode::PSHUFW as u16, + PSIGNB = super::Opcode::PSIGNB as u16, + PSIGND = super::Opcode::PSIGND as u16, + PSIGNW = super::Opcode::PSIGNW as u16, + PSLLD = super::Opcode::PSLLD as u16, + PSLLDQ = super::Opcode::PSLLDQ as u16, + PSLLQ = super::Opcode::PSLLQ as u16, + PSLLW = super::Opcode::PSLLW as u16, + PSMASH = super::Opcode::PSMASH as u16, + PSRAD = super::Opcode::PSRAD as u16, + PSRAW = super::Opcode::PSRAW as u16, + PSRLD = super::Opcode::PSRLD as u16, + PSRLDQ = super::Opcode::PSRLDQ as u16, + PSRLQ = super::Opcode::PSRLQ as u16, + PSRLW = super::Opcode::PSRLW as u16, + PSUBB = super::Opcode::PSUBB as u16, + PSUBD = super::Opcode::PSUBD as u16, + PSUBQ = super::Opcode::PSUBQ as u16, + PSUBSB = super::Opcode::PSUBSB as u16, + PSUBSW = super::Opcode::PSUBSW as u16, + PSUBUSB = super::Opcode::PSUBUSB as u16, + PSUBUSW = super::Opcode::PSUBUSW as u16, + PSUBW = super::Opcode::PSUBW as u16, + PSWAPD = super::Opcode::PSWAPD as u16, + PTEST = super::Opcode::PTEST as u16, + PTWRITE = super::Opcode::PTWRITE as u16, + PUNPCKHBW = super::Opcode::PUNPCKHBW as u16, + PUNPCKHDQ = super::Opcode::PUNPCKHDQ as u16, + PUNPCKHQDQ = super::Opcode::PUNPCKHQDQ as u16, + PUNPCKHWD = super::Opcode::PUNPCKHWD as u16, + PUNPCKLBW = super::Opcode::PUNPCKLBW as u16, + PUNPCKLDQ = super::Opcode::PUNPCKLDQ as u16, + PUNPCKLQDQ = super::Opcode::PUNPCKLQDQ as u16, + PUNPCKLWD = super::Opcode::PUNPCKLWD as u16, + PUSH = super::Opcode::PUSH as u16, + PUSHA = super::Opcode::PUSHA as u16, + PUSHF = super::Opcode::PUSHF as u16, + PVALIDATE = super::Opcode::PVALIDATE as u16, + PXOR = super::Opcode::PXOR as u16, + RCL = super::Opcode::RCL as u16, + RCPPS = super::Opcode::RCPPS as u16, + RCPSS = super::Opcode::RCPSS as u16, + RCR = super::Opcode::RCR as u16, + RDFSBASE = super::Opcode::RDFSBASE as u16, + RDGSBASE = super::Opcode::RDGSBASE as u16, + RDMSR = super::Opcode::RDMSR as u16, + RDPID = super::Opcode::RDPID as u16, + RDPKRU = super::Opcode::RDPKRU as u16, + RDPMC = super::Opcode::RDPMC as u16, + RDPRU = super::Opcode::RDPRU as u16, + RDRAND = super::Opcode::RDRAND as u16, + RDSEED = super::Opcode::RDSEED as u16, + RDTSC = super::Opcode::RDTSC as u16, + RDTSCP = super::Opcode::RDTSCP as u16, + RETF = super::Opcode::RETF as u16, + RETURN = super::Opcode::RETURN as u16, + RMPADJUST = super::Opcode::RMPADJUST as u16, + RMPUPDATE = super::Opcode::RMPUPDATE as u16, + ROL = super::Opcode::ROL as u16, + ROR = super::Opcode::ROR as u16, + RORX = super::Opcode::RORX as u16, + ROUNDPD = super::Opcode::ROUNDPD as u16, + ROUNDPS = super::Opcode::ROUNDPS as u16, + ROUNDSD = super::Opcode::ROUNDSD as u16, + ROUNDSS = super::Opcode::ROUNDSS as u16, + RSM = super::Opcode::RSM as u16, + RSQRTPS = super::Opcode::RSQRTPS as u16, + RSQRTSS = super::Opcode::RSQRTSS as u16, + RSTORSSP = super::Opcode::RSTORSSP as u16, + SAHF = super::Opcode::SAHF as u16, + SAL = super::Opcode::SAL as u16, + SALC = super::Opcode::SALC as u16, + SAR = super::Opcode::SAR as u16, + SARX = super::Opcode::SARX as u16, + SAVEPREVSSP = super::Opcode::SAVEPREVSSP as u16, + SBB = super::Opcode::SBB as u16, + SCAS = super::Opcode::SCAS as u16, + SEAMCALL = super::Opcode::SEAMCALL as u16, + SEAMOPS = super::Opcode::SEAMOPS as u16, + SEAMRET = super::Opcode::SEAMRET as u16, + SENDUIPI = super::Opcode::SENDUIPI as u16, + SETA = super::Opcode::SETA as u16, + SETAE = super::Opcode::SETAE as u16, + SETB = super::Opcode::SETB as u16, + SETBE = super::Opcode::SETBE as u16, + SETG = super::Opcode::SETG as u16, + SETGE = super::Opcode::SETGE as u16, + SETL = super::Opcode::SETL as u16, + SETLE = super::Opcode::SETLE as u16, + SETNO = super::Opcode::SETNO as u16, + SETNP = super::Opcode::SETNP as u16, + SETNS = super::Opcode::SETNS as u16, + SETNZ = super::Opcode::SETNZ as u16, + SETO = super::Opcode::SETO as u16, + SETP = super::Opcode::SETP as u16, + SETS = super::Opcode::SETS as u16, + SETSSBSY = super::Opcode::SETSSBSY as u16, + SETZ = super::Opcode::SETZ as u16, + SFENCE = super::Opcode::SFENCE as u16, + SGDT = super::Opcode::SGDT as u16, + SHA1MSG1 = super::Opcode::SHA1MSG1 as u16, + SHA1MSG2 = super::Opcode::SHA1MSG2 as u16, + SHA1NEXTE = super::Opcode::SHA1NEXTE as u16, + SHA1RNDS4 = super::Opcode::SHA1RNDS4 as u16, + SHA256MSG1 = super::Opcode::SHA256MSG1 as u16, + SHA256MSG2 = super::Opcode::SHA256MSG2 as u16, + SHA256RNDS2 = super::Opcode::SHA256RNDS2 as u16, + SHL = super::Opcode::SHL as u16, + SHLD = super::Opcode::SHLD as u16, + SHLX = super::Opcode::SHLX as u16, + SHR = super::Opcode::SHR as u16, + SHRD = super::Opcode::SHRD as u16, + SHRX = super::Opcode::SHRX as u16, + SHUFPD = super::Opcode::SHUFPD as u16, + SHUFPS = super::Opcode::SHUFPS as u16, + SIDT = super::Opcode::SIDT as u16, + SKINIT = super::Opcode::SKINIT as u16, + SLDT = super::Opcode::SLDT as u16, + SLHD = super::Opcode::SLHD as u16, + SMSW = super::Opcode::SMSW as u16, + SQRTPD = super::Opcode::SQRTPD as u16, + SQRTPS = super::Opcode::SQRTPS as u16, + SQRTSD = super::Opcode::SQRTSD as u16, + SQRTSS = super::Opcode::SQRTSS as u16, + STAC = super::Opcode::STAC as u16, + STC = super::Opcode::STC as u16, + STD = super::Opcode::STD as u16, + STGI = super::Opcode::STGI as u16, + STI = super::Opcode::STI as u16, + STMXCSR = super::Opcode::STMXCSR as u16, + STOS = super::Opcode::STOS as u16, + STR = super::Opcode::STR as u16, + STUI = super::Opcode::STUI as u16, + SUB = super::Opcode::SUB as u16, + SUBPD = super::Opcode::SUBPD as u16, + SUBPS = super::Opcode::SUBPS as u16, + SUBSD = super::Opcode::SUBSD as u16, + SUBSS = super::Opcode::SUBSS as u16, + SWAPGS = super::Opcode::SWAPGS as u16, + SYSCALL = super::Opcode::SYSCALL as u16, + SYSENTER = super::Opcode::SYSENTER as u16, + SYSEXIT = super::Opcode::SYSEXIT as u16, + SYSRET = super::Opcode::SYSRET as u16, + TDCALL = super::Opcode::TDCALL as u16, + TEST = super::Opcode::TEST as u16, + TESTUI = super::Opcode::TESTUI as u16, + TLBSYNC = super::Opcode::TLBSYNC as u16, + TPAUSE = super::Opcode::TPAUSE as u16, + TZCNT = super::Opcode::TZCNT as u16, + UCOMISD = super::Opcode::UCOMISD as u16, + UCOMISS = super::Opcode::UCOMISS as u16, + UD0 = super::Opcode::UD0 as u16, + UD1 = super::Opcode::UD1 as u16, + UD2 = super::Opcode::UD2 as u16, + UIRET = super::Opcode::UIRET as u16, + UMONITOR = super::Opcode::UMONITOR as u16, + UMWAIT = super::Opcode::UMWAIT as u16, + UNPCKHPD = super::Opcode::UNPCKHPD as u16, + UNPCKHPS = super::Opcode::UNPCKHPS as u16, + UNPCKLPD = super::Opcode::UNPCKLPD as u16, + UNPCKLPS = super::Opcode::UNPCKLPS as u16, + V4FMADDPS = super::Opcode::V4FMADDPS as u16, + V4FMADDSS = super::Opcode::V4FMADDSS as u16, + V4FNMADDPS = super::Opcode::V4FNMADDPS as u16, + V4FNMADDSS = super::Opcode::V4FNMADDSS as u16, + VADDPD = super::Opcode::VADDPD as u16, + VADDPS = super::Opcode::VADDPS as u16, + VADDSD = super::Opcode::VADDSD as u16, + VADDSS = super::Opcode::VADDSS as u16, + VADDSUBPD = super::Opcode::VADDSUBPD as u16, + VADDSUBPS = super::Opcode::VADDSUBPS as u16, + VAESDEC = super::Opcode::VAESDEC as u16, + VAESDECLAST = super::Opcode::VAESDECLAST as u16, + VAESENC = super::Opcode::VAESENC as u16, + VAESENCLAST = super::Opcode::VAESENCLAST as u16, + VAESIMC = super::Opcode::VAESIMC as u16, + VAESKEYGENASSIST = super::Opcode::VAESKEYGENASSIST as u16, + VALIGND = super::Opcode::VALIGND as u16, + VALIGNQ = super::Opcode::VALIGNQ as u16, + VANDNPD = super::Opcode::VANDNPD as u16, + VANDNPS = super::Opcode::VANDNPS as u16, + VANDPD = super::Opcode::VANDPD as u16, + VANDPS = super::Opcode::VANDPS as u16, + VBLENDMPD = super::Opcode::VBLENDMPD as u16, + VBLENDMPS = super::Opcode::VBLENDMPS as u16, + VBLENDPD = super::Opcode::VBLENDPD as u16, + VBLENDPS = super::Opcode::VBLENDPS as u16, + VBLENDVPD = super::Opcode::VBLENDVPD as u16, + VBLENDVPS = super::Opcode::VBLENDVPS as u16, + VBROADCASTF128 = super::Opcode::VBROADCASTF128 as u16, + VBROADCASTF32X2 = super::Opcode::VBROADCASTF32X2 as u16, + VBROADCASTF32X4 = super::Opcode::VBROADCASTF32X4 as u16, + VBROADCASTF32X8 = super::Opcode::VBROADCASTF32X8 as u16, + VBROADCASTF64X2 = super::Opcode::VBROADCASTF64X2 as u16, + VBROADCASTF64X4 = super::Opcode::VBROADCASTF64X4 as u16, + VBROADCASTI128 = super::Opcode::VBROADCASTI128 as u16, + VBROADCASTI32X2 = super::Opcode::VBROADCASTI32X2 as u16, + VBROADCASTI32X4 = super::Opcode::VBROADCASTI32X4 as u16, + VBROADCASTI32X8 = super::Opcode::VBROADCASTI32X8 as u16, + VBROADCASTI64X2 = super::Opcode::VBROADCASTI64X2 as u16, + VBROADCASTI64X4 = super::Opcode::VBROADCASTI64X4 as u16, + VBROADCASTSD = super::Opcode::VBROADCASTSD as u16, + VBROADCASTSS = super::Opcode::VBROADCASTSS as u16, + VCMPPD = super::Opcode::VCMPPD as u16, + VCMPPS = super::Opcode::VCMPPS as u16, + VCMPSD = super::Opcode::VCMPSD as u16, + VCMPSS = super::Opcode::VCMPSS as u16, + VCOMISD = super::Opcode::VCOMISD as u16, + VCOMISS = super::Opcode::VCOMISS as u16, + VCOMPRESSD = super::Opcode::VCOMPRESSD as u16, + VCOMPRESSPD = super::Opcode::VCOMPRESSPD as u16, + VCOMPRESSPS = super::Opcode::VCOMPRESSPS as u16, + VCOMPRESSQ = super::Opcode::VCOMPRESSQ as u16, + VCVTDQ2PD = super::Opcode::VCVTDQ2PD as u16, + VCVTDQ2PS = super::Opcode::VCVTDQ2PS as u16, + VCVTNE2PS2BF16 = super::Opcode::VCVTNE2PS2BF16 as u16, + VCVTNEPS2BF16 = super::Opcode::VCVTNEPS2BF16 as u16, + VCVTPD2DQ = super::Opcode::VCVTPD2DQ as u16, + VCVTPD2PS = super::Opcode::VCVTPD2PS as u16, + VCVTPD2QQ = super::Opcode::VCVTPD2QQ as u16, + VCVTPD2UDQ = super::Opcode::VCVTPD2UDQ as u16, + VCVTPD2UQQ = super::Opcode::VCVTPD2UQQ as u16, + VCVTPH2PS = super::Opcode::VCVTPH2PS as u16, + VCVTPS2DQ = super::Opcode::VCVTPS2DQ as u16, + VCVTPS2PD = super::Opcode::VCVTPS2PD as u16, + VCVTPS2PH = super::Opcode::VCVTPS2PH as u16, + VCVTPS2QQ = super::Opcode::VCVTPS2QQ as u16, + VCVTPS2UDQ = super::Opcode::VCVTPS2UDQ as u16, + VCVTPS2UQQ = super::Opcode::VCVTPS2UQQ as u16, + VCVTQQ2PD = super::Opcode::VCVTQQ2PD as u16, + VCVTQQ2PS = super::Opcode::VCVTQQ2PS as u16, + VCVTSD2SI = super::Opcode::VCVTSD2SI as u16, + VCVTSD2SS = super::Opcode::VCVTSD2SS as u16, + VCVTSD2USI = super::Opcode::VCVTSD2USI as u16, + VCVTSI2SD = super::Opcode::VCVTSI2SD as u16, + VCVTSI2SS = super::Opcode::VCVTSI2SS as u16, + VCVTSS2SD = super::Opcode::VCVTSS2SD as u16, + VCVTSS2SI = super::Opcode::VCVTSS2SI as u16, + VCVTSS2USI = super::Opcode::VCVTSS2USI as u16, + VCVTTPD2DQ = super::Opcode::VCVTTPD2DQ as u16, + VCVTTPD2QQ = super::Opcode::VCVTTPD2QQ as u16, + VCVTTPD2UDQ = super::Opcode::VCVTTPD2UDQ as u16, + VCVTTPD2UQQ = super::Opcode::VCVTTPD2UQQ as u16, + VCVTTPS2DQ = super::Opcode::VCVTTPS2DQ as u16, + VCVTTPS2QQ = super::Opcode::VCVTTPS2QQ as u16, + VCVTTPS2UDQ = super::Opcode::VCVTTPS2UDQ as u16, + VCVTTPS2UQQ = super::Opcode::VCVTTPS2UQQ as u16, + VCVTTSD2SI = super::Opcode::VCVTTSD2SI as u16, + VCVTTSD2USI = super::Opcode::VCVTTSD2USI as u16, + VCVTTSS2SI = super::Opcode::VCVTTSS2SI as u16, + VCVTTSS2USI = super::Opcode::VCVTTSS2USI as u16, + VCVTUDQ2PD = super::Opcode::VCVTUDQ2PD as u16, + VCVTUDQ2PS = super::Opcode::VCVTUDQ2PS as u16, + VCVTUQQ2PD = super::Opcode::VCVTUQQ2PD as u16, + VCVTUQQ2PS = super::Opcode::VCVTUQQ2PS as u16, + VCVTUSI2SD = super::Opcode::VCVTUSI2SD as u16, + VCVTUSI2SS = super::Opcode::VCVTUSI2SS as u16, + VCVTUSI2USD = super::Opcode::VCVTUSI2USD as u16, + VCVTUSI2USS = super::Opcode::VCVTUSI2USS as u16, + VDBPSADBW = super::Opcode::VDBPSADBW as u16, + VDIVPD = super::Opcode::VDIVPD as u16, + VDIVPS = super::Opcode::VDIVPS as u16, + VDIVSD = super::Opcode::VDIVSD as u16, + VDIVSS = super::Opcode::VDIVSS as u16, + VDPBF16PS = super::Opcode::VDPBF16PS as u16, + VDPPD = super::Opcode::VDPPD as u16, + VDPPS = super::Opcode::VDPPS as u16, + VERR = super::Opcode::VERR as u16, + VERW = super::Opcode::VERW as u16, + VEXP2PD = super::Opcode::VEXP2PD as u16, + VEXP2PS = super::Opcode::VEXP2PS as u16, + VEXP2SD = super::Opcode::VEXP2SD as u16, + VEXP2SS = super::Opcode::VEXP2SS as u16, + VEXPANDPD = super::Opcode::VEXPANDPD as u16, + VEXPANDPS = super::Opcode::VEXPANDPS as u16, + VEXTRACTF128 = super::Opcode::VEXTRACTF128 as u16, + VEXTRACTF32X4 = super::Opcode::VEXTRACTF32X4 as u16, + VEXTRACTF32X8 = super::Opcode::VEXTRACTF32X8 as u16, + VEXTRACTF64X2 = super::Opcode::VEXTRACTF64X2 as u16, + VEXTRACTF64X4 = super::Opcode::VEXTRACTF64X4 as u16, + VEXTRACTI128 = super::Opcode::VEXTRACTI128 as u16, + VEXTRACTI32X4 = super::Opcode::VEXTRACTI32X4 as u16, + VEXTRACTI32X8 = super::Opcode::VEXTRACTI32X8 as u16, + VEXTRACTI64X2 = super::Opcode::VEXTRACTI64X2 as u16, + VEXTRACTI64X4 = super::Opcode::VEXTRACTI64X4 as u16, + VEXTRACTPS = super::Opcode::VEXTRACTPS as u16, + VFIXUPIMMPD = super::Opcode::VFIXUPIMMPD as u16, + VFIXUPIMMPS = super::Opcode::VFIXUPIMMPS as u16, + VFIXUPIMMSD = super::Opcode::VFIXUPIMMSD as u16, + VFIXUPIMMSS = super::Opcode::VFIXUPIMMSS as u16, + VFMADD132PD = super::Opcode::VFMADD132PD as u16, + VFMADD132PS = super::Opcode::VFMADD132PS as u16, + VFMADD132SD = super::Opcode::VFMADD132SD as u16, + VFMADD132SS = super::Opcode::VFMADD132SS as u16, + VFMADD213PD = super::Opcode::VFMADD213PD as u16, + VFMADD213PS = super::Opcode::VFMADD213PS as u16, + VFMADD213SD = super::Opcode::VFMADD213SD as u16, + VFMADD213SS = super::Opcode::VFMADD213SS as u16, + VFMADD231PD = super::Opcode::VFMADD231PD as u16, + VFMADD231PS = super::Opcode::VFMADD231PS as u16, + VFMADD231SD = super::Opcode::VFMADD231SD as u16, + VFMADD231SS = super::Opcode::VFMADD231SS as u16, + VFMADDSUB132PD = super::Opcode::VFMADDSUB132PD as u16, + VFMADDSUB132PS = super::Opcode::VFMADDSUB132PS as u16, + VFMADDSUB213PD = super::Opcode::VFMADDSUB213PD as u16, + VFMADDSUB213PS = super::Opcode::VFMADDSUB213PS as u16, + VFMADDSUB231PD = super::Opcode::VFMADDSUB231PD as u16, + VFMADDSUB231PS = super::Opcode::VFMADDSUB231PS as u16, + VFMSUB132PD = super::Opcode::VFMSUB132PD as u16, + VFMSUB132PS = super::Opcode::VFMSUB132PS as u16, + VFMSUB132SD = super::Opcode::VFMSUB132SD as u16, + VFMSUB132SS = super::Opcode::VFMSUB132SS as u16, + VFMSUB213PD = super::Opcode::VFMSUB213PD as u16, + VFMSUB213PS = super::Opcode::VFMSUB213PS as u16, + VFMSUB213SD = super::Opcode::VFMSUB213SD as u16, + VFMSUB213SS = super::Opcode::VFMSUB213SS as u16, + VFMSUB231PD = super::Opcode::VFMSUB231PD as u16, + VFMSUB231PS = super::Opcode::VFMSUB231PS as u16, + VFMSUB231SD = super::Opcode::VFMSUB231SD as u16, + VFMSUB231SS = super::Opcode::VFMSUB231SS as u16, + VFMSUBADD132PD = super::Opcode::VFMSUBADD132PD as u16, + VFMSUBADD132PS = super::Opcode::VFMSUBADD132PS as u16, + VFMSUBADD213PD = super::Opcode::VFMSUBADD213PD as u16, + VFMSUBADD213PS = super::Opcode::VFMSUBADD213PS as u16, + VFMSUBADD231PD = super::Opcode::VFMSUBADD231PD as u16, + VFMSUBADD231PS = super::Opcode::VFMSUBADD231PS as u16, + VFNMADD132PD = super::Opcode::VFNMADD132PD as u16, + VFNMADD132PS = super::Opcode::VFNMADD132PS as u16, + VFNMADD132SD = super::Opcode::VFNMADD132SD as u16, + VFNMADD132SS = super::Opcode::VFNMADD132SS as u16, + VFNMADD213PD = super::Opcode::VFNMADD213PD as u16, + VFNMADD213PS = super::Opcode::VFNMADD213PS as u16, + VFNMADD213SD = super::Opcode::VFNMADD213SD as u16, + VFNMADD213SS = super::Opcode::VFNMADD213SS as u16, + VFNMADD231PD = super::Opcode::VFNMADD231PD as u16, + VFNMADD231PS = super::Opcode::VFNMADD231PS as u16, + VFNMADD231SD = super::Opcode::VFNMADD231SD as u16, + VFNMADD231SS = super::Opcode::VFNMADD231SS as u16, + VFNMSUB132PD = super::Opcode::VFNMSUB132PD as u16, + VFNMSUB132PS = super::Opcode::VFNMSUB132PS as u16, + VFNMSUB132SD = super::Opcode::VFNMSUB132SD as u16, + VFNMSUB132SS = super::Opcode::VFNMSUB132SS as u16, + VFNMSUB213PD = super::Opcode::VFNMSUB213PD as u16, + VFNMSUB213PS = super::Opcode::VFNMSUB213PS as u16, + VFNMSUB213SD = super::Opcode::VFNMSUB213SD as u16, + VFNMSUB213SS = super::Opcode::VFNMSUB213SS as u16, + VFNMSUB231PD = super::Opcode::VFNMSUB231PD as u16, + VFNMSUB231PS = super::Opcode::VFNMSUB231PS as u16, + VFNMSUB231SD = super::Opcode::VFNMSUB231SD as u16, + VFNMSUB231SS = super::Opcode::VFNMSUB231SS as u16, + VFPCLASSPD = super::Opcode::VFPCLASSPD as u16, + VFPCLASSPS = super::Opcode::VFPCLASSPS as u16, + VFPCLASSSD = super::Opcode::VFPCLASSSD as u16, + VFPCLASSSS = super::Opcode::VFPCLASSSS as u16, + VGATHERDPD = super::Opcode::VGATHERDPD as u16, + VGATHERDPS = super::Opcode::VGATHERDPS as u16, + VGATHERPF0DPD = super::Opcode::VGATHERPF0DPD as u16, + VGATHERPF0DPS = super::Opcode::VGATHERPF0DPS as u16, + VGATHERPF0QPD = super::Opcode::VGATHERPF0QPD as u16, + VGATHERPF0QPS = super::Opcode::VGATHERPF0QPS as u16, + VGATHERPF1DPD = super::Opcode::VGATHERPF1DPD as u16, + VGATHERPF1DPS = super::Opcode::VGATHERPF1DPS as u16, + VGATHERPF1QPD = super::Opcode::VGATHERPF1QPD as u16, + VGATHERPF1QPS = super::Opcode::VGATHERPF1QPS as u16, + VGATHERQPD = super::Opcode::VGATHERQPD as u16, + VGATHERQPS = super::Opcode::VGATHERQPS as u16, + VGETEXPPD = super::Opcode::VGETEXPPD as u16, + VGETEXPPS = super::Opcode::VGETEXPPS as u16, + VGETEXPSD = super::Opcode::VGETEXPSD as u16, + VGETEXPSS = super::Opcode::VGETEXPSS as u16, + VGETMANTPD = super::Opcode::VGETMANTPD as u16, + VGETMANTPS = super::Opcode::VGETMANTPS as u16, + VGETMANTSD = super::Opcode::VGETMANTSD as u16, + VGETMANTSS = super::Opcode::VGETMANTSS as u16, + VGF2P8AFFINEINVQB = super::Opcode::VGF2P8AFFINEINVQB as u16, + VGF2P8AFFINEQB = super::Opcode::VGF2P8AFFINEQB as u16, + VGF2P8MULB = super::Opcode::VGF2P8MULB as u16, + VHADDPD = super::Opcode::VHADDPD as u16, + VHADDPS = super::Opcode::VHADDPS as u16, + VHSUBPD = super::Opcode::VHSUBPD as u16, + VHSUBPS = super::Opcode::VHSUBPS as u16, + VINSERTF128 = super::Opcode::VINSERTF128 as u16, + VINSERTF32X4 = super::Opcode::VINSERTF32X4 as u16, + VINSERTF32X8 = super::Opcode::VINSERTF32X8 as u16, + VINSERTF64X2 = super::Opcode::VINSERTF64X2 as u16, + VINSERTF64X4 = super::Opcode::VINSERTF64X4 as u16, + VINSERTI128 = super::Opcode::VINSERTI128 as u16, + VINSERTI32X4 = super::Opcode::VINSERTI32X4 as u16, + VINSERTI32X8 = super::Opcode::VINSERTI32X8 as u16, + VINSERTI64X2 = super::Opcode::VINSERTI64X2 as u16, + VINSERTI64X4 = super::Opcode::VINSERTI64X4 as u16, + VINSERTPS = super::Opcode::VINSERTPS as u16, + VLDDQU = super::Opcode::VLDDQU as u16, + VLDMXCSR = super::Opcode::VLDMXCSR as u16, + VMASKMOVDQU = super::Opcode::VMASKMOVDQU as u16, + VMASKMOVPD = super::Opcode::VMASKMOVPD as u16, + VMASKMOVPS = super::Opcode::VMASKMOVPS as u16, + VMAXPD = super::Opcode::VMAXPD as u16, + VMAXPS = super::Opcode::VMAXPS as u16, + VMAXSD = super::Opcode::VMAXSD as u16, + VMAXSS = super::Opcode::VMAXSS as u16, + VMCALL = super::Opcode::VMCALL as u16, + VMCLEAR = super::Opcode::VMCLEAR as u16, + VMFUNC = super::Opcode::VMFUNC as u16, + VMINPD = super::Opcode::VMINPD as u16, + VMINPS = super::Opcode::VMINPS as u16, + VMINSD = super::Opcode::VMINSD as u16, + VMINSS = super::Opcode::VMINSS as u16, + VMLAUNCH = super::Opcode::VMLAUNCH as u16, + VMLOAD = super::Opcode::VMLOAD as u16, + VMMCALL = super::Opcode::VMMCALL as u16, + VMOVAPD = super::Opcode::VMOVAPD as u16, + VMOVAPS = super::Opcode::VMOVAPS as u16, + VMOVD = super::Opcode::VMOVD as u16, + VMOVDDUP = super::Opcode::VMOVDDUP as u16, + VMOVDQA = super::Opcode::VMOVDQA as u16, + VMOVDQA32 = super::Opcode::VMOVDQA32 as u16, + VMOVDQA64 = super::Opcode::VMOVDQA64 as u16, + VMOVDQU = super::Opcode::VMOVDQU as u16, + VMOVDQU16 = super::Opcode::VMOVDQU16 as u16, + VMOVDQU32 = super::Opcode::VMOVDQU32 as u16, + VMOVDQU64 = super::Opcode::VMOVDQU64 as u16, + VMOVDQU8 = super::Opcode::VMOVDQU8 as u16, + VMOVHLPS = super::Opcode::VMOVHLPS as u16, + VMOVHPD = super::Opcode::VMOVHPD as u16, + VMOVHPS = super::Opcode::VMOVHPS as u16, + VMOVLHPS = super::Opcode::VMOVLHPS as u16, + VMOVLPD = super::Opcode::VMOVLPD as u16, + VMOVLPS = super::Opcode::VMOVLPS as u16, + VMOVMSKPD = super::Opcode::VMOVMSKPD as u16, + VMOVMSKPS = super::Opcode::VMOVMSKPS as u16, + VMOVNTDQ = super::Opcode::VMOVNTDQ as u16, + VMOVNTDQA = super::Opcode::VMOVNTDQA as u16, + VMOVNTPD = super::Opcode::VMOVNTPD as u16, + VMOVNTPS = super::Opcode::VMOVNTPS as u16, + VMOVQ = super::Opcode::VMOVQ as u16, + VMOVSD = super::Opcode::VMOVSD as u16, + VMOVSHDUP = super::Opcode::VMOVSHDUP as u16, + VMOVSLDUP = super::Opcode::VMOVSLDUP as u16, + VMOVSS = super::Opcode::VMOVSS as u16, + VMOVUPD = super::Opcode::VMOVUPD as u16, + VMOVUPS = super::Opcode::VMOVUPS as u16, + VMPSADBW = super::Opcode::VMPSADBW as u16, + VMPTRLD = super::Opcode::VMPTRLD as u16, + VMPTRST = super::Opcode::VMPTRST as u16, + VMREAD = super::Opcode::VMREAD as u16, + VMRESUME = super::Opcode::VMRESUME as u16, + VMRUN = super::Opcode::VMRUN as u16, + VMSAVE = super::Opcode::VMSAVE as u16, + VMULPD = super::Opcode::VMULPD as u16, + VMULPS = super::Opcode::VMULPS as u16, + VMULSD = super::Opcode::VMULSD as u16, + VMULSS = super::Opcode::VMULSS as u16, + VMWRITE = super::Opcode::VMWRITE as u16, + VMXOFF = super::Opcode::VMXOFF as u16, + VMXON = super::Opcode::VMXON as u16, + VORPD = super::Opcode::VORPD as u16, + VORPS = super::Opcode::VORPS as u16, + VP2INTERSECTD = super::Opcode::VP2INTERSECTD as u16, + VP2INTERSECTQ = super::Opcode::VP2INTERSECTQ as u16, + VP4DPWSSD = super::Opcode::VP4DPWSSD as u16, + VP4DPWSSDS = super::Opcode::VP4DPWSSDS as u16, + VPABSB = super::Opcode::VPABSB as u16, + VPABSD = super::Opcode::VPABSD as u16, + VPABSQ = super::Opcode::VPABSQ as u16, + VPABSW = super::Opcode::VPABSW as u16, + VPACKSSDW = super::Opcode::VPACKSSDW as u16, + VPACKSSWB = super::Opcode::VPACKSSWB as u16, + VPACKUSDW = super::Opcode::VPACKUSDW as u16, + VPACKUSWB = super::Opcode::VPACKUSWB as u16, + VPADDB = super::Opcode::VPADDB as u16, + VPADDD = super::Opcode::VPADDD as u16, + VPADDQ = super::Opcode::VPADDQ as u16, + VPADDSB = super::Opcode::VPADDSB as u16, + VPADDSW = super::Opcode::VPADDSW as u16, + VPADDUSB = super::Opcode::VPADDUSB as u16, + VPADDUSW = super::Opcode::VPADDUSW as u16, + VPADDW = super::Opcode::VPADDW as u16, + VPALIGNR = super::Opcode::VPALIGNR as u16, + VPAND = super::Opcode::VPAND as u16, + VPANDD = super::Opcode::VPANDD as u16, + VPANDN = super::Opcode::VPANDN as u16, + VPANDND = super::Opcode::VPANDND as u16, + VPANDNQ = super::Opcode::VPANDNQ as u16, + VPANDQ = super::Opcode::VPANDQ as u16, + VPAVGB = super::Opcode::VPAVGB as u16, + VPAVGW = super::Opcode::VPAVGW as u16, + VPBLENDD = super::Opcode::VPBLENDD as u16, + VPBLENDMB = super::Opcode::VPBLENDMB as u16, + VPBLENDMD = super::Opcode::VPBLENDMD as u16, + VPBLENDMQ = super::Opcode::VPBLENDMQ as u16, + VPBLENDMW = super::Opcode::VPBLENDMW as u16, + VPBLENDVB = super::Opcode::VPBLENDVB as u16, + VPBLENDW = super::Opcode::VPBLENDW as u16, + VPBROADCASTB = super::Opcode::VPBROADCASTB as u16, + VPBROADCASTD = super::Opcode::VPBROADCASTD as u16, + VPBROADCASTM = super::Opcode::VPBROADCASTM as u16, + VPBROADCASTMB2Q = super::Opcode::VPBROADCASTMB2Q as u16, + VPBROADCASTMW2D = super::Opcode::VPBROADCASTMW2D as u16, + VPBROADCASTQ = super::Opcode::VPBROADCASTQ as u16, + VPBROADCASTW = super::Opcode::VPBROADCASTW as u16, + VPCLMULQDQ = super::Opcode::VPCLMULQDQ as u16, + VPCMPB = super::Opcode::VPCMPB as u16, + VPCMPD = super::Opcode::VPCMPD as u16, + VPCMPEQB = super::Opcode::VPCMPEQB as u16, + VPCMPEQD = super::Opcode::VPCMPEQD as u16, + VPCMPEQQ = super::Opcode::VPCMPEQQ as u16, + VPCMPEQW = super::Opcode::VPCMPEQW as u16, + VPCMPESTRI = super::Opcode::VPCMPESTRI as u16, + VPCMPESTRM = super::Opcode::VPCMPESTRM as u16, + VPCMPGTB = super::Opcode::VPCMPGTB as u16, + VPCMPGTD = super::Opcode::VPCMPGTD as u16, + VPCMPGTQ = super::Opcode::VPCMPGTQ as u16, + VPCMPGTW = super::Opcode::VPCMPGTW as u16, + VPCMPISTRI = super::Opcode::VPCMPISTRI as u16, + VPCMPISTRM = super::Opcode::VPCMPISTRM as u16, + VPCMPQ = super::Opcode::VPCMPQ as u16, + VPCMPUB = super::Opcode::VPCMPUB as u16, + VPCMPUD = super::Opcode::VPCMPUD as u16, + VPCMPUQ = super::Opcode::VPCMPUQ as u16, + VPCMPUW = super::Opcode::VPCMPUW as u16, + VPCMPW = super::Opcode::VPCMPW as u16, + VPCOMPRESSB = super::Opcode::VPCOMPRESSB as u16, + VPCOMPRESSD = super::Opcode::VPCOMPRESSD as u16, + VPCOMPRESSQ = super::Opcode::VPCOMPRESSQ as u16, + VPCOMPRESSW = super::Opcode::VPCOMPRESSW as u16, + VPCONFLICTD = super::Opcode::VPCONFLICTD as u16, + VPCONFLICTQ = super::Opcode::VPCONFLICTQ as u16, + VPDPBUSD = super::Opcode::VPDPBUSD as u16, + VPDPBUSDS = super::Opcode::VPDPBUSDS as u16, + VPDPWSSD = super::Opcode::VPDPWSSD as u16, + VPDPWSSDS = super::Opcode::VPDPWSSDS as u16, + VPERM2F128 = super::Opcode::VPERM2F128 as u16, + VPERM2I128 = super::Opcode::VPERM2I128 as u16, + VPERMB = super::Opcode::VPERMB as u16, + VPERMD = super::Opcode::VPERMD as u16, + VPERMI2B = super::Opcode::VPERMI2B as u16, + VPERMI2D = super::Opcode::VPERMI2D as u16, + VPERMI2PD = super::Opcode::VPERMI2PD as u16, + VPERMI2PS = super::Opcode::VPERMI2PS as u16, + VPERMI2Q = super::Opcode::VPERMI2Q as u16, + VPERMI2W = super::Opcode::VPERMI2W as u16, + VPERMILPD = super::Opcode::VPERMILPD as u16, + VPERMILPS = super::Opcode::VPERMILPS as u16, + VPERMPD = super::Opcode::VPERMPD as u16, + VPERMPS = super::Opcode::VPERMPS as u16, + VPERMQ = super::Opcode::VPERMQ as u16, + VPERMT2B = super::Opcode::VPERMT2B as u16, + VPERMT2D = super::Opcode::VPERMT2D as u16, + VPERMT2PD = super::Opcode::VPERMT2PD as u16, + VPERMT2PS = super::Opcode::VPERMT2PS as u16, + VPERMT2Q = super::Opcode::VPERMT2Q as u16, + VPERMT2W = super::Opcode::VPERMT2W as u16, + VPERMW = super::Opcode::VPERMW as u16, + VPEXPANDB = super::Opcode::VPEXPANDB as u16, + VPEXPANDD = super::Opcode::VPEXPANDD as u16, + VPEXPANDQ = super::Opcode::VPEXPANDQ as u16, + VPEXPANDW = super::Opcode::VPEXPANDW as u16, + VPEXTRB = super::Opcode::VPEXTRB as u16, + VPEXTRD = super::Opcode::VPEXTRD as u16, + VPEXTRQ = super::Opcode::VPEXTRQ as u16, + VPEXTRW = super::Opcode::VPEXTRW as u16, + VPGATHERDD = super::Opcode::VPGATHERDD as u16, + VPGATHERDQ = super::Opcode::VPGATHERDQ as u16, + VPGATHERQD = super::Opcode::VPGATHERQD as u16, + VPGATHERQQ = super::Opcode::VPGATHERQQ as u16, + VPHADDD = super::Opcode::VPHADDD as u16, + VPHADDSW = super::Opcode::VPHADDSW as u16, + VPHADDW = super::Opcode::VPHADDW as u16, + VPHMINPOSUW = super::Opcode::VPHMINPOSUW as u16, + VPHSUBD = super::Opcode::VPHSUBD as u16, + VPHSUBSW = super::Opcode::VPHSUBSW as u16, + VPHSUBW = super::Opcode::VPHSUBW as u16, + VPINSRB = super::Opcode::VPINSRB as u16, + VPINSRD = super::Opcode::VPINSRD as u16, + VPINSRQ = super::Opcode::VPINSRQ as u16, + VPINSRW = super::Opcode::VPINSRW as u16, + VPLZCNTD = super::Opcode::VPLZCNTD as u16, + VPLZCNTQ = super::Opcode::VPLZCNTQ as u16, + VPMADD52HUQ = super::Opcode::VPMADD52HUQ as u16, + VPMADD52LUQ = super::Opcode::VPMADD52LUQ as u16, + VPMADDUBSW = super::Opcode::VPMADDUBSW as u16, + VPMADDWD = super::Opcode::VPMADDWD as u16, + VPMASKMOVD = super::Opcode::VPMASKMOVD as u16, + VPMASKMOVQ = super::Opcode::VPMASKMOVQ as u16, + VPMAXSB = super::Opcode::VPMAXSB as u16, + VPMAXSD = super::Opcode::VPMAXSD as u16, + VPMAXSQ = super::Opcode::VPMAXSQ as u16, + VPMAXSW = super::Opcode::VPMAXSW as u16, + VPMAXUB = super::Opcode::VPMAXUB as u16, + VPMAXUD = super::Opcode::VPMAXUD as u16, + VPMAXUQ = super::Opcode::VPMAXUQ as u16, + VPMAXUW = super::Opcode::VPMAXUW as u16, + VPMINSB = super::Opcode::VPMINSB as u16, + VPMINSD = super::Opcode::VPMINSD as u16, + VPMINSQ = super::Opcode::VPMINSQ as u16, + VPMINSW = super::Opcode::VPMINSW as u16, + VPMINUB = super::Opcode::VPMINUB as u16, + VPMINUD = super::Opcode::VPMINUD as u16, + VPMINUQ = super::Opcode::VPMINUQ as u16, + VPMINUW = super::Opcode::VPMINUW as u16, + VPMOVB2D = super::Opcode::VPMOVB2D as u16, + VPMOVB2M = super::Opcode::VPMOVB2M as u16, + VPMOVD2M = super::Opcode::VPMOVD2M as u16, + VPMOVDB = super::Opcode::VPMOVDB as u16, + VPMOVDW = super::Opcode::VPMOVDW as u16, + VPMOVM2B = super::Opcode::VPMOVM2B as u16, + VPMOVM2D = super::Opcode::VPMOVM2D as u16, + VPMOVM2Q = super::Opcode::VPMOVM2Q as u16, + VPMOVM2W = super::Opcode::VPMOVM2W as u16, + VPMOVMSKB = super::Opcode::VPMOVMSKB as u16, + VPMOVQ2M = super::Opcode::VPMOVQ2M as u16, + VPMOVQB = super::Opcode::VPMOVQB as u16, + VPMOVQD = super::Opcode::VPMOVQD as u16, + VPMOVQW = super::Opcode::VPMOVQW as u16, + VPMOVSDB = super::Opcode::VPMOVSDB as u16, + VPMOVSDW = super::Opcode::VPMOVSDW as u16, + VPMOVSQB = super::Opcode::VPMOVSQB as u16, + VPMOVSQD = super::Opcode::VPMOVSQD as u16, + VPMOVSQW = super::Opcode::VPMOVSQW as u16, + VPMOVSWB = super::Opcode::VPMOVSWB as u16, + VPMOVSXBD = super::Opcode::VPMOVSXBD as u16, + VPMOVSXBQ = super::Opcode::VPMOVSXBQ as u16, + VPMOVSXBW = super::Opcode::VPMOVSXBW as u16, + VPMOVSXDQ = super::Opcode::VPMOVSXDQ as u16, + VPMOVSXWD = super::Opcode::VPMOVSXWD as u16, + VPMOVSXWQ = super::Opcode::VPMOVSXWQ as u16, + VPMOVUSDB = super::Opcode::VPMOVUSDB as u16, + VPMOVUSDW = super::Opcode::VPMOVUSDW as u16, + VPMOVUSQB = super::Opcode::VPMOVUSQB as u16, + VPMOVUSQD = super::Opcode::VPMOVUSQD as u16, + VPMOVUSQW = super::Opcode::VPMOVUSQW as u16, + VPMOVUSWB = super::Opcode::VPMOVUSWB as u16, + VPMOVW2M = super::Opcode::VPMOVW2M as u16, + VPMOVWB = super::Opcode::VPMOVWB as u16, + VPMOVZXBD = super::Opcode::VPMOVZXBD as u16, + VPMOVZXBQ = super::Opcode::VPMOVZXBQ as u16, + VPMOVZXBW = super::Opcode::VPMOVZXBW as u16, + VPMOVZXDQ = super::Opcode::VPMOVZXDQ as u16, + VPMOVZXWD = super::Opcode::VPMOVZXWD as u16, + VPMOVZXWQ = super::Opcode::VPMOVZXWQ as u16, + VPMULDQ = super::Opcode::VPMULDQ as u16, + VPMULHRSW = super::Opcode::VPMULHRSW as u16, + VPMULHUW = super::Opcode::VPMULHUW as u16, + VPMULHW = super::Opcode::VPMULHW as u16, + VPMULLD = super::Opcode::VPMULLD as u16, + VPMULLQ = super::Opcode::VPMULLQ as u16, + VPMULLW = super::Opcode::VPMULLW as u16, + VPMULTISHIFTQB = super::Opcode::VPMULTISHIFTQB as u16, + VPMULUDQ = super::Opcode::VPMULUDQ as u16, + VPOPCNTB = super::Opcode::VPOPCNTB as u16, + VPOPCNTD = super::Opcode::VPOPCNTD as u16, + VPOPCNTQ = super::Opcode::VPOPCNTQ as u16, + VPOPCNTW = super::Opcode::VPOPCNTW as u16, + VPOR = super::Opcode::VPOR as u16, + VPORD = super::Opcode::VPORD as u16, + VPORQ = super::Opcode::VPORQ as u16, + VPROLD = super::Opcode::VPROLD as u16, + VPROLQ = super::Opcode::VPROLQ as u16, + VPROLVD = super::Opcode::VPROLVD as u16, + VPROLVQ = super::Opcode::VPROLVQ as u16, + VPRORD = super::Opcode::VPRORD as u16, + VPRORQ = super::Opcode::VPRORQ as u16, + VPRORRD = super::Opcode::VPRORRD as u16, + VPRORRQ = super::Opcode::VPRORRQ as u16, + VPRORVD = super::Opcode::VPRORVD as u16, + VPRORVQ = super::Opcode::VPRORVQ as u16, + VPSADBW = super::Opcode::VPSADBW as u16, + VPSCATTERDD = super::Opcode::VPSCATTERDD as u16, + VPSCATTERDQ = super::Opcode::VPSCATTERDQ as u16, + VPSCATTERQD = super::Opcode::VPSCATTERQD as u16, + VPSCATTERQQ = super::Opcode::VPSCATTERQQ as u16, + VPSHLDD = super::Opcode::VPSHLDD as u16, + VPSHLDQ = super::Opcode::VPSHLDQ as u16, + VPSHLDVD = super::Opcode::VPSHLDVD as u16, + VPSHLDVQ = super::Opcode::VPSHLDVQ as u16, + VPSHLDVW = super::Opcode::VPSHLDVW as u16, + VPSHLDW = super::Opcode::VPSHLDW as u16, + VPSHRDD = super::Opcode::VPSHRDD as u16, + VPSHRDQ = super::Opcode::VPSHRDQ as u16, + VPSHRDVD = super::Opcode::VPSHRDVD as u16, + VPSHRDVQ = super::Opcode::VPSHRDVQ as u16, + VPSHRDVW = super::Opcode::VPSHRDVW as u16, + VPSHRDW = super::Opcode::VPSHRDW as u16, + VPSHUFB = super::Opcode::VPSHUFB as u16, + VPSHUFBITQMB = super::Opcode::VPSHUFBITQMB as u16, + VPSHUFD = super::Opcode::VPSHUFD as u16, + VPSHUFHW = super::Opcode::VPSHUFHW as u16, + VPSHUFLW = super::Opcode::VPSHUFLW as u16, + VPSIGNB = super::Opcode::VPSIGNB as u16, + VPSIGND = super::Opcode::VPSIGND as u16, + VPSIGNW = super::Opcode::VPSIGNW as u16, + VPSLLD = super::Opcode::VPSLLD as u16, + VPSLLDQ = super::Opcode::VPSLLDQ as u16, + VPSLLQ = super::Opcode::VPSLLQ as u16, + VPSLLVD = super::Opcode::VPSLLVD as u16, + VPSLLVQ = super::Opcode::VPSLLVQ as u16, + VPSLLVW = super::Opcode::VPSLLVW as u16, + VPSLLW = super::Opcode::VPSLLW as u16, + VPSRAD = super::Opcode::VPSRAD as u16, + VPSRAQ = super::Opcode::VPSRAQ as u16, + VPSRAVD = super::Opcode::VPSRAVD as u16, + VPSRAVQ = super::Opcode::VPSRAVQ as u16, + VPSRAVW = super::Opcode::VPSRAVW as u16, + VPSRAW = super::Opcode::VPSRAW as u16, + VPSRLD = super::Opcode::VPSRLD as u16, + VPSRLDQ = super::Opcode::VPSRLDQ as u16, + VPSRLQ = super::Opcode::VPSRLQ as u16, + VPSRLVD = super::Opcode::VPSRLVD as u16, + VPSRLVQ = super::Opcode::VPSRLVQ as u16, + VPSRLVW = super::Opcode::VPSRLVW as u16, + VPSRLW = super::Opcode::VPSRLW as u16, + VPSUBB = super::Opcode::VPSUBB as u16, + VPSUBD = super::Opcode::VPSUBD as u16, + VPSUBQ = super::Opcode::VPSUBQ as u16, + VPSUBSB = super::Opcode::VPSUBSB as u16, + VPSUBSW = super::Opcode::VPSUBSW as u16, + VPSUBUSB = super::Opcode::VPSUBUSB as u16, + VPSUBUSW = super::Opcode::VPSUBUSW as u16, + VPSUBW = super::Opcode::VPSUBW as u16, + VPTERNLOGD = super::Opcode::VPTERNLOGD as u16, + VPTERNLOGQ = super::Opcode::VPTERNLOGQ as u16, + VPTEST = super::Opcode::VPTEST as u16, + VPTESTMB = super::Opcode::VPTESTMB as u16, + VPTESTMD = super::Opcode::VPTESTMD as u16, + VPTESTMQ = super::Opcode::VPTESTMQ as u16, + VPTESTMW = super::Opcode::VPTESTMW as u16, + VPTESTNMB = super::Opcode::VPTESTNMB as u16, + VPTESTNMD = super::Opcode::VPTESTNMD as u16, + VPTESTNMQ = super::Opcode::VPTESTNMQ as u16, + VPTESTNMW = super::Opcode::VPTESTNMW as u16, + VPUNPCKHBW = super::Opcode::VPUNPCKHBW as u16, + VPUNPCKHDQ = super::Opcode::VPUNPCKHDQ as u16, + VPUNPCKHQDQ = super::Opcode::VPUNPCKHQDQ as u16, + VPUNPCKHWD = super::Opcode::VPUNPCKHWD as u16, + VPUNPCKLBW = super::Opcode::VPUNPCKLBW as u16, + VPUNPCKLDQ = super::Opcode::VPUNPCKLDQ as u16, + VPUNPCKLQDQ = super::Opcode::VPUNPCKLQDQ as u16, + VPUNPCKLWD = super::Opcode::VPUNPCKLWD as u16, + VPXOR = super::Opcode::VPXOR as u16, + VPXORD = super::Opcode::VPXORD as u16, + VPXORQ = super::Opcode::VPXORQ as u16, + VRANGEPD = super::Opcode::VRANGEPD as u16, + VRANGEPS = super::Opcode::VRANGEPS as u16, + VRANGESD = super::Opcode::VRANGESD as u16, + VRANGESS = super::Opcode::VRANGESS as u16, + VRCP14PD = super::Opcode::VRCP14PD as u16, + VRCP14PS = super::Opcode::VRCP14PS as u16, + VRCP14SD = super::Opcode::VRCP14SD as u16, + VRCP14SS = super::Opcode::VRCP14SS as u16, + VRCP28PD = super::Opcode::VRCP28PD as u16, + VRCP28PS = super::Opcode::VRCP28PS as u16, + VRCP28SD = super::Opcode::VRCP28SD as u16, + VRCP28SS = super::Opcode::VRCP28SS as u16, + VRCPPS = super::Opcode::VRCPPS as u16, + VRCPSS = super::Opcode::VRCPSS as u16, + VREDUCEPD = super::Opcode::VREDUCEPD as u16, + VREDUCEPS = super::Opcode::VREDUCEPS as u16, + VREDUCESD = super::Opcode::VREDUCESD as u16, + VREDUCESS = super::Opcode::VREDUCESS as u16, + VRNDSCALEPD = super::Opcode::VRNDSCALEPD as u16, + VRNDSCALEPS = super::Opcode::VRNDSCALEPS as u16, + VRNDSCALESD = super::Opcode::VRNDSCALESD as u16, + VRNDSCALESS = super::Opcode::VRNDSCALESS as u16, + VROUNDPD = super::Opcode::VROUNDPD as u16, + VROUNDPS = super::Opcode::VROUNDPS as u16, + VROUNDSD = super::Opcode::VROUNDSD as u16, + VROUNDSS = super::Opcode::VROUNDSS as u16, + VRSQRT14PD = super::Opcode::VRSQRT14PD as u16, + VRSQRT14PS = super::Opcode::VRSQRT14PS as u16, + VRSQRT14SD = super::Opcode::VRSQRT14SD as u16, + VRSQRT14SS = super::Opcode::VRSQRT14SS as u16, + VRSQRT28PD = super::Opcode::VRSQRT28PD as u16, + VRSQRT28PS = super::Opcode::VRSQRT28PS as u16, + VRSQRT28SD = super::Opcode::VRSQRT28SD as u16, + VRSQRT28SS = super::Opcode::VRSQRT28SS as u16, + VRSQRTPS = super::Opcode::VRSQRTPS as u16, + VRSQRTSS = super::Opcode::VRSQRTSS as u16, + VSCALEDPD = super::Opcode::VSCALEDPD as u16, + VSCALEDPS = super::Opcode::VSCALEDPS as u16, + VSCALEDSD = super::Opcode::VSCALEDSD as u16, + VSCALEDSS = super::Opcode::VSCALEDSS as u16, + VSCALEFPD = super::Opcode::VSCALEFPD as u16, + VSCALEFPS = super::Opcode::VSCALEFPS as u16, + VSCALEFSD = super::Opcode::VSCALEFSD as u16, + VSCALEFSS = super::Opcode::VSCALEFSS as u16, + VSCATTERDD = super::Opcode::VSCATTERDD as u16, + VSCATTERDPD = super::Opcode::VSCATTERDPD as u16, + VSCATTERDPS = super::Opcode::VSCATTERDPS as u16, + VSCATTERDQ = super::Opcode::VSCATTERDQ as u16, + VSCATTERPF0DPD = super::Opcode::VSCATTERPF0DPD as u16, + VSCATTERPF0DPS = super::Opcode::VSCATTERPF0DPS as u16, + VSCATTERPF0QPD = super::Opcode::VSCATTERPF0QPD as u16, + VSCATTERPF0QPS = super::Opcode::VSCATTERPF0QPS as u16, + VSCATTERPF1DPD = super::Opcode::VSCATTERPF1DPD as u16, + VSCATTERPF1DPS = super::Opcode::VSCATTERPF1DPS as u16, + VSCATTERPF1QPD = super::Opcode::VSCATTERPF1QPD as u16, + VSCATTERPF1QPS = super::Opcode::VSCATTERPF1QPS as u16, + VSCATTERQD = super::Opcode::VSCATTERQD as u16, + VSCATTERQPD = super::Opcode::VSCATTERQPD as u16, + VSCATTERQPS = super::Opcode::VSCATTERQPS as u16, + VSCATTERQQ = super::Opcode::VSCATTERQQ as u16, + VSHUFF32X4 = super::Opcode::VSHUFF32X4 as u16, + VSHUFF64X2 = super::Opcode::VSHUFF64X2 as u16, + VSHUFI32X4 = super::Opcode::VSHUFI32X4 as u16, + VSHUFI64X2 = super::Opcode::VSHUFI64X2 as u16, + VSHUFPD = super::Opcode::VSHUFPD as u16, + VSHUFPS = super::Opcode::VSHUFPS as u16, + VSQRTPD = super::Opcode::VSQRTPD as u16, + VSQRTPS = super::Opcode::VSQRTPS as u16, + VSQRTSD = super::Opcode::VSQRTSD as u16, + VSQRTSS = super::Opcode::VSQRTSS as u16, + VSTMXCSR = super::Opcode::VSTMXCSR as u16, + VSUBPD = super::Opcode::VSUBPD as u16, + VSUBPS = super::Opcode::VSUBPS as u16, + VSUBSD = super::Opcode::VSUBSD as u16, + VSUBSS = super::Opcode::VSUBSS as u16, + VTESTPD = super::Opcode::VTESTPD as u16, + VTESTPS = super::Opcode::VTESTPS as u16, + VUCOMISD = super::Opcode::VUCOMISD as u16, + VUCOMISS = super::Opcode::VUCOMISS as u16, + VUNPCKHPD = super::Opcode::VUNPCKHPD as u16, + VUNPCKHPS = super::Opcode::VUNPCKHPS as u16, + VUNPCKLPD = super::Opcode::VUNPCKLPD as u16, + VUNPCKLPS = super::Opcode::VUNPCKLPS as u16, + VXORPD = super::Opcode::VXORPD as u16, + VXORPS = super::Opcode::VXORPS as u16, + VZEROALL = super::Opcode::VZEROALL as u16, + VZEROUPPER = super::Opcode::VZEROUPPER as u16, + WAIT = super::Opcode::WAIT as u16, + WBINVD = super::Opcode::WBINVD as u16, + WRFSBASE = super::Opcode::WRFSBASE as u16, + WRGSBASE = super::Opcode::WRGSBASE as u16, + WRMSR = super::Opcode::WRMSR as u16, + WRPKRU = super::Opcode::WRPKRU as u16, + WRSS = super::Opcode::WRSS as u16, + WRUSS = super::Opcode::WRUSS as u16, + XABORT = super::Opcode::XABORT as u16, + XADD = super::Opcode::XADD as u16, + XBEGIN = super::Opcode::XBEGIN as u16, + XCHG = super::Opcode::XCHG as u16, + XEND = super::Opcode::XEND as u16, + XGETBV = super::Opcode::XGETBV as u16, + XLAT = super::Opcode::XLAT as u16, + XOR = super::Opcode::XOR as u16, + XORPD = super::Opcode::XORPD as u16, + XORPS = super::Opcode::XORPS as u16, + XRESLDTRK = super::Opcode::XRESLDTRK as u16, + XRSTOR = super::Opcode::XRSTOR as u16, + XRSTORS = super::Opcode::XRSTORS as u16, + XRSTORS64 = super::Opcode::XRSTORS64 as u16, + XSAVE = super::Opcode::XSAVE as u16, + XSAVEC = super::Opcode::XSAVEC as u16, + XSAVEC64 = super::Opcode::XSAVEC64 as u16, + XSAVEOPT = super::Opcode::XSAVEOPT as u16, + XSAVES = super::Opcode::XSAVES as u16, + XSAVES64 = super::Opcode::XSAVES64 as u16, + XSETBV = super::Opcode::XSETBV as u16, + XSUSLDTRK = super::Opcode::XSUSLDTRK as u16, + XTEST = super::Opcode::XTEST as u16, + } +} + +pub(crate) mod long_mode { + #[allow(non_camel_case_types)] + #[derive(Copy, Clone, Debug, Eq, PartialEq)] + #[non_exhaustive] + #[repr(u16)] + pub enum Opcode { + ADC = super::Opcode::ADC as u16, + ADCX = super::Opcode::ADCX as u16, + ADD = super::Opcode::ADD as u16, + ADDPD = super::Opcode::ADDPD as u16, + ADDPS = super::Opcode::ADDPS as u16, + ADDSD = super::Opcode::ADDSD as u16, + ADDSS = super::Opcode::ADDSS as u16, + ADDSUBPD = super::Opcode::ADDSUBPD as u16, + ADDSUBPS = super::Opcode::ADDSUBPS as u16, + ADOX = super::Opcode::ADOX as u16, + AESDEC = super::Opcode::AESDEC as u16, + AESDEC128KL = super::Opcode::AESDEC128KL as u16, + AESDEC256KL = super::Opcode::AESDEC256KL as u16, + AESDECLAST = super::Opcode::AESDECLAST as u16, + AESDECWIDE128KL = super::Opcode::AESDECWIDE128KL as u16, + AESDECWIDE256KL = super::Opcode::AESDECWIDE256KL as u16, + AESENC = super::Opcode::AESENC as u16, + AESENC128KL = super::Opcode::AESENC128KL as u16, + AESENC256KL = super::Opcode::AESENC256KL as u16, + AESENCLAST = super::Opcode::AESENCLAST as u16, + AESENCWIDE128KL = super::Opcode::AESENCWIDE128KL as u16, + AESENCWIDE256KL = super::Opcode::AESENCWIDE256KL as u16, + AESIMC = super::Opcode::AESIMC as u16, + AESKEYGENASSIST = super::Opcode::AESKEYGENASSIST as u16, + AND = super::Opcode::AND as u16, + ANDN = super::Opcode::ANDN as u16, + ANDNPD = super::Opcode::ANDNPD as u16, + ANDNPS = super::Opcode::ANDNPS as u16, + ANDPD = super::Opcode::ANDPD as u16, + ANDPS = super::Opcode::ANDPS as u16, + BEXTR = super::Opcode::BEXTR as u16, + BLENDPD = super::Opcode::BLENDPD as u16, + BLENDPS = super::Opcode::BLENDPS as u16, + BLENDVPD = super::Opcode::BLENDVPD as u16, + BLENDVPS = super::Opcode::BLENDVPS as u16, + BLENDW = super::Opcode::BLENDW as u16, + BLSI = super::Opcode::BLSI as u16, + BLSMSK = super::Opcode::BLSMSK as u16, + BLSR = super::Opcode::BLSR as u16, + BNDCL = super::Opcode::BNDCL as u16, + BNDCN = super::Opcode::BNDCN as u16, + BNDCU = super::Opcode::BNDCU as u16, + BNDLDX = super::Opcode::BNDLDX as u16, + BNDMK = super::Opcode::BNDMK as u16, + BNDMOV = super::Opcode::BNDMOV as u16, + BNDSTX = super::Opcode::BNDSTX as u16, + BSF = super::Opcode::BSF as u16, + BSR = super::Opcode::BSR as u16, + BSWAP = super::Opcode::BSWAP as u16, + BT = super::Opcode::BT as u16, + BTC = super::Opcode::BTC as u16, + BTR = super::Opcode::BTR as u16, + BTS = super::Opcode::BTS as u16, + BZHI = super::Opcode::BZHI as u16, + CALL = super::Opcode::CALL as u16, + CALLF = super::Opcode::CALLF as u16, + CBW = super::Opcode::CBW as u16, + CDQ = super::Opcode::CDQ as u16, + CDQE = super::Opcode::CDQE as u16, + CLAC = super::Opcode::CLAC as u16, + CLC = super::Opcode::CLC as u16, + CLD = super::Opcode::CLD as u16, + CLFLUSH = super::Opcode::CLFLUSH as u16, + CLFLUSHOPT = super::Opcode::CLFLUSHOPT as u16, + CLGI = super::Opcode::CLGI as u16, + CLI = super::Opcode::CLI as u16, + CLRSSBSY = super::Opcode::CLRSSBSY as u16, + CLTS = super::Opcode::CLTS as u16, + CLUI = super::Opcode::CLUI as u16, + CLWB = super::Opcode::CLWB as u16, + CLZERO = super::Opcode::CLZERO as u16, + CMC = super::Opcode::CMC as u16, + CMOVA = super::Opcode::CMOVA as u16, + CMOVB = super::Opcode::CMOVB as u16, + CMOVG = super::Opcode::CMOVG as u16, + CMOVGE = super::Opcode::CMOVGE as u16, + CMOVL = super::Opcode::CMOVL as u16, + CMOVLE = super::Opcode::CMOVLE as u16, + CMOVNA = super::Opcode::CMOVNA as u16, + CMOVNB = super::Opcode::CMOVNB as u16, + CMOVNO = super::Opcode::CMOVNO as u16, + CMOVNP = super::Opcode::CMOVNP as u16, + CMOVNS = super::Opcode::CMOVNS as u16, + CMOVNZ = super::Opcode::CMOVNZ as u16, + CMOVO = super::Opcode::CMOVO as u16, + CMOVP = super::Opcode::CMOVP as u16, + CMOVS = super::Opcode::CMOVS as u16, + CMOVZ = super::Opcode::CMOVZ as u16, + CMP = super::Opcode::CMP as u16, + CMPPD = super::Opcode::CMPPD as u16, + CMPPS = super::Opcode::CMPPS as u16, + CMPS = super::Opcode::CMPS as u16, + CMPSD = super::Opcode::CMPSD as u16, + CMPSS = super::Opcode::CMPSS as u16, + CMPXCHG = super::Opcode::CMPXCHG as u16, + CMPXCHG16B = super::Opcode::CMPXCHG16B as u16, + CMPXCHG8B = super::Opcode::CMPXCHG8B as u16, + COMISD = super::Opcode::COMISD as u16, + COMISS = super::Opcode::COMISS as u16, + CPUID = super::Opcode::CPUID as u16, + CQO = super::Opcode::CQO as u16, + CRC32 = super::Opcode::CRC32 as u16, + CVTDQ2PD = super::Opcode::CVTDQ2PD as u16, + CVTDQ2PS = super::Opcode::CVTDQ2PS as u16, + CVTPD2DQ = super::Opcode::CVTPD2DQ as u16, + CVTPD2PI = super::Opcode::CVTPD2PI as u16, + CVTPD2PS = super::Opcode::CVTPD2PS as u16, + CVTPI2PD = super::Opcode::CVTPI2PD as u16, + CVTPI2PS = super::Opcode::CVTPI2PS as u16, + CVTPS2DQ = super::Opcode::CVTPS2DQ as u16, + CVTPS2PD = super::Opcode::CVTPS2PD as u16, + CVTPS2PI = super::Opcode::CVTPS2PI as u16, + CVTSD2SI = super::Opcode::CVTSD2SI as u16, + CVTSD2SS = super::Opcode::CVTSD2SS as u16, + CVTSI2SD = super::Opcode::CVTSI2SD as u16, + CVTSI2SS = super::Opcode::CVTSI2SS as u16, + CVTSS2SD = super::Opcode::CVTSS2SD as u16, + CVTSS2SI = super::Opcode::CVTSS2SI as u16, + CVTTPD2DQ = super::Opcode::CVTTPD2DQ as u16, + CVTTPD2PI = super::Opcode::CVTTPD2PI as u16, + CVTTPS2DQ = super::Opcode::CVTTPS2DQ as u16, + CVTTPS2PI = super::Opcode::CVTTPS2PI as u16, + CVTTSD2SI = super::Opcode::CVTTSD2SI as u16, + CVTTSS2SI = super::Opcode::CVTTSS2SI as u16, + CWD = super::Opcode::CWD as u16, + CWDE = super::Opcode::CWDE as u16, + DEC = super::Opcode::DEC as u16, + DIV = super::Opcode::DIV as u16, + DIVPD = super::Opcode::DIVPD as u16, + DIVPS = super::Opcode::DIVPS as u16, + DIVSD = super::Opcode::DIVSD as u16, + DIVSS = super::Opcode::DIVSS as u16, + DPPD = super::Opcode::DPPD as u16, + DPPS = super::Opcode::DPPS as u16, + EMMS = super::Opcode::EMMS as u16, + ENCLS = super::Opcode::ENCLS as u16, + ENCLU = super::Opcode::ENCLU as u16, + ENCLV = super::Opcode::ENCLV as u16, + ENCODEKEY128 = super::Opcode::ENCODEKEY128 as u16, + ENCODEKEY256 = super::Opcode::ENCODEKEY256 as u16, + ENDBR32 = super::Opcode::ENDBR32 as u16, + ENDBR64 = super::Opcode::ENDBR64 as u16, + ENQCMD = super::Opcode::ENQCMD as u16, + ENQCMDS = super::Opcode::ENQCMDS as u16, + ENTER = super::Opcode::ENTER as u16, + EXTRACTPS = super::Opcode::EXTRACTPS as u16, + EXTRQ = super::Opcode::EXTRQ as u16, + F2XM1 = super::Opcode::F2XM1 as u16, + FABS = super::Opcode::FABS as u16, + FADD = super::Opcode::FADD as u16, + FADDP = super::Opcode::FADDP as u16, + FBLD = super::Opcode::FBLD as u16, + FBSTP = super::Opcode::FBSTP as u16, + FCHS = super::Opcode::FCHS as u16, + FCMOVB = super::Opcode::FCMOVB as u16, + FCMOVBE = super::Opcode::FCMOVBE as u16, + FCMOVE = super::Opcode::FCMOVE as u16, + FCMOVNB = super::Opcode::FCMOVNB as u16, + FCMOVNBE = super::Opcode::FCMOVNBE as u16, + FCMOVNE = super::Opcode::FCMOVNE as u16, + FCMOVNU = super::Opcode::FCMOVNU as u16, + FCMOVU = super::Opcode::FCMOVU as u16, + FCOM = super::Opcode::FCOM as u16, + FCOMI = super::Opcode::FCOMI as u16, + FCOMIP = super::Opcode::FCOMIP as u16, + FCOMP = super::Opcode::FCOMP as u16, + FCOMPP = super::Opcode::FCOMPP as u16, + FCOS = super::Opcode::FCOS as u16, + FDECSTP = super::Opcode::FDECSTP as u16, + FDISI8087_NOP = super::Opcode::FDISI8087_NOP as u16, + FDIV = super::Opcode::FDIV as u16, + FDIVP = super::Opcode::FDIVP as u16, + FDIVR = super::Opcode::FDIVR as u16, + FDIVRP = super::Opcode::FDIVRP as u16, + FEMMS = super::Opcode::FEMMS as u16, + FENI8087_NOP = super::Opcode::FENI8087_NOP as u16, + FFREE = super::Opcode::FFREE as u16, + FFREEP = super::Opcode::FFREEP as u16, + FIADD = super::Opcode::FIADD as u16, + FICOM = super::Opcode::FICOM as u16, + FICOMP = super::Opcode::FICOMP as u16, + FIDIV = super::Opcode::FIDIV as u16, + FIDIVR = super::Opcode::FIDIVR as u16, + FILD = super::Opcode::FILD as u16, + FIMUL = super::Opcode::FIMUL as u16, + FINCSTP = super::Opcode::FINCSTP as u16, + FIST = super::Opcode::FIST as u16, + FISTP = super::Opcode::FISTP as u16, + FISTTP = super::Opcode::FISTTP as u16, + FISUB = super::Opcode::FISUB as u16, + FISUBR = super::Opcode::FISUBR as u16, + FLD = super::Opcode::FLD as u16, + FLD1 = super::Opcode::FLD1 as u16, + FLDCW = super::Opcode::FLDCW as u16, + FLDENV = super::Opcode::FLDENV as u16, + FLDL2E = super::Opcode::FLDL2E as u16, + FLDL2T = super::Opcode::FLDL2T as u16, + FLDLG2 = super::Opcode::FLDLG2 as u16, + FLDLN2 = super::Opcode::FLDLN2 as u16, + FLDPI = super::Opcode::FLDPI as u16, + FLDZ = super::Opcode::FLDZ as u16, + FMUL = super::Opcode::FMUL as u16, + FMULP = super::Opcode::FMULP as u16, + FNCLEX = super::Opcode::FNCLEX as u16, + FNINIT = super::Opcode::FNINIT as u16, + FNOP = super::Opcode::FNOP as u16, + FNSAVE = super::Opcode::FNSAVE as u16, + FNSTCW = super::Opcode::FNSTCW as u16, + FNSTENV = super::Opcode::FNSTENV as u16, + FNSTOR = super::Opcode::FNSTOR as u16, + FNSTSW = super::Opcode::FNSTSW as u16, + FPATAN = super::Opcode::FPATAN as u16, + FPREM = super::Opcode::FPREM as u16, + FPREM1 = super::Opcode::FPREM1 as u16, + FPTAN = super::Opcode::FPTAN as u16, + FRNDINT = super::Opcode::FRNDINT as u16, + FRSTOR = super::Opcode::FRSTOR as u16, + FSCALE = super::Opcode::FSCALE as u16, + FSETPM287_NOP = super::Opcode::FSETPM287_NOP as u16, + FSIN = super::Opcode::FSIN as u16, + FSINCOS = super::Opcode::FSINCOS as u16, + FSQRT = super::Opcode::FSQRT as u16, + FST = super::Opcode::FST as u16, + FSTP = super::Opcode::FSTP as u16, + FSTPNCE = super::Opcode::FSTPNCE as u16, + FSUB = super::Opcode::FSUB as u16, + FSUBP = super::Opcode::FSUBP as u16, + FSUBR = super::Opcode::FSUBR as u16, + FSUBRP = super::Opcode::FSUBRP as u16, + FTST = super::Opcode::FTST as u16, + FUCOM = super::Opcode::FUCOM as u16, + FUCOMI = super::Opcode::FUCOMI as u16, + FUCOMIP = super::Opcode::FUCOMIP as u16, + FUCOMP = super::Opcode::FUCOMP as u16, + FUCOMPP = super::Opcode::FUCOMPP as u16, + FXAM = super::Opcode::FXAM as u16, + FXCH = super::Opcode::FXCH as u16, + FXRSTOR = super::Opcode::FXRSTOR as u16, + FXSAVE = super::Opcode::FXSAVE as u16, + FXTRACT = super::Opcode::FXTRACT as u16, + FYL2X = super::Opcode::FYL2X as u16, + FYL2XP1 = super::Opcode::FYL2XP1 as u16, + GETSEC = super::Opcode::GETSEC as u16, + GF2P8AFFINEINVQB = super::Opcode::GF2P8AFFINEINVQB as u16, + GF2P8AFFINEQB = super::Opcode::GF2P8AFFINEQB as u16, + GF2P8MULB = super::Opcode::GF2P8MULB as u16, + HADDPD = super::Opcode::HADDPD as u16, + HADDPS = super::Opcode::HADDPS as u16, + HLT = super::Opcode::HLT as u16, + HRESET = super::Opcode::HRESET as u16, + HSUBPD = super::Opcode::HSUBPD as u16, + HSUBPS = super::Opcode::HSUBPS as u16, + IDIV = super::Opcode::IDIV as u16, + IMUL = super::Opcode::IMUL as u16, + IN = super::Opcode::IN as u16, + INC = super::Opcode::INC as u16, + INCSSP = super::Opcode::INCSSP as u16, + INS = super::Opcode::INS as u16, + INSERTPS = super::Opcode::INSERTPS as u16, + INSERTQ = super::Opcode::INSERTQ as u16, + INT = super::Opcode::INT as u16, + INTO = super::Opcode::INTO as u16, + Invalid = super::Opcode::Invalid as u16, + INVD = super::Opcode::INVD as u16, + INVEPT = super::Opcode::INVEPT as u16, + INVLPG = super::Opcode::INVLPG as u16, + INVLPGA = super::Opcode::INVLPGA as u16, + INVLPGB = super::Opcode::INVLPGB as u16, + INVPCID = super::Opcode::INVPCID as u16, + INVVPID = super::Opcode::INVVPID as u16, + IRET = super::Opcode::IRET as u16, + IRETD = super::Opcode::IRETD as u16, + IRETQ = super::Opcode::IRETQ as u16, + JA = super::Opcode::JA as u16, + JB = super::Opcode::JB as u16, + JG = super::Opcode::JG as u16, + JGE = super::Opcode::JGE as u16, + JL = super::Opcode::JL as u16, + JLE = super::Opcode::JLE as u16, + JMP = super::Opcode::JMP as u16, + JMPE = super::Opcode::JMPE as u16, + JMPF = super::Opcode::JMPF as u16, + JNA = super::Opcode::JNA as u16, + JNB = super::Opcode::JNB as u16, + JNO = super::Opcode::JNO as u16, + JNP = super::Opcode::JNP as u16, + JNS = super::Opcode::JNS as u16, + JNZ = super::Opcode::JNZ as u16, + JO = super::Opcode::JO as u16, + JP = super::Opcode::JP as u16, + JRCXZ = super::Opcode::JRCXZ as u16, + JS = super::Opcode::JS as u16, + JZ = super::Opcode::JZ as u16, + KADDB = super::Opcode::KADDB as u16, + KADDD = super::Opcode::KADDD as u16, + KADDQ = super::Opcode::KADDQ as u16, + KADDW = super::Opcode::KADDW as u16, + KANDB = super::Opcode::KANDB as u16, + KANDD = super::Opcode::KANDD as u16, + KANDNB = super::Opcode::KANDNB as u16, + KANDND = super::Opcode::KANDND as u16, + KANDNQ = super::Opcode::KANDNQ as u16, + KANDNW = super::Opcode::KANDNW as u16, + KANDQ = super::Opcode::KANDQ as u16, + KANDW = super::Opcode::KANDW as u16, + KMOVB = super::Opcode::KMOVB as u16, + KMOVD = super::Opcode::KMOVD as u16, + KMOVQ = super::Opcode::KMOVQ as u16, + KMOVW = super::Opcode::KMOVW as u16, + KNOTB = super::Opcode::KNOTB as u16, + KNOTD = super::Opcode::KNOTD as u16, + KNOTQ = super::Opcode::KNOTQ as u16, + KNOTW = super::Opcode::KNOTW as u16, + KORB = super::Opcode::KORB as u16, + KORD = super::Opcode::KORD as u16, + KORQ = super::Opcode::KORQ as u16, + KORTESTB = super::Opcode::KORTESTB as u16, + KORTESTD = super::Opcode::KORTESTD as u16, + KORTESTQ = super::Opcode::KORTESTQ as u16, + KORTESTW = super::Opcode::KORTESTW as u16, + KORW = super::Opcode::KORW as u16, + KSHIFTLB = super::Opcode::KSHIFTLB as u16, + KSHIFTLD = super::Opcode::KSHIFTLD as u16, + KSHIFTLQ = super::Opcode::KSHIFTLQ as u16, + KSHIFTLW = super::Opcode::KSHIFTLW as u16, + KSHIFTRB = super::Opcode::KSHIFTRB as u16, + KSHIFTRD = super::Opcode::KSHIFTRD as u16, + KSHIFTRQ = super::Opcode::KSHIFTRQ as u16, + KSHIFTRW = super::Opcode::KSHIFTRW as u16, + KTESTB = super::Opcode::KTESTB as u16, + KTESTD = super::Opcode::KTESTD as u16, + KTESTQ = super::Opcode::KTESTQ as u16, + KTESTW = super::Opcode::KTESTW as u16, + KUNPCKBW = super::Opcode::KUNPCKBW as u16, + KUNPCKDQ = super::Opcode::KUNPCKDQ as u16, + KUNPCKWD = super::Opcode::KUNPCKWD as u16, + KXNORB = super::Opcode::KXNORB as u16, + KXNORD = super::Opcode::KXNORD as u16, + KXNORQ = super::Opcode::KXNORQ as u16, + KXNORW = super::Opcode::KXNORW as u16, + KXORB = super::Opcode::KXORB as u16, + KXORD = super::Opcode::KXORD as u16, + KXORQ = super::Opcode::KXORQ as u16, + KXORW = super::Opcode::KXORW as u16, + LAHF = super::Opcode::LAHF as u16, + LAR = super::Opcode::LAR as u16, + LDDQU = super::Opcode::LDDQU as u16, + LDMXCSR = super::Opcode::LDMXCSR as u16, + LDS = super::Opcode::LDS as u16, + LEA = super::Opcode::LEA as u16, + LEAVE = super::Opcode::LEAVE as u16, + LES = super::Opcode::LES as u16, + LFENCE = super::Opcode::LFENCE as u16, + LFS = super::Opcode::LFS as u16, + LGDT = super::Opcode::LGDT as u16, + LGS = super::Opcode::LGS as u16, + LIDT = super::Opcode::LIDT as u16, + LLDT = super::Opcode::LLDT as u16, + LMSW = super::Opcode::LMSW as u16, + LOADIWKEY = super::Opcode::LOADIWKEY as u16, + LODS = super::Opcode::LODS as u16, + LOOP = super::Opcode::LOOP as u16, + LOOPNZ = super::Opcode::LOOPNZ as u16, + LOOPZ = super::Opcode::LOOPZ as u16, + LSL = super::Opcode::LSL as u16, + LSS = super::Opcode::LSS as u16, + LTR = super::Opcode::LTR as u16, + LZCNT = super::Opcode::LZCNT as u16, + MASKMOVDQU = super::Opcode::MASKMOVDQU as u16, + MASKMOVQ = super::Opcode::MASKMOVQ as u16, + MAXPD = super::Opcode::MAXPD as u16, + MAXPS = super::Opcode::MAXPS as u16, + MAXSD = super::Opcode::MAXSD as u16, + MAXSS = super::Opcode::MAXSS as u16, + MFENCE = super::Opcode::MFENCE as u16, + MINPD = super::Opcode::MINPD as u16, + MINPS = super::Opcode::MINPS as u16, + MINSD = super::Opcode::MINSD as u16, + MINSS = super::Opcode::MINSS as u16, + MONITOR = super::Opcode::MONITOR as u16, + MONITORX = super::Opcode::MONITORX as u16, + MOV = super::Opcode::MOV as u16, + MOVAPD = super::Opcode::MOVAPD as u16, + MOVAPS = super::Opcode::MOVAPS as u16, + MOVBE = super::Opcode::MOVBE as u16, + MOVD = super::Opcode::MOVD as u16, + MOVDDUP = super::Opcode::MOVDDUP as u16, + MOVDIR64B = super::Opcode::MOVDIR64B as u16, + MOVDIRI = super::Opcode::MOVDIRI as u16, + MOVDQ2Q = super::Opcode::MOVDQ2Q as u16, + MOVDQA = super::Opcode::MOVDQA as u16, + MOVDQU = super::Opcode::MOVDQU as u16, + MOVHLPS = super::Opcode::MOVHLPS as u16, + MOVHPD = super::Opcode::MOVHPD as u16, + MOVHPS = super::Opcode::MOVHPS as u16, + MOVLHPS = super::Opcode::MOVLHPS as u16, + MOVLPD = super::Opcode::MOVLPD as u16, + MOVLPS = super::Opcode::MOVLPS as u16, + MOVMSKPD = super::Opcode::MOVMSKPD as u16, + MOVMSKPS = super::Opcode::MOVMSKPS as u16, + MOVNTDQ = super::Opcode::MOVNTDQ as u16, + MOVNTDQA = super::Opcode::MOVNTDQA as u16, + MOVNTI = super::Opcode::MOVNTI as u16, + MOVNTPD = super::Opcode::MOVNTPD as u16, + MOVNTPS = super::Opcode::MOVNTPS as u16, + MOVNTQ = super::Opcode::MOVNTQ as u16, + MOVNTSD = super::Opcode::MOVNTSD as u16, + MOVNTSS = super::Opcode::MOVNTSS as u16, + MOVQ = super::Opcode::MOVQ as u16, + MOVQ2DQ = super::Opcode::MOVQ2DQ as u16, + MOVS = super::Opcode::MOVS as u16, + MOVSD = super::Opcode::MOVSD as u16, + MOVSHDUP = super::Opcode::MOVSHDUP as u16, + MOVSLDUP = super::Opcode::MOVSLDUP as u16, + MOVSS = super::Opcode::MOVSS as u16, + MOVSX = super::Opcode::MOVSX as u16, + MOVSXD = super::Opcode::MOVSXD as u16, + MOVUPD = super::Opcode::MOVUPD as u16, + MOVUPS = super::Opcode::MOVUPS as u16, + MOVZX = super::Opcode::MOVZX as u16, + MPSADBW = super::Opcode::MPSADBW as u16, + MUL = super::Opcode::MUL as u16, + MULPD = super::Opcode::MULPD as u16, + MULPS = super::Opcode::MULPS as u16, + MULSD = super::Opcode::MULSD as u16, + MULSS = super::Opcode::MULSS as u16, + MULX = super::Opcode::MULX as u16, + MWAIT = super::Opcode::MWAIT as u16, + MWAITX = super::Opcode::MWAITX as u16, + NEG = super::Opcode::NEG as u16, + NOP = super::Opcode::NOP as u16, + NOT = super::Opcode::NOT as u16, + OR = super::Opcode::OR as u16, + ORPD = super::Opcode::ORPD as u16, + ORPS = super::Opcode::ORPS as u16, + OUT = super::Opcode::OUT as u16, + OUTS = super::Opcode::OUTS as u16, + PABSB = super::Opcode::PABSB as u16, + PABSD = super::Opcode::PABSD as u16, + PABSW = super::Opcode::PABSW as u16, + PACKSSDW = super::Opcode::PACKSSDW as u16, + PACKSSWB = super::Opcode::PACKSSWB as u16, + PACKUSDW = super::Opcode::PACKUSDW as u16, + PACKUSWB = super::Opcode::PACKUSWB as u16, + PADDB = super::Opcode::PADDB as u16, + PADDD = super::Opcode::PADDD as u16, + PADDQ = super::Opcode::PADDQ as u16, + PADDSB = super::Opcode::PADDSB as u16, + PADDSW = super::Opcode::PADDSW as u16, + PADDUSB = super::Opcode::PADDUSB as u16, + PADDUSW = super::Opcode::PADDUSW as u16, + PADDW = super::Opcode::PADDW as u16, + PALIGNR = super::Opcode::PALIGNR as u16, + PAND = super::Opcode::PAND as u16, + PANDN = super::Opcode::PANDN as u16, + PAVGB = super::Opcode::PAVGB as u16, + PAVGUSB = super::Opcode::PAVGUSB as u16, + PAVGW = super::Opcode::PAVGW as u16, + PBLENDVB = super::Opcode::PBLENDVB as u16, + PBLENDW = super::Opcode::PBLENDW as u16, + PCLMULQDQ = super::Opcode::PCLMULQDQ as u16, + PCMPEQB = super::Opcode::PCMPEQB as u16, + PCMPEQD = super::Opcode::PCMPEQD as u16, + PCMPEQQ = super::Opcode::PCMPEQQ as u16, + PCMPEQW = super::Opcode::PCMPEQW as u16, + PCMPESTRI = super::Opcode::PCMPESTRI as u16, + PCMPESTRM = super::Opcode::PCMPESTRM as u16, + PCMPGTB = super::Opcode::PCMPGTB as u16, + PCMPGTD = super::Opcode::PCMPGTD as u16, + PCMPGTQ = super::Opcode::PCMPGTQ as u16, + PCMPGTW = super::Opcode::PCMPGTW as u16, + PCMPISTRI = super::Opcode::PCMPISTRI as u16, + PCMPISTRM = super::Opcode::PCMPISTRM as u16, + PCONFIG = super::Opcode::PCONFIG as u16, + PDEP = super::Opcode::PDEP as u16, + PEXT = super::Opcode::PEXT as u16, + PEXTRB = super::Opcode::PEXTRB as u16, + PEXTRD = super::Opcode::PEXTRD as u16, + PEXTRQ = super::Opcode::PEXTRQ as u16, + PEXTRW = super::Opcode::PEXTRW as u16, + PF2ID = super::Opcode::PF2ID as u16, + PF2IW = super::Opcode::PF2IW as u16, + PFACC = super::Opcode::PFACC as u16, + PFADD = super::Opcode::PFADD as u16, + PFCMPEQ = super::Opcode::PFCMPEQ as u16, + PFCMPGE = super::Opcode::PFCMPGE as u16, + PFCMPGT = super::Opcode::PFCMPGT as u16, + PFMAX = super::Opcode::PFMAX as u16, + PFMIN = super::Opcode::PFMIN as u16, + PFMUL = super::Opcode::PFMUL as u16, + PFMULHRW = super::Opcode::PFMULHRW as u16, + PFNACC = super::Opcode::PFNACC as u16, + PFPNACC = super::Opcode::PFPNACC as u16, + PFRCP = super::Opcode::PFRCP as u16, + PFRCPIT1 = super::Opcode::PFRCPIT1 as u16, + PFRCPIT2 = super::Opcode::PFRCPIT2 as u16, + PFRSQIT1 = super::Opcode::PFRSQIT1 as u16, + PFRSQRT = super::Opcode::PFRSQRT as u16, + PFSUB = super::Opcode::PFSUB as u16, + PFSUBR = super::Opcode::PFSUBR as u16, + PHADDD = super::Opcode::PHADDD as u16, + PHADDSW = super::Opcode::PHADDSW as u16, + PHADDW = super::Opcode::PHADDW as u16, + PHMINPOSUW = super::Opcode::PHMINPOSUW as u16, + PHSUBD = super::Opcode::PHSUBD as u16, + PHSUBSW = super::Opcode::PHSUBSW as u16, + PHSUBW = super::Opcode::PHSUBW as u16, + PI2FD = super::Opcode::PI2FD as u16, + PI2FW = super::Opcode::PI2FW as u16, + PINSRB = super::Opcode::PINSRB as u16, + PINSRD = super::Opcode::PINSRD as u16, + PINSRQ = super::Opcode::PINSRQ as u16, + PINSRW = super::Opcode::PINSRW as u16, + PMADDUBSW = super::Opcode::PMADDUBSW as u16, + PMADDWD = super::Opcode::PMADDWD as u16, + PMAXSB = super::Opcode::PMAXSB as u16, + PMAXSD = super::Opcode::PMAXSD as u16, + PMAXSW = super::Opcode::PMAXSW as u16, + PMAXUB = super::Opcode::PMAXUB as u16, + PMAXUD = super::Opcode::PMAXUD as u16, + PMAXUW = super::Opcode::PMAXUW as u16, + PMINSB = super::Opcode::PMINSB as u16, + PMINSD = super::Opcode::PMINSD as u16, + PMINSW = super::Opcode::PMINSW as u16, + PMINUB = super::Opcode::PMINUB as u16, + PMINUD = super::Opcode::PMINUD as u16, + PMINUW = super::Opcode::PMINUW as u16, + PMOVMSKB = super::Opcode::PMOVMSKB as u16, + PMOVSXBD = super::Opcode::PMOVSXBD as u16, + PMOVSXBQ = super::Opcode::PMOVSXBQ as u16, + PMOVSXBW = super::Opcode::PMOVSXBW as u16, + PMOVSXDQ = super::Opcode::PMOVSXDQ as u16, + PMOVSXWD = super::Opcode::PMOVSXWD as u16, + PMOVSXWQ = super::Opcode::PMOVSXWQ as u16, + PMOVZXBD = super::Opcode::PMOVZXBD as u16, + PMOVZXBQ = super::Opcode::PMOVZXBQ as u16, + PMOVZXBW = super::Opcode::PMOVZXBW as u16, + PMOVZXDQ = super::Opcode::PMOVZXDQ as u16, + PMOVZXWD = super::Opcode::PMOVZXWD as u16, + PMOVZXWQ = super::Opcode::PMOVZXWQ as u16, + PMULDQ = super::Opcode::PMULDQ as u16, + PMULHRSW = super::Opcode::PMULHRSW as u16, + PMULHRW = super::Opcode::PMULHRW as u16, + PMULHUW = super::Opcode::PMULHUW as u16, + PMULHW = super::Opcode::PMULHW as u16, + PMULLD = super::Opcode::PMULLD as u16, + PMULLW = super::Opcode::PMULLW as u16, + PMULUDQ = super::Opcode::PMULUDQ as u16, + POP = super::Opcode::POP as u16, + POPCNT = super::Opcode::POPCNT as u16, + POPF = super::Opcode::POPF as u16, + POR = super::Opcode::POR as u16, + PREFETCH0 = super::Opcode::PREFETCH0 as u16, + PREFETCH1 = super::Opcode::PREFETCH1 as u16, + PREFETCH2 = super::Opcode::PREFETCH2 as u16, + PREFETCHNTA = super::Opcode::PREFETCHNTA as u16, + PREFETCHW = super::Opcode::PREFETCHW as u16, + PSADBW = super::Opcode::PSADBW as u16, + PSHUFB = super::Opcode::PSHUFB as u16, + PSHUFD = super::Opcode::PSHUFD as u16, + PSHUFHW = super::Opcode::PSHUFHW as u16, + PSHUFLW = super::Opcode::PSHUFLW as u16, + PSHUFW = super::Opcode::PSHUFW as u16, + PSIGNB = super::Opcode::PSIGNB as u16, + PSIGND = super::Opcode::PSIGND as u16, + PSIGNW = super::Opcode::PSIGNW as u16, + PSLLD = super::Opcode::PSLLD as u16, + PSLLDQ = super::Opcode::PSLLDQ as u16, + PSLLQ = super::Opcode::PSLLQ as u16, + PSLLW = super::Opcode::PSLLW as u16, + PSMASH = super::Opcode::PSMASH as u16, + PSRAD = super::Opcode::PSRAD as u16, + PSRAW = super::Opcode::PSRAW as u16, + PSRLD = super::Opcode::PSRLD as u16, + PSRLDQ = super::Opcode::PSRLDQ as u16, + PSRLQ = super::Opcode::PSRLQ as u16, + PSRLW = super::Opcode::PSRLW as u16, + PSUBB = super::Opcode::PSUBB as u16, + PSUBD = super::Opcode::PSUBD as u16, + PSUBQ = super::Opcode::PSUBQ as u16, + PSUBSB = super::Opcode::PSUBSB as u16, + PSUBSW = super::Opcode::PSUBSW as u16, + PSUBUSB = super::Opcode::PSUBUSB as u16, + PSUBUSW = super::Opcode::PSUBUSW as u16, + PSUBW = super::Opcode::PSUBW as u16, + PSWAPD = super::Opcode::PSWAPD as u16, + PTEST = super::Opcode::PTEST as u16, + PTWRITE = super::Opcode::PTWRITE as u16, + PUNPCKHBW = super::Opcode::PUNPCKHBW as u16, + PUNPCKHDQ = super::Opcode::PUNPCKHDQ as u16, + PUNPCKHQDQ = super::Opcode::PUNPCKHQDQ as u16, + PUNPCKHWD = super::Opcode::PUNPCKHWD as u16, + PUNPCKLBW = super::Opcode::PUNPCKLBW as u16, + PUNPCKLDQ = super::Opcode::PUNPCKLDQ as u16, + PUNPCKLQDQ = super::Opcode::PUNPCKLQDQ as u16, + PUNPCKLWD = super::Opcode::PUNPCKLWD as u16, + PUSH = super::Opcode::PUSH as u16, + PUSHF = super::Opcode::PUSHF as u16, + PVALIDATE = super::Opcode::PVALIDATE as u16, + PXOR = super::Opcode::PXOR as u16, + RCL = super::Opcode::RCL as u16, + RCPPS = super::Opcode::RCPPS as u16, + RCPSS = super::Opcode::RCPSS as u16, + RCR = super::Opcode::RCR as u16, + RDFSBASE = super::Opcode::RDFSBASE as u16, + RDGSBASE = super::Opcode::RDGSBASE as u16, + RDMSR = super::Opcode::RDMSR as u16, + RDPID = super::Opcode::RDPID as u16, + RDPKRU = super::Opcode::RDPKRU as u16, + RDPMC = super::Opcode::RDPMC as u16, + RDPRU = super::Opcode::RDPRU as u16, + RDRAND = super::Opcode::RDRAND as u16, + RDSEED = super::Opcode::RDSEED as u16, + RDTSC = super::Opcode::RDTSC as u16, + RDTSCP = super::Opcode::RDTSCP as u16, + RETF = super::Opcode::RETF as u16, + RETURN = super::Opcode::RETURN as u16, + RMPADJUST = super::Opcode::RMPADJUST as u16, + RMPUPDATE = super::Opcode::RMPUPDATE as u16, + ROL = super::Opcode::ROL as u16, + ROR = super::Opcode::ROR as u16, + RORX = super::Opcode::RORX as u16, + ROUNDPD = super::Opcode::ROUNDPD as u16, + ROUNDPS = super::Opcode::ROUNDPS as u16, + ROUNDSD = super::Opcode::ROUNDSD as u16, + ROUNDSS = super::Opcode::ROUNDSS as u16, + RSM = super::Opcode::RSM as u16, + RSQRTPS = super::Opcode::RSQRTPS as u16, + RSQRTSS = super::Opcode::RSQRTSS as u16, + RSTORSSP = super::Opcode::RSTORSSP as u16, + SAHF = super::Opcode::SAHF as u16, + SAL = super::Opcode::SAL as u16, + SALC = super::Opcode::SALC as u16, + SAR = super::Opcode::SAR as u16, + SARX = super::Opcode::SARX as u16, + SAVEPREVSSP = super::Opcode::SAVEPREVSSP as u16, + SBB = super::Opcode::SBB as u16, + SCAS = super::Opcode::SCAS as u16, + SEAMCALL = super::Opcode::SEAMCALL as u16, + SEAMOPS = super::Opcode::SEAMOPS as u16, + SEAMRET = super::Opcode::SEAMRET as u16, + SENDUIPI = super::Opcode::SENDUIPI as u16, + SETA = super::Opcode::SETA as u16, + SETAE = super::Opcode::SETAE as u16, + SETB = super::Opcode::SETB as u16, + SETBE = super::Opcode::SETBE as u16, + SETG = super::Opcode::SETG as u16, + SETGE = super::Opcode::SETGE as u16, + SETL = super::Opcode::SETL as u16, + SETLE = super::Opcode::SETLE as u16, + SETNO = super::Opcode::SETNO as u16, + SETNP = super::Opcode::SETNP as u16, + SETNS = super::Opcode::SETNS as u16, + SETNZ = super::Opcode::SETNZ as u16, + SETO = super::Opcode::SETO as u16, + SETP = super::Opcode::SETP as u16, + SETS = super::Opcode::SETS as u16, + SETSSBSY = super::Opcode::SETSSBSY as u16, + SETZ = super::Opcode::SETZ as u16, + SFENCE = super::Opcode::SFENCE as u16, + SGDT = super::Opcode::SGDT as u16, + SHA1MSG1 = super::Opcode::SHA1MSG1 as u16, + SHA1MSG2 = super::Opcode::SHA1MSG2 as u16, + SHA1NEXTE = super::Opcode::SHA1NEXTE as u16, + SHA1RNDS4 = super::Opcode::SHA1RNDS4 as u16, + SHA256MSG1 = super::Opcode::SHA256MSG1 as u16, + SHA256MSG2 = super::Opcode::SHA256MSG2 as u16, + SHA256RNDS2 = super::Opcode::SHA256RNDS2 as u16, + SHL = super::Opcode::SHL as u16, + SHLD = super::Opcode::SHLD as u16, + SHLX = super::Opcode::SHLX as u16, + SHR = super::Opcode::SHR as u16, + SHRD = super::Opcode::SHRD as u16, + SHRX = super::Opcode::SHRX as u16, + SHUFPD = super::Opcode::SHUFPD as u16, + SHUFPS = super::Opcode::SHUFPS as u16, + SIDT = super::Opcode::SIDT as u16, + SKINIT = super::Opcode::SKINIT as u16, + SLDT = super::Opcode::SLDT as u16, + SLHD = super::Opcode::SLHD as u16, + SMSW = super::Opcode::SMSW as u16, + SQRTPD = super::Opcode::SQRTPD as u16, + SQRTPS = super::Opcode::SQRTPS as u16, + SQRTSD = super::Opcode::SQRTSD as u16, + SQRTSS = super::Opcode::SQRTSS as u16, + STAC = super::Opcode::STAC as u16, + STC = super::Opcode::STC as u16, + STD = super::Opcode::STD as u16, + STGI = super::Opcode::STGI as u16, + STI = super::Opcode::STI as u16, + STMXCSR = super::Opcode::STMXCSR as u16, + STOS = super::Opcode::STOS as u16, + STR = super::Opcode::STR as u16, + STUI = super::Opcode::STUI as u16, + SUB = super::Opcode::SUB as u16, + SUBPD = super::Opcode::SUBPD as u16, + SUBPS = super::Opcode::SUBPS as u16, + SUBSD = super::Opcode::SUBSD as u16, + SUBSS = super::Opcode::SUBSS as u16, + SWAPGS = super::Opcode::SWAPGS as u16, + SYSCALL = super::Opcode::SYSCALL as u16, + SYSENTER = super::Opcode::SYSENTER as u16, + SYSEXIT = super::Opcode::SYSEXIT as u16, + SYSRET = super::Opcode::SYSRET as u16, + TDCALL = super::Opcode::TDCALL as u16, + TEST = super::Opcode::TEST as u16, + TESTUI = super::Opcode::TESTUI as u16, + TLBSYNC = super::Opcode::TLBSYNC as u16, + TPAUSE = super::Opcode::TPAUSE as u16, + TZCNT = super::Opcode::TZCNT as u16, + UCOMISD = super::Opcode::UCOMISD as u16, + UCOMISS = super::Opcode::UCOMISS as u16, + UD0 = super::Opcode::UD0 as u16, + UD1 = super::Opcode::UD1 as u16, + UD2 = super::Opcode::UD2 as u16, + UIRET = super::Opcode::UIRET as u16, + UMONITOR = super::Opcode::UMONITOR as u16, + UMWAIT = super::Opcode::UMWAIT as u16, + UNPCKHPD = super::Opcode::UNPCKHPD as u16, + UNPCKHPS = super::Opcode::UNPCKHPS as u16, + UNPCKLPD = super::Opcode::UNPCKLPD as u16, + UNPCKLPS = super::Opcode::UNPCKLPS as u16, + V4FMADDPS = super::Opcode::V4FMADDPS as u16, + V4FMADDSS = super::Opcode::V4FMADDSS as u16, + V4FNMADDPS = super::Opcode::V4FNMADDPS as u16, + V4FNMADDSS = super::Opcode::V4FNMADDSS as u16, + VADDPD = super::Opcode::VADDPD as u16, + VADDPS = super::Opcode::VADDPS as u16, + VADDSD = super::Opcode::VADDSD as u16, + VADDSS = super::Opcode::VADDSS as u16, + VADDSUBPD = super::Opcode::VADDSUBPD as u16, + VADDSUBPS = super::Opcode::VADDSUBPS as u16, + VAESDEC = super::Opcode::VAESDEC as u16, + VAESDECLAST = super::Opcode::VAESDECLAST as u16, + VAESENC = super::Opcode::VAESENC as u16, + VAESENCLAST = super::Opcode::VAESENCLAST as u16, + VAESIMC = super::Opcode::VAESIMC as u16, + VAESKEYGENASSIST = super::Opcode::VAESKEYGENASSIST as u16, + VALIGND = super::Opcode::VALIGND as u16, + VALIGNQ = super::Opcode::VALIGNQ as u16, + VANDNPD = super::Opcode::VANDNPD as u16, + VANDNPS = super::Opcode::VANDNPS as u16, + VANDPD = super::Opcode::VANDPD as u16, + VANDPS = super::Opcode::VANDPS as u16, + VBLENDMPD = super::Opcode::VBLENDMPD as u16, + VBLENDMPS = super::Opcode::VBLENDMPS as u16, + VBLENDPD = super::Opcode::VBLENDPD as u16, + VBLENDPS = super::Opcode::VBLENDPS as u16, + VBLENDVPD = super::Opcode::VBLENDVPD as u16, + VBLENDVPS = super::Opcode::VBLENDVPS as u16, + VBROADCASTF128 = super::Opcode::VBROADCASTF128 as u16, + VBROADCASTF32X2 = super::Opcode::VBROADCASTF32X2 as u16, + VBROADCASTF32X4 = super::Opcode::VBROADCASTF32X4 as u16, + VBROADCASTF32X8 = super::Opcode::VBROADCASTF32X8 as u16, + VBROADCASTF64X2 = super::Opcode::VBROADCASTF64X2 as u16, + VBROADCASTF64X4 = super::Opcode::VBROADCASTF64X4 as u16, + VBROADCASTI128 = super::Opcode::VBROADCASTI128 as u16, + VBROADCASTI32X2 = super::Opcode::VBROADCASTI32X2 as u16, + VBROADCASTI32X4 = super::Opcode::VBROADCASTI32X4 as u16, + VBROADCASTI32X8 = super::Opcode::VBROADCASTI32X8 as u16, + VBROADCASTI64X2 = super::Opcode::VBROADCASTI64X2 as u16, + VBROADCASTI64X4 = super::Opcode::VBROADCASTI64X4 as u16, + VBROADCASTSD = super::Opcode::VBROADCASTSD as u16, + VBROADCASTSS = super::Opcode::VBROADCASTSS as u16, + VCMPPD = super::Opcode::VCMPPD as u16, + VCMPPS = super::Opcode::VCMPPS as u16, + VCMPSD = super::Opcode::VCMPSD as u16, + VCMPSS = super::Opcode::VCMPSS as u16, + VCOMISD = super::Opcode::VCOMISD as u16, + VCOMISS = super::Opcode::VCOMISS as u16, + VCOMPRESSD = super::Opcode::VCOMPRESSD as u16, + VCOMPRESSPD = super::Opcode::VCOMPRESSPD as u16, + VCOMPRESSPS = super::Opcode::VCOMPRESSPS as u16, + VCOMPRESSQ = super::Opcode::VCOMPRESSQ as u16, + VCVTDQ2PD = super::Opcode::VCVTDQ2PD as u16, + VCVTDQ2PS = super::Opcode::VCVTDQ2PS as u16, + VCVTNE2PS2BF16 = super::Opcode::VCVTNE2PS2BF16 as u16, + VCVTNEPS2BF16 = super::Opcode::VCVTNEPS2BF16 as u16, + VCVTPD2DQ = super::Opcode::VCVTPD2DQ as u16, + VCVTPD2PS = super::Opcode::VCVTPD2PS as u16, + VCVTPD2QQ = super::Opcode::VCVTPD2QQ as u16, + VCVTPD2UDQ = super::Opcode::VCVTPD2UDQ as u16, + VCVTPD2UQQ = super::Opcode::VCVTPD2UQQ as u16, + VCVTPH2PS = super::Opcode::VCVTPH2PS as u16, + VCVTPS2DQ = super::Opcode::VCVTPS2DQ as u16, + VCVTPS2PD = super::Opcode::VCVTPS2PD as u16, + VCVTPS2PH = super::Opcode::VCVTPS2PH as u16, + VCVTPS2QQ = super::Opcode::VCVTPS2QQ as u16, + VCVTPS2UDQ = super::Opcode::VCVTPS2UDQ as u16, + VCVTPS2UQQ = super::Opcode::VCVTPS2UQQ as u16, + VCVTQQ2PD = super::Opcode::VCVTQQ2PD as u16, + VCVTQQ2PS = super::Opcode::VCVTQQ2PS as u16, + VCVTSD2SI = super::Opcode::VCVTSD2SI as u16, + VCVTSD2SS = super::Opcode::VCVTSD2SS as u16, + VCVTSD2USI = super::Opcode::VCVTSD2USI as u16, + VCVTSI2SD = super::Opcode::VCVTSI2SD as u16, + VCVTSI2SS = super::Opcode::VCVTSI2SS as u16, + VCVTSS2SD = super::Opcode::VCVTSS2SD as u16, + VCVTSS2SI = super::Opcode::VCVTSS2SI as u16, + VCVTSS2USI = super::Opcode::VCVTSS2USI as u16, + VCVTTPD2DQ = super::Opcode::VCVTTPD2DQ as u16, + VCVTTPD2QQ = super::Opcode::VCVTTPD2QQ as u16, + VCVTTPD2UDQ = super::Opcode::VCVTTPD2UDQ as u16, + VCVTTPD2UQQ = super::Opcode::VCVTTPD2UQQ as u16, + VCVTTPS2DQ = super::Opcode::VCVTTPS2DQ as u16, + VCVTTPS2QQ = super::Opcode::VCVTTPS2QQ as u16, + VCVTTPS2UDQ = super::Opcode::VCVTTPS2UDQ as u16, + VCVTTPS2UQQ = super::Opcode::VCVTTPS2UQQ as u16, + VCVTTSD2SI = super::Opcode::VCVTTSD2SI as u16, + VCVTTSD2USI = super::Opcode::VCVTTSD2USI as u16, + VCVTTSS2SI = super::Opcode::VCVTTSS2SI as u16, + VCVTTSS2USI = super::Opcode::VCVTTSS2USI as u16, + VCVTUDQ2PD = super::Opcode::VCVTUDQ2PD as u16, + VCVTUDQ2PS = super::Opcode::VCVTUDQ2PS as u16, + VCVTUQQ2PD = super::Opcode::VCVTUQQ2PD as u16, + VCVTUQQ2PS = super::Opcode::VCVTUQQ2PS as u16, + VCVTUSI2SD = super::Opcode::VCVTUSI2SD as u16, + VCVTUSI2SS = super::Opcode::VCVTUSI2SS as u16, + VCVTUSI2USD = super::Opcode::VCVTUSI2USD as u16, + VCVTUSI2USS = super::Opcode::VCVTUSI2USS as u16, + VDBPSADBW = super::Opcode::VDBPSADBW as u16, + VDIVPD = super::Opcode::VDIVPD as u16, + VDIVPS = super::Opcode::VDIVPS as u16, + VDIVSD = super::Opcode::VDIVSD as u16, + VDIVSS = super::Opcode::VDIVSS as u16, + VDPBF16PS = super::Opcode::VDPBF16PS as u16, + VDPPD = super::Opcode::VDPPD as u16, + VDPPS = super::Opcode::VDPPS as u16, + VERR = super::Opcode::VERR as u16, + VERW = super::Opcode::VERW as u16, + VEXP2PD = super::Opcode::VEXP2PD as u16, + VEXP2PS = super::Opcode::VEXP2PS as u16, + VEXP2SD = super::Opcode::VEXP2SD as u16, + VEXP2SS = super::Opcode::VEXP2SS as u16, + VEXPANDPD = super::Opcode::VEXPANDPD as u16, + VEXPANDPS = super::Opcode::VEXPANDPS as u16, + VEXTRACTF128 = super::Opcode::VEXTRACTF128 as u16, + VEXTRACTF32X4 = super::Opcode::VEXTRACTF32X4 as u16, + VEXTRACTF32X8 = super::Opcode::VEXTRACTF32X8 as u16, + VEXTRACTF64X2 = super::Opcode::VEXTRACTF64X2 as u16, + VEXTRACTF64X4 = super::Opcode::VEXTRACTF64X4 as u16, + VEXTRACTI128 = super::Opcode::VEXTRACTI128 as u16, + VEXTRACTI32X4 = super::Opcode::VEXTRACTI32X4 as u16, + VEXTRACTI32X8 = super::Opcode::VEXTRACTI32X8 as u16, + VEXTRACTI64X2 = super::Opcode::VEXTRACTI64X2 as u16, + VEXTRACTI64X4 = super::Opcode::VEXTRACTI64X4 as u16, + VEXTRACTPS = super::Opcode::VEXTRACTPS as u16, + VFIXUPIMMPD = super::Opcode::VFIXUPIMMPD as u16, + VFIXUPIMMPS = super::Opcode::VFIXUPIMMPS as u16, + VFIXUPIMMSD = super::Opcode::VFIXUPIMMSD as u16, + VFIXUPIMMSS = super::Opcode::VFIXUPIMMSS as u16, + VFMADD132PD = super::Opcode::VFMADD132PD as u16, + VFMADD132PS = super::Opcode::VFMADD132PS as u16, + VFMADD132SD = super::Opcode::VFMADD132SD as u16, + VFMADD132SS = super::Opcode::VFMADD132SS as u16, + VFMADD213PD = super::Opcode::VFMADD213PD as u16, + VFMADD213PS = super::Opcode::VFMADD213PS as u16, + VFMADD213SD = super::Opcode::VFMADD213SD as u16, + VFMADD213SS = super::Opcode::VFMADD213SS as u16, + VFMADD231PD = super::Opcode::VFMADD231PD as u16, + VFMADD231PS = super::Opcode::VFMADD231PS as u16, + VFMADD231SD = super::Opcode::VFMADD231SD as u16, + VFMADD231SS = super::Opcode::VFMADD231SS as u16, + VFMADDSUB132PD = super::Opcode::VFMADDSUB132PD as u16, + VFMADDSUB132PS = super::Opcode::VFMADDSUB132PS as u16, + VFMADDSUB213PD = super::Opcode::VFMADDSUB213PD as u16, + VFMADDSUB213PS = super::Opcode::VFMADDSUB213PS as u16, + VFMADDSUB231PD = super::Opcode::VFMADDSUB231PD as u16, + VFMADDSUB231PS = super::Opcode::VFMADDSUB231PS as u16, + VFMSUB132PD = super::Opcode::VFMSUB132PD as u16, + VFMSUB132PS = super::Opcode::VFMSUB132PS as u16, + VFMSUB132SD = super::Opcode::VFMSUB132SD as u16, + VFMSUB132SS = super::Opcode::VFMSUB132SS as u16, + VFMSUB213PD = super::Opcode::VFMSUB213PD as u16, + VFMSUB213PS = super::Opcode::VFMSUB213PS as u16, + VFMSUB213SD = super::Opcode::VFMSUB213SD as u16, + VFMSUB213SS = super::Opcode::VFMSUB213SS as u16, + VFMSUB231PD = super::Opcode::VFMSUB231PD as u16, + VFMSUB231PS = super::Opcode::VFMSUB231PS as u16, + VFMSUB231SD = super::Opcode::VFMSUB231SD as u16, + VFMSUB231SS = super::Opcode::VFMSUB231SS as u16, + VFMSUBADD132PD = super::Opcode::VFMSUBADD132PD as u16, + VFMSUBADD132PS = super::Opcode::VFMSUBADD132PS as u16, + VFMSUBADD213PD = super::Opcode::VFMSUBADD213PD as u16, + VFMSUBADD213PS = super::Opcode::VFMSUBADD213PS as u16, + VFMSUBADD231PD = super::Opcode::VFMSUBADD231PD as u16, + VFMSUBADD231PS = super::Opcode::VFMSUBADD231PS as u16, + VFNMADD132PD = super::Opcode::VFNMADD132PD as u16, + VFNMADD132PS = super::Opcode::VFNMADD132PS as u16, + VFNMADD132SD = super::Opcode::VFNMADD132SD as u16, + VFNMADD132SS = super::Opcode::VFNMADD132SS as u16, + VFNMADD213PD = super::Opcode::VFNMADD213PD as u16, + VFNMADD213PS = super::Opcode::VFNMADD213PS as u16, + VFNMADD213SD = super::Opcode::VFNMADD213SD as u16, + VFNMADD213SS = super::Opcode::VFNMADD213SS as u16, + VFNMADD231PD = super::Opcode::VFNMADD231PD as u16, + VFNMADD231PS = super::Opcode::VFNMADD231PS as u16, + VFNMADD231SD = super::Opcode::VFNMADD231SD as u16, + VFNMADD231SS = super::Opcode::VFNMADD231SS as u16, + VFNMSUB132PD = super::Opcode::VFNMSUB132PD as u16, + VFNMSUB132PS = super::Opcode::VFNMSUB132PS as u16, + VFNMSUB132SD = super::Opcode::VFNMSUB132SD as u16, + VFNMSUB132SS = super::Opcode::VFNMSUB132SS as u16, + VFNMSUB213PD = super::Opcode::VFNMSUB213PD as u16, + VFNMSUB213PS = super::Opcode::VFNMSUB213PS as u16, + VFNMSUB213SD = super::Opcode::VFNMSUB213SD as u16, + VFNMSUB213SS = super::Opcode::VFNMSUB213SS as u16, + VFNMSUB231PD = super::Opcode::VFNMSUB231PD as u16, + VFNMSUB231PS = super::Opcode::VFNMSUB231PS as u16, + VFNMSUB231SD = super::Opcode::VFNMSUB231SD as u16, + VFNMSUB231SS = super::Opcode::VFNMSUB231SS as u16, + VFPCLASSPD = super::Opcode::VFPCLASSPD as u16, + VFPCLASSPS = super::Opcode::VFPCLASSPS as u16, + VFPCLASSSD = super::Opcode::VFPCLASSSD as u16, + VFPCLASSSS = super::Opcode::VFPCLASSSS as u16, + VGATHERDPD = super::Opcode::VGATHERDPD as u16, + VGATHERDPS = super::Opcode::VGATHERDPS as u16, + VGATHERPF0DPD = super::Opcode::VGATHERPF0DPD as u16, + VGATHERPF0DPS = super::Opcode::VGATHERPF0DPS as u16, + VGATHERPF0QPD = super::Opcode::VGATHERPF0QPD as u16, + VGATHERPF0QPS = super::Opcode::VGATHERPF0QPS as u16, + VGATHERPF1DPD = super::Opcode::VGATHERPF1DPD as u16, + VGATHERPF1DPS = super::Opcode::VGATHERPF1DPS as u16, + VGATHERPF1QPD = super::Opcode::VGATHERPF1QPD as u16, + VGATHERPF1QPS = super::Opcode::VGATHERPF1QPS as u16, + VGATHERQPD = super::Opcode::VGATHERQPD as u16, + VGATHERQPS = super::Opcode::VGATHERQPS as u16, + VGETEXPPD = super::Opcode::VGETEXPPD as u16, + VGETEXPPS = super::Opcode::VGETEXPPS as u16, + VGETEXPSD = super::Opcode::VGETEXPSD as u16, + VGETEXPSS = super::Opcode::VGETEXPSS as u16, + VGETMANTPD = super::Opcode::VGETMANTPD as u16, + VGETMANTPS = super::Opcode::VGETMANTPS as u16, + VGETMANTSD = super::Opcode::VGETMANTSD as u16, + VGETMANTSS = super::Opcode::VGETMANTSS as u16, + VGF2P8AFFINEINVQB = super::Opcode::VGF2P8AFFINEINVQB as u16, + VGF2P8AFFINEQB = super::Opcode::VGF2P8AFFINEQB as u16, + VGF2P8MULB = super::Opcode::VGF2P8MULB as u16, + VHADDPD = super::Opcode::VHADDPD as u16, + VHADDPS = super::Opcode::VHADDPS as u16, + VHSUBPD = super::Opcode::VHSUBPD as u16, + VHSUBPS = super::Opcode::VHSUBPS as u16, + VINSERTF128 = super::Opcode::VINSERTF128 as u16, + VINSERTF32X4 = super::Opcode::VINSERTF32X4 as u16, + VINSERTF32X8 = super::Opcode::VINSERTF32X8 as u16, + VINSERTF64X2 = super::Opcode::VINSERTF64X2 as u16, + VINSERTF64X4 = super::Opcode::VINSERTF64X4 as u16, + VINSERTI128 = super::Opcode::VINSERTI128 as u16, + VINSERTI32X4 = super::Opcode::VINSERTI32X4 as u16, + VINSERTI32X8 = super::Opcode::VINSERTI32X8 as u16, + VINSERTI64X2 = super::Opcode::VINSERTI64X2 as u16, + VINSERTI64X4 = super::Opcode::VINSERTI64X4 as u16, + VINSERTPS = super::Opcode::VINSERTPS as u16, + VLDDQU = super::Opcode::VLDDQU as u16, + VLDMXCSR = super::Opcode::VLDMXCSR as u16, + VMASKMOVDQU = super::Opcode::VMASKMOVDQU as u16, + VMASKMOVPD = super::Opcode::VMASKMOVPD as u16, + VMASKMOVPS = super::Opcode::VMASKMOVPS as u16, + VMAXPD = super::Opcode::VMAXPD as u16, + VMAXPS = super::Opcode::VMAXPS as u16, + VMAXSD = super::Opcode::VMAXSD as u16, + VMAXSS = super::Opcode::VMAXSS as u16, + VMCALL = super::Opcode::VMCALL as u16, + VMCLEAR = super::Opcode::VMCLEAR as u16, + VMFUNC = super::Opcode::VMFUNC as u16, + VMINPD = super::Opcode::VMINPD as u16, + VMINPS = super::Opcode::VMINPS as u16, + VMINSD = super::Opcode::VMINSD as u16, + VMINSS = super::Opcode::VMINSS as u16, + VMLAUNCH = super::Opcode::VMLAUNCH as u16, + VMLOAD = super::Opcode::VMLOAD as u16, + VMMCALL = super::Opcode::VMMCALL as u16, + VMOVAPD = super::Opcode::VMOVAPD as u16, + VMOVAPS = super::Opcode::VMOVAPS as u16, + VMOVD = super::Opcode::VMOVD as u16, + VMOVDDUP = super::Opcode::VMOVDDUP as u16, + VMOVDQA = super::Opcode::VMOVDQA as u16, + VMOVDQA32 = super::Opcode::VMOVDQA32 as u16, + VMOVDQA64 = super::Opcode::VMOVDQA64 as u16, + VMOVDQU = super::Opcode::VMOVDQU as u16, + VMOVDQU16 = super::Opcode::VMOVDQU16 as u16, + VMOVDQU32 = super::Opcode::VMOVDQU32 as u16, + VMOVDQU64 = super::Opcode::VMOVDQU64 as u16, + VMOVDQU8 = super::Opcode::VMOVDQU8 as u16, + VMOVHLPS = super::Opcode::VMOVHLPS as u16, + VMOVHPD = super::Opcode::VMOVHPD as u16, + VMOVHPS = super::Opcode::VMOVHPS as u16, + VMOVLHPS = super::Opcode::VMOVLHPS as u16, + VMOVLPD = super::Opcode::VMOVLPD as u16, + VMOVLPS = super::Opcode::VMOVLPS as u16, + VMOVMSKPD = super::Opcode::VMOVMSKPD as u16, + VMOVMSKPS = super::Opcode::VMOVMSKPS as u16, + VMOVNTDQ = super::Opcode::VMOVNTDQ as u16, + VMOVNTDQA = super::Opcode::VMOVNTDQA as u16, + VMOVNTPD = super::Opcode::VMOVNTPD as u16, + VMOVNTPS = super::Opcode::VMOVNTPS as u16, + VMOVQ = super::Opcode::VMOVQ as u16, + VMOVSD = super::Opcode::VMOVSD as u16, + VMOVSHDUP = super::Opcode::VMOVSHDUP as u16, + VMOVSLDUP = super::Opcode::VMOVSLDUP as u16, + VMOVSS = super::Opcode::VMOVSS as u16, + VMOVUPD = super::Opcode::VMOVUPD as u16, + VMOVUPS = super::Opcode::VMOVUPS as u16, + VMPSADBW = super::Opcode::VMPSADBW as u16, + VMPTRLD = super::Opcode::VMPTRLD as u16, + VMPTRST = super::Opcode::VMPTRST as u16, + VMREAD = super::Opcode::VMREAD as u16, + VMRESUME = super::Opcode::VMRESUME as u16, + VMRUN = super::Opcode::VMRUN as u16, + VMSAVE = super::Opcode::VMSAVE as u16, + VMULPD = super::Opcode::VMULPD as u16, + VMULPS = super::Opcode::VMULPS as u16, + VMULSD = super::Opcode::VMULSD as u16, + VMULSS = super::Opcode::VMULSS as u16, + VMWRITE = super::Opcode::VMWRITE as u16, + VMXOFF = super::Opcode::VMXOFF as u16, + VMXON = super::Opcode::VMXON as u16, + VORPD = super::Opcode::VORPD as u16, + VORPS = super::Opcode::VORPS as u16, + VP2INTERSECTD = super::Opcode::VP2INTERSECTD as u16, + VP2INTERSECTQ = super::Opcode::VP2INTERSECTQ as u16, + VP4DPWSSD = super::Opcode::VP4DPWSSD as u16, + VP4DPWSSDS = super::Opcode::VP4DPWSSDS as u16, + VPABSB = super::Opcode::VPABSB as u16, + VPABSD = super::Opcode::VPABSD as u16, + VPABSQ = super::Opcode::VPABSQ as u16, + VPABSW = super::Opcode::VPABSW as u16, + VPACKSSDW = super::Opcode::VPACKSSDW as u16, + VPACKSSWB = super::Opcode::VPACKSSWB as u16, + VPACKUSDW = super::Opcode::VPACKUSDW as u16, + VPACKUSWB = super::Opcode::VPACKUSWB as u16, + VPADDB = super::Opcode::VPADDB as u16, + VPADDD = super::Opcode::VPADDD as u16, + VPADDQ = super::Opcode::VPADDQ as u16, + VPADDSB = super::Opcode::VPADDSB as u16, + VPADDSW = super::Opcode::VPADDSW as u16, + VPADDUSB = super::Opcode::VPADDUSB as u16, + VPADDUSW = super::Opcode::VPADDUSW as u16, + VPADDW = super::Opcode::VPADDW as u16, + VPALIGNR = super::Opcode::VPALIGNR as u16, + VPAND = super::Opcode::VPAND as u16, + VPANDD = super::Opcode::VPANDD as u16, + VPANDN = super::Opcode::VPANDN as u16, + VPANDND = super::Opcode::VPANDND as u16, + VPANDNQ = super::Opcode::VPANDNQ as u16, + VPANDQ = super::Opcode::VPANDQ as u16, + VPAVGB = super::Opcode::VPAVGB as u16, + VPAVGW = super::Opcode::VPAVGW as u16, + VPBLENDD = super::Opcode::VPBLENDD as u16, + VPBLENDMB = super::Opcode::VPBLENDMB as u16, + VPBLENDMD = super::Opcode::VPBLENDMD as u16, + VPBLENDMQ = super::Opcode::VPBLENDMQ as u16, + VPBLENDMW = super::Opcode::VPBLENDMW as u16, + VPBLENDVB = super::Opcode::VPBLENDVB as u16, + VPBLENDW = super::Opcode::VPBLENDW as u16, + VPBROADCASTB = super::Opcode::VPBROADCASTB as u16, + VPBROADCASTD = super::Opcode::VPBROADCASTD as u16, + VPBROADCASTM = super::Opcode::VPBROADCASTM as u16, + VPBROADCASTMB2Q = super::Opcode::VPBROADCASTMB2Q as u16, + VPBROADCASTMW2D = super::Opcode::VPBROADCASTMW2D as u16, + VPBROADCASTQ = super::Opcode::VPBROADCASTQ as u16, + VPBROADCASTW = super::Opcode::VPBROADCASTW as u16, + VPCLMULQDQ = super::Opcode::VPCLMULQDQ as u16, + VPCMPB = super::Opcode::VPCMPB as u16, + VPCMPD = super::Opcode::VPCMPD as u16, + VPCMPEQB = super::Opcode::VPCMPEQB as u16, + VPCMPEQD = super::Opcode::VPCMPEQD as u16, + VPCMPEQQ = super::Opcode::VPCMPEQQ as u16, + VPCMPEQW = super::Opcode::VPCMPEQW as u16, + VPCMPESTRI = super::Opcode::VPCMPESTRI as u16, + VPCMPESTRM = super::Opcode::VPCMPESTRM as u16, + VPCMPGTB = super::Opcode::VPCMPGTB as u16, + VPCMPGTD = super::Opcode::VPCMPGTD as u16, + VPCMPGTQ = super::Opcode::VPCMPGTQ as u16, + VPCMPGTW = super::Opcode::VPCMPGTW as u16, + VPCMPISTRI = super::Opcode::VPCMPISTRI as u16, + VPCMPISTRM = super::Opcode::VPCMPISTRM as u16, + VPCMPQ = super::Opcode::VPCMPQ as u16, + VPCMPUB = super::Opcode::VPCMPUB as u16, + VPCMPUD = super::Opcode::VPCMPUD as u16, + VPCMPUQ = super::Opcode::VPCMPUQ as u16, + VPCMPUW = super::Opcode::VPCMPUW as u16, + VPCMPW = super::Opcode::VPCMPW as u16, + VPCOMPRESSB = super::Opcode::VPCOMPRESSB as u16, + VPCOMPRESSD = super::Opcode::VPCOMPRESSD as u16, + VPCOMPRESSQ = super::Opcode::VPCOMPRESSQ as u16, + VPCOMPRESSW = super::Opcode::VPCOMPRESSW as u16, + VPCONFLICTD = super::Opcode::VPCONFLICTD as u16, + VPCONFLICTQ = super::Opcode::VPCONFLICTQ as u16, + VPDPBUSD = super::Opcode::VPDPBUSD as u16, + VPDPBUSDS = super::Opcode::VPDPBUSDS as u16, + VPDPWSSD = super::Opcode::VPDPWSSD as u16, + VPDPWSSDS = super::Opcode::VPDPWSSDS as u16, + VPERM2F128 = super::Opcode::VPERM2F128 as u16, + VPERM2I128 = super::Opcode::VPERM2I128 as u16, + VPERMB = super::Opcode::VPERMB as u16, + VPERMD = super::Opcode::VPERMD as u16, + VPERMI2B = super::Opcode::VPERMI2B as u16, + VPERMI2D = super::Opcode::VPERMI2D as u16, + VPERMI2PD = super::Opcode::VPERMI2PD as u16, + VPERMI2PS = super::Opcode::VPERMI2PS as u16, + VPERMI2Q = super::Opcode::VPERMI2Q as u16, + VPERMI2W = super::Opcode::VPERMI2W as u16, + VPERMILPD = super::Opcode::VPERMILPD as u16, + VPERMILPS = super::Opcode::VPERMILPS as u16, + VPERMPD = super::Opcode::VPERMPD as u16, + VPERMPS = super::Opcode::VPERMPS as u16, + VPERMQ = super::Opcode::VPERMQ as u16, + VPERMT2B = super::Opcode::VPERMT2B as u16, + VPERMT2D = super::Opcode::VPERMT2D as u16, + VPERMT2PD = super::Opcode::VPERMT2PD as u16, + VPERMT2PS = super::Opcode::VPERMT2PS as u16, + VPERMT2Q = super::Opcode::VPERMT2Q as u16, + VPERMT2W = super::Opcode::VPERMT2W as u16, + VPERMW = super::Opcode::VPERMW as u16, + VPEXPANDB = super::Opcode::VPEXPANDB as u16, + VPEXPANDD = super::Opcode::VPEXPANDD as u16, + VPEXPANDQ = super::Opcode::VPEXPANDQ as u16, + VPEXPANDW = super::Opcode::VPEXPANDW as u16, + VPEXTRB = super::Opcode::VPEXTRB as u16, + VPEXTRD = super::Opcode::VPEXTRD as u16, + VPEXTRQ = super::Opcode::VPEXTRQ as u16, + VPEXTRW = super::Opcode::VPEXTRW as u16, + VPGATHERDD = super::Opcode::VPGATHERDD as u16, + VPGATHERDQ = super::Opcode::VPGATHERDQ as u16, + VPGATHERQD = super::Opcode::VPGATHERQD as u16, + VPGATHERQQ = super::Opcode::VPGATHERQQ as u16, + VPHADDD = super::Opcode::VPHADDD as u16, + VPHADDSW = super::Opcode::VPHADDSW as u16, + VPHADDW = super::Opcode::VPHADDW as u16, + VPHMINPOSUW = super::Opcode::VPHMINPOSUW as u16, + VPHSUBD = super::Opcode::VPHSUBD as u16, + VPHSUBSW = super::Opcode::VPHSUBSW as u16, + VPHSUBW = super::Opcode::VPHSUBW as u16, + VPINSRB = super::Opcode::VPINSRB as u16, + VPINSRD = super::Opcode::VPINSRD as u16, + VPINSRQ = super::Opcode::VPINSRQ as u16, + VPINSRW = super::Opcode::VPINSRW as u16, + VPLZCNTD = super::Opcode::VPLZCNTD as u16, + VPLZCNTQ = super::Opcode::VPLZCNTQ as u16, + VPMADD52HUQ = super::Opcode::VPMADD52HUQ as u16, + VPMADD52LUQ = super::Opcode::VPMADD52LUQ as u16, + VPMADDUBSW = super::Opcode::VPMADDUBSW as u16, + VPMADDWD = super::Opcode::VPMADDWD as u16, + VPMASKMOVD = super::Opcode::VPMASKMOVD as u16, + VPMASKMOVQ = super::Opcode::VPMASKMOVQ as u16, + VPMAXSB = super::Opcode::VPMAXSB as u16, + VPMAXSD = super::Opcode::VPMAXSD as u16, + VPMAXSQ = super::Opcode::VPMAXSQ as u16, + VPMAXSW = super::Opcode::VPMAXSW as u16, + VPMAXUB = super::Opcode::VPMAXUB as u16, + VPMAXUD = super::Opcode::VPMAXUD as u16, + VPMAXUQ = super::Opcode::VPMAXUQ as u16, + VPMAXUW = super::Opcode::VPMAXUW as u16, + VPMINSB = super::Opcode::VPMINSB as u16, + VPMINSD = super::Opcode::VPMINSD as u16, + VPMINSQ = super::Opcode::VPMINSQ as u16, + VPMINSW = super::Opcode::VPMINSW as u16, + VPMINUB = super::Opcode::VPMINUB as u16, + VPMINUD = super::Opcode::VPMINUD as u16, + VPMINUQ = super::Opcode::VPMINUQ as u16, + VPMINUW = super::Opcode::VPMINUW as u16, + VPMOVB2D = super::Opcode::VPMOVB2D as u16, + VPMOVB2M = super::Opcode::VPMOVB2M as u16, + VPMOVD2M = super::Opcode::VPMOVD2M as u16, + VPMOVDB = super::Opcode::VPMOVDB as u16, + VPMOVDW = super::Opcode::VPMOVDW as u16, + VPMOVM2B = super::Opcode::VPMOVM2B as u16, + VPMOVM2D = super::Opcode::VPMOVM2D as u16, + VPMOVM2Q = super::Opcode::VPMOVM2Q as u16, + VPMOVM2W = super::Opcode::VPMOVM2W as u16, + VPMOVMSKB = super::Opcode::VPMOVMSKB as u16, + VPMOVQ2M = super::Opcode::VPMOVQ2M as u16, + VPMOVQB = super::Opcode::VPMOVQB as u16, + VPMOVQD = super::Opcode::VPMOVQD as u16, + VPMOVQW = super::Opcode::VPMOVQW as u16, + VPMOVSDB = super::Opcode::VPMOVSDB as u16, + VPMOVSDW = super::Opcode::VPMOVSDW as u16, + VPMOVSQB = super::Opcode::VPMOVSQB as u16, + VPMOVSQD = super::Opcode::VPMOVSQD as u16, + VPMOVSQW = super::Opcode::VPMOVSQW as u16, + VPMOVSWB = super::Opcode::VPMOVSWB as u16, + VPMOVSXBD = super::Opcode::VPMOVSXBD as u16, + VPMOVSXBQ = super::Opcode::VPMOVSXBQ as u16, + VPMOVSXBW = super::Opcode::VPMOVSXBW as u16, + VPMOVSXDQ = super::Opcode::VPMOVSXDQ as u16, + VPMOVSXWD = super::Opcode::VPMOVSXWD as u16, + VPMOVSXWQ = super::Opcode::VPMOVSXWQ as u16, + VPMOVUSDB = super::Opcode::VPMOVUSDB as u16, + VPMOVUSDW = super::Opcode::VPMOVUSDW as u16, + VPMOVUSQB = super::Opcode::VPMOVUSQB as u16, + VPMOVUSQD = super::Opcode::VPMOVUSQD as u16, + VPMOVUSQW = super::Opcode::VPMOVUSQW as u16, + VPMOVUSWB = super::Opcode::VPMOVUSWB as u16, + VPMOVW2M = super::Opcode::VPMOVW2M as u16, + VPMOVWB = super::Opcode::VPMOVWB as u16, + VPMOVZXBD = super::Opcode::VPMOVZXBD as u16, + VPMOVZXBQ = super::Opcode::VPMOVZXBQ as u16, + VPMOVZXBW = super::Opcode::VPMOVZXBW as u16, + VPMOVZXDQ = super::Opcode::VPMOVZXDQ as u16, + VPMOVZXWD = super::Opcode::VPMOVZXWD as u16, + VPMOVZXWQ = super::Opcode::VPMOVZXWQ as u16, + VPMULDQ = super::Opcode::VPMULDQ as u16, + VPMULHRSW = super::Opcode::VPMULHRSW as u16, + VPMULHUW = super::Opcode::VPMULHUW as u16, + VPMULHW = super::Opcode::VPMULHW as u16, + VPMULLD = super::Opcode::VPMULLD as u16, + VPMULLQ = super::Opcode::VPMULLQ as u16, + VPMULLW = super::Opcode::VPMULLW as u16, + VPMULTISHIFTQB = super::Opcode::VPMULTISHIFTQB as u16, + VPMULUDQ = super::Opcode::VPMULUDQ as u16, + VPOPCNTB = super::Opcode::VPOPCNTB as u16, + VPOPCNTD = super::Opcode::VPOPCNTD as u16, + VPOPCNTQ = super::Opcode::VPOPCNTQ as u16, + VPOPCNTW = super::Opcode::VPOPCNTW as u16, + VPOR = super::Opcode::VPOR as u16, + VPORD = super::Opcode::VPORD as u16, + VPORQ = super::Opcode::VPORQ as u16, + VPROLD = super::Opcode::VPROLD as u16, + VPROLQ = super::Opcode::VPROLQ as u16, + VPROLVD = super::Opcode::VPROLVD as u16, + VPROLVQ = super::Opcode::VPROLVQ as u16, + VPRORD = super::Opcode::VPRORD as u16, + VPRORQ = super::Opcode::VPRORQ as u16, + VPRORRD = super::Opcode::VPRORRD as u16, + VPRORRQ = super::Opcode::VPRORRQ as u16, + VPRORVD = super::Opcode::VPRORVD as u16, + VPRORVQ = super::Opcode::VPRORVQ as u16, + VPSADBW = super::Opcode::VPSADBW as u16, + VPSCATTERDD = super::Opcode::VPSCATTERDD as u16, + VPSCATTERDQ = super::Opcode::VPSCATTERDQ as u16, + VPSCATTERQD = super::Opcode::VPSCATTERQD as u16, + VPSCATTERQQ = super::Opcode::VPSCATTERQQ as u16, + VPSHLDD = super::Opcode::VPSHLDD as u16, + VPSHLDQ = super::Opcode::VPSHLDQ as u16, + VPSHLDVD = super::Opcode::VPSHLDVD as u16, + VPSHLDVQ = super::Opcode::VPSHLDVQ as u16, + VPSHLDVW = super::Opcode::VPSHLDVW as u16, + VPSHLDW = super::Opcode::VPSHLDW as u16, + VPSHRDD = super::Opcode::VPSHRDD as u16, + VPSHRDQ = super::Opcode::VPSHRDQ as u16, + VPSHRDVD = super::Opcode::VPSHRDVD as u16, + VPSHRDVQ = super::Opcode::VPSHRDVQ as u16, + VPSHRDVW = super::Opcode::VPSHRDVW as u16, + VPSHRDW = super::Opcode::VPSHRDW as u16, + VPSHUFB = super::Opcode::VPSHUFB as u16, + VPSHUFBITQMB = super::Opcode::VPSHUFBITQMB as u16, + VPSHUFD = super::Opcode::VPSHUFD as u16, + VPSHUFHW = super::Opcode::VPSHUFHW as u16, + VPSHUFLW = super::Opcode::VPSHUFLW as u16, + VPSIGNB = super::Opcode::VPSIGNB as u16, + VPSIGND = super::Opcode::VPSIGND as u16, + VPSIGNW = super::Opcode::VPSIGNW as u16, + VPSLLD = super::Opcode::VPSLLD as u16, + VPSLLDQ = super::Opcode::VPSLLDQ as u16, + VPSLLQ = super::Opcode::VPSLLQ as u16, + VPSLLVD = super::Opcode::VPSLLVD as u16, + VPSLLVQ = super::Opcode::VPSLLVQ as u16, + VPSLLVW = super::Opcode::VPSLLVW as u16, + VPSLLW = super::Opcode::VPSLLW as u16, + VPSRAD = super::Opcode::VPSRAD as u16, + VPSRAQ = super::Opcode::VPSRAQ as u16, + VPSRAVD = super::Opcode::VPSRAVD as u16, + VPSRAVQ = super::Opcode::VPSRAVQ as u16, + VPSRAVW = super::Opcode::VPSRAVW as u16, + VPSRAW = super::Opcode::VPSRAW as u16, + VPSRLD = super::Opcode::VPSRLD as u16, + VPSRLDQ = super::Opcode::VPSRLDQ as u16, + VPSRLQ = super::Opcode::VPSRLQ as u16, + VPSRLVD = super::Opcode::VPSRLVD as u16, + VPSRLVQ = super::Opcode::VPSRLVQ as u16, + VPSRLVW = super::Opcode::VPSRLVW as u16, + VPSRLW = super::Opcode::VPSRLW as u16, + VPSUBB = super::Opcode::VPSUBB as u16, + VPSUBD = super::Opcode::VPSUBD as u16, + VPSUBQ = super::Opcode::VPSUBQ as u16, + VPSUBSB = super::Opcode::VPSUBSB as u16, + VPSUBSW = super::Opcode::VPSUBSW as u16, + VPSUBUSB = super::Opcode::VPSUBUSB as u16, + VPSUBUSW = super::Opcode::VPSUBUSW as u16, + VPSUBW = super::Opcode::VPSUBW as u16, + VPTERNLOGD = super::Opcode::VPTERNLOGD as u16, + VPTERNLOGQ = super::Opcode::VPTERNLOGQ as u16, + VPTEST = super::Opcode::VPTEST as u16, + VPTESTMB = super::Opcode::VPTESTMB as u16, + VPTESTMD = super::Opcode::VPTESTMD as u16, + VPTESTMQ = super::Opcode::VPTESTMQ as u16, + VPTESTMW = super::Opcode::VPTESTMW as u16, + VPTESTNMB = super::Opcode::VPTESTNMB as u16, + VPTESTNMD = super::Opcode::VPTESTNMD as u16, + VPTESTNMQ = super::Opcode::VPTESTNMQ as u16, + VPTESTNMW = super::Opcode::VPTESTNMW as u16, + VPUNPCKHBW = super::Opcode::VPUNPCKHBW as u16, + VPUNPCKHDQ = super::Opcode::VPUNPCKHDQ as u16, + VPUNPCKHQDQ = super::Opcode::VPUNPCKHQDQ as u16, + VPUNPCKHWD = super::Opcode::VPUNPCKHWD as u16, + VPUNPCKLBW = super::Opcode::VPUNPCKLBW as u16, + VPUNPCKLDQ = super::Opcode::VPUNPCKLDQ as u16, + VPUNPCKLQDQ = super::Opcode::VPUNPCKLQDQ as u16, + VPUNPCKLWD = super::Opcode::VPUNPCKLWD as u16, + VPXOR = super::Opcode::VPXOR as u16, + VPXORD = super::Opcode::VPXORD as u16, + VPXORQ = super::Opcode::VPXORQ as u16, + VRANGEPD = super::Opcode::VRANGEPD as u16, + VRANGEPS = super::Opcode::VRANGEPS as u16, + VRANGESD = super::Opcode::VRANGESD as u16, + VRANGESS = super::Opcode::VRANGESS as u16, + VRCP14PD = super::Opcode::VRCP14PD as u16, + VRCP14PS = super::Opcode::VRCP14PS as u16, + VRCP14SD = super::Opcode::VRCP14SD as u16, + VRCP14SS = super::Opcode::VRCP14SS as u16, + VRCP28PD = super::Opcode::VRCP28PD as u16, + VRCP28PS = super::Opcode::VRCP28PS as u16, + VRCP28SD = super::Opcode::VRCP28SD as u16, + VRCP28SS = super::Opcode::VRCP28SS as u16, + VRCPPS = super::Opcode::VRCPPS as u16, + VRCPSS = super::Opcode::VRCPSS as u16, + VREDUCEPD = super::Opcode::VREDUCEPD as u16, + VREDUCEPS = super::Opcode::VREDUCEPS as u16, + VREDUCESD = super::Opcode::VREDUCESD as u16, + VREDUCESS = super::Opcode::VREDUCESS as u16, + VRNDSCALEPD = super::Opcode::VRNDSCALEPD as u16, + VRNDSCALEPS = super::Opcode::VRNDSCALEPS as u16, + VRNDSCALESD = super::Opcode::VRNDSCALESD as u16, + VRNDSCALESS = super::Opcode::VRNDSCALESS as u16, + VROUNDPD = super::Opcode::VROUNDPD as u16, + VROUNDPS = super::Opcode::VROUNDPS as u16, + VROUNDSD = super::Opcode::VROUNDSD as u16, + VROUNDSS = super::Opcode::VROUNDSS as u16, + VRSQRT14PD = super::Opcode::VRSQRT14PD as u16, + VRSQRT14PS = super::Opcode::VRSQRT14PS as u16, + VRSQRT14SD = super::Opcode::VRSQRT14SD as u16, + VRSQRT14SS = super::Opcode::VRSQRT14SS as u16, + VRSQRT28PD = super::Opcode::VRSQRT28PD as u16, + VRSQRT28PS = super::Opcode::VRSQRT28PS as u16, + VRSQRT28SD = super::Opcode::VRSQRT28SD as u16, + VRSQRT28SS = super::Opcode::VRSQRT28SS as u16, + VRSQRTPS = super::Opcode::VRSQRTPS as u16, + VRSQRTSS = super::Opcode::VRSQRTSS as u16, + VSCALEDPD = super::Opcode::VSCALEDPD as u16, + VSCALEDPS = super::Opcode::VSCALEDPS as u16, + VSCALEDSD = super::Opcode::VSCALEDSD as u16, + VSCALEDSS = super::Opcode::VSCALEDSS as u16, + VSCALEFPD = super::Opcode::VSCALEFPD as u16, + VSCALEFPS = super::Opcode::VSCALEFPS as u16, + VSCALEFSD = super::Opcode::VSCALEFSD as u16, + VSCALEFSS = super::Opcode::VSCALEFSS as u16, + VSCATTERDD = super::Opcode::VSCATTERDD as u16, + VSCATTERDPD = super::Opcode::VSCATTERDPD as u16, + VSCATTERDPS = super::Opcode::VSCATTERDPS as u16, + VSCATTERDQ = super::Opcode::VSCATTERDQ as u16, + VSCATTERPF0DPD = super::Opcode::VSCATTERPF0DPD as u16, + VSCATTERPF0DPS = super::Opcode::VSCATTERPF0DPS as u16, + VSCATTERPF0QPD = super::Opcode::VSCATTERPF0QPD as u16, + VSCATTERPF0QPS = super::Opcode::VSCATTERPF0QPS as u16, + VSCATTERPF1DPD = super::Opcode::VSCATTERPF1DPD as u16, + VSCATTERPF1DPS = super::Opcode::VSCATTERPF1DPS as u16, + VSCATTERPF1QPD = super::Opcode::VSCATTERPF1QPD as u16, + VSCATTERPF1QPS = super::Opcode::VSCATTERPF1QPS as u16, + VSCATTERQD = super::Opcode::VSCATTERQD as u16, + VSCATTERQPD = super::Opcode::VSCATTERQPD as u16, + VSCATTERQPS = super::Opcode::VSCATTERQPS as u16, + VSCATTERQQ = super::Opcode::VSCATTERQQ as u16, + VSHUFF32X4 = super::Opcode::VSHUFF32X4 as u16, + VSHUFF64X2 = super::Opcode::VSHUFF64X2 as u16, + VSHUFI32X4 = super::Opcode::VSHUFI32X4 as u16, + VSHUFI64X2 = super::Opcode::VSHUFI64X2 as u16, + VSHUFPD = super::Opcode::VSHUFPD as u16, + VSHUFPS = super::Opcode::VSHUFPS as u16, + VSQRTPD = super::Opcode::VSQRTPD as u16, + VSQRTPS = super::Opcode::VSQRTPS as u16, + VSQRTSD = super::Opcode::VSQRTSD as u16, + VSQRTSS = super::Opcode::VSQRTSS as u16, + VSTMXCSR = super::Opcode::VSTMXCSR as u16, + VSUBPD = super::Opcode::VSUBPD as u16, + VSUBPS = super::Opcode::VSUBPS as u16, + VSUBSD = super::Opcode::VSUBSD as u16, + VSUBSS = super::Opcode::VSUBSS as u16, + VTESTPD = super::Opcode::VTESTPD as u16, + VTESTPS = super::Opcode::VTESTPS as u16, + VUCOMISD = super::Opcode::VUCOMISD as u16, + VUCOMISS = super::Opcode::VUCOMISS as u16, + VUNPCKHPD = super::Opcode::VUNPCKHPD as u16, + VUNPCKHPS = super::Opcode::VUNPCKHPS as u16, + VUNPCKLPD = super::Opcode::VUNPCKLPD as u16, + VUNPCKLPS = super::Opcode::VUNPCKLPS as u16, + VXORPD = super::Opcode::VXORPD as u16, + VXORPS = super::Opcode::VXORPS as u16, + VZEROALL = super::Opcode::VZEROALL as u16, + VZEROUPPER = super::Opcode::VZEROUPPER as u16, + WAIT = super::Opcode::WAIT as u16, + WBINVD = super::Opcode::WBINVD as u16, + WRFSBASE = super::Opcode::WRFSBASE as u16, + WRGSBASE = super::Opcode::WRGSBASE as u16, + WRMSR = super::Opcode::WRMSR as u16, + WRPKRU = super::Opcode::WRPKRU as u16, + WRSS = super::Opcode::WRSS as u16, + WRUSS = super::Opcode::WRUSS as u16, + XABORT = super::Opcode::XABORT as u16, + XADD = super::Opcode::XADD as u16, + XBEGIN = super::Opcode::XBEGIN as u16, + XCHG = super::Opcode::XCHG as u16, + XEND = super::Opcode::XEND as u16, + XGETBV = super::Opcode::XGETBV as u16, + XLAT = super::Opcode::XLAT as u16, + XOR = super::Opcode::XOR as u16, + XORPD = super::Opcode::XORPD as u16, + XORPS = super::Opcode::XORPS as u16, + XRESLDTRK = super::Opcode::XRESLDTRK as u16, + XRSTOR = super::Opcode::XRSTOR as u16, + XRSTORS = super::Opcode::XRSTORS as u16, + XRSTORS64 = super::Opcode::XRSTORS64 as u16, + XSAVE = super::Opcode::XSAVE as u16, + XSAVEC = super::Opcode::XSAVEC as u16, + XSAVEC64 = super::Opcode::XSAVEC64 as u16, + XSAVEOPT = super::Opcode::XSAVEOPT as u16, + XSAVES = super::Opcode::XSAVES as u16, + XSAVES64 = super::Opcode::XSAVES64 as u16, + XSETBV = super::Opcode::XSETBV as u16, + XSUSLDTRK = super::Opcode::XSUSLDTRK as u16, + XTEST = super::Opcode::XTEST as u16, + } +} + |