aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/generated/imp.rs7234
-rw-r--r--src/generated/mod.rs15
-rw-r--r--src/generated/opcode.rs7186
-rw-r--r--src/lib.rs1
-rw-r--r--src/long_mode/display.rs1468
-rw-r--r--src/long_mode/mod.rs2150
-rw-r--r--src/protected_mode/display.rs1478
-rw-r--r--src/protected_mode/mod.rs2165
-rw-r--r--src/real_mode/display.rs1478
-rw-r--r--src/real_mode/mod.rs2165
10 files changed, 14475 insertions, 10865 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,
+ }
+}
+
diff --git a/src/lib.rs b/src/lib.rs
index 86354ca..a7fb1c3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -138,6 +138,7 @@ pub use protected_mode::Arch as x86_32;
pub mod real_mode;
pub use real_mode::Arch as x86_16;
+mod generated;
mod safer_unchecked;
const MEM_SIZE_STRINGS: [&'static str; 64] = [
diff --git a/src/long_mode/display.rs b/src/long_mode/display.rs
index 9ba128d..d772b7b 100644
--- a/src/long_mode/display.rs
+++ b/src/long_mode/display.rs
@@ -350,1468 +350,10 @@ impl fmt::Display for Opcode {
}
}
-const MNEMONICS: &[&'static str] = &[
- "invalid",
- "add",
- "or",
- "adc",
- "sbb",
- "and",
- "xor",
- "sub",
- "cmp",
- "xadd",
- "bt",
- "bts",
- "btc",
- "btr",
- "bsf",
- "bsr",
- "tzcnt",
- "movss",
- "addss",
- "subss",
- "mulss",
- "divss",
- "minss",
- "maxss",
- "sqrtss",
- "movsd",
- "sqrtsd",
- "addsd",
- "subsd",
- "mulsd",
- "divsd",
- "minsd",
- "maxsd",
- "movsldup",
- "movshdup",
- "movddup",
- "haddps",
- "hsubps",
- "addsubpd",
- "addsubps",
- "cvtsi2ss",
- "cvtsi2sd",
- "cvttsd2si",
- "cvttps2dq",
- "cvtpd2dq",
- "cvtpd2ps",
- "cvtps2dq",
- "cvtsd2si",
- "cvtsd2ss",
- "cvttss2si",
- "cvtss2si",
- "cvtss2sd",
- "cvtdq2pd",
- "lddqu",
- "movzx",
- "movsx",
- "movsxd",
- "sar",
- "sal",
- "shr",
- "shrd",
- "shl",
- "rcr",
- "rcl",
- "ror",
- "rol",
- "inc",
- "dec",
- "hlt",
- "call",
- "callf",
- "jmp",
- "jmpf",
- "push",
- "pop",
- "lea",
- "nop",
- "prefetchnta",
- "prefetch0",
- "prefetch1",
- "prefetch2",
- "xchg",
- "popf",
- "int",
- "into",
- "iret",
- "iretd",
- "iretq",
- "retf",
- "enter",
- "leave",
- "mov",
- "ret",
- "pushf",
- "wait",
- "cbw",
- "cwde",
- "cdqe",
- "cwd",
- "cdq",
- "cqo",
- "lods",
- "stos",
- "lahf",
- "sahf",
- "cmps",
- "scas",
- "movs",
- "test",
- "ins",
- "in",
- "outs",
- "out",
- "imul",
- "jo",
- "jno",
- "jb",
- "jnb",
- "jz",
- "jnz",
- "ja",
- "jna",
- "js",
- "jns",
- "jp",
- "jnp",
- "jl",
- "jge",
- "jle",
- "jg",
- "cmova",
- "cmovb",
- "cmovg",
- "cmovge",
- "cmovl",
- "cmovle",
- "cmovna",
- "cmovnb",
- "cmovno",
- "cmovnp",
- "cmovns",
- "cmovnz",
- "cmovo",
- "cmovp",
- "cmovs",
- "cmovz",
- "div",
- "idiv",
- "mul",
- "neg",
- "not",
- "cmpxchg",
- "seto",
- "setno",
- "setb",
- "setae",
- "setz",
- "setnz",
- "setbe",
- "seta",
- "sets",
- "setns",
- "setp",
- "setnp",
- "setl",
- "setge",
- "setle",
- "setg",
- "cpuid",
- "ud0",
- "ud1",
- "ud2",
- "wbinvd",
- "invd",
- "sysret",
- "clts",
- "syscall",
- "lsl",
- "lar",
- "sgdt",
- "sidt",
- "lgdt",
- "lidt",
- "smsw",
- "lmsw",
- "swapgs",
- "rdtscp",
- "invlpg",
- "fxsave",
- "fxrstor",
- "ldmxcsr",
- "stmxcsr",
- "xsave",
- "xrstor",
- "xsaveopt",
- "lfence",
- "mfence",
- "sfence",
- "clflush",
- "clflushopt",
- "clwb",
- "wrmsr",
- "rdtsc",
- "rdmsr",
- "rdpmc",
- "sldt",
- "str",
- "lldt",
- "ltr",
- "verr",
- "verw",
- "cmc",
- "clc",
- "stc",
- "cli",
- "sti",
- "cld",
- "std",
- "jmpe",
- "popcnt",
- "movdqu",
- "movdqa",
- "movq",
- "cmpss",
- "cmpsd",
- "unpcklps",
- "unpcklpd",
- "unpckhps",
- "unpckhpd",
- "pshufhw",
- "pshuflw",
- "movups",
- "movq2dq",
- "movdq2q",
- "rsqrtss",
- "rcpss",
- "andn",
- "bextr",
- "blsi",
- "blsmsk",
- "blsr",
- "vmclear",
- "vmxon",
- "vmcall",
- "vmlaunch",
- "vmresume",
- "vmxoff",
- "pconfig",
- "monitor",
- "mwait",
- "monitorx",
- "mwaitx",
- "clac",
- "stac",
- "encls",
- "enclv",
- "xgetbv",
- "xsetbv",
- "vmfunc",
- "xabort",
- "xbegin",
- "xend",
- "xtest",
- "enclu",
- "rdpkru",
- "wrpkru",
- "rdpru",
- "clzero",
- "rdseed",
- "rdrand",
- "addps",
- "addpd",
- "andnps",
- "andnpd",
- "andps",
- "andpd",
- "bswap",
- "cmppd",
- "cmpps",
- "comisd",
- "comiss",
- "cvtdq2ps",
- "cvtpi2ps",
- "cvtpi2pd",
- "cvtps2pd",
- "cvtps2pi",
- "cvtpd2pi",
- "cvttps2pi",
- "cvttpd2pi",
- "cvttpd2dq",
- "divps",
- "divpd",
- "emms",
- "getsec",
- "lfs",
- "lgs",
- "lss",
- "maskmovq",
- "maskmovdqu",
- "maxps",
- "maxpd",
- "minps",
- "minpd",
- "movaps",
- "movapd",
- "movd",
- "movlps",
- "movlpd",
- "movhps",
- "movhpd",
- "movlhps",
- "movhlps",
- "movupd",
- "movmskps",
- "movmskpd",
- "movnti",
- "movntps",
- "movntpd",
- "extrq",
- "insertq",
- "movntss",
- "movntsd",
- "movntq",
- "movntdq",
- "mulps",
- "mulpd",
- "orps",
- "orpd",
- "packssdw",
- "packsswb",
- "packuswb",
- "paddb",
- "paddd",
- "paddq",
- "paddsb",
- "paddsw",
- "paddusb",
- "paddusw",
- "paddw",
- "pand",
- "pandn",
- "pavgb",
- "pavgw",
- "pcmpeqb",
- "pcmpeqd",
- "pcmpeqw",
- "pcmpgtb",
- "pcmpgtd",
- "pcmpgtw",
- "pinsrw",
- "pmaddwd",
- "pmaxsw",
- "pmaxub",
- "pminsw",
- "pminub",
- "pmovmskb",
- "pmulhuw",
- "pmulhw",
- "pmullw",
- "pmuludq",
- "por",
- "psadbw",
- "pshufw",
- "pshufd",
- "pslld",
- "pslldq",
- "psllq",
- "psllw",
- "psrad",
- "psraw",
- "psrld",
- "psrldq",
- "psrlq",
- "psrlw",
- "psubb",
- "psubd",
- "psubq",
- "psubsb",
- "psubsw",
- "psubusb",
- "psubusw",
- "psubw",
- "punpckhbw",
- "punpckhdq",
- "punpckhwd",
- "punpcklbw",
- "punpckldq",
- "punpcklwd",
- "punpcklqdq",
- "punpckhqdq",
- "pxor",
- "rcpps",
- "rsm",
- "rsqrtps",
- "shld",
- "shufpd",
- "shufps",
- "slhd",
- "sqrtps",
- "sqrtpd",
- "subps",
- "subpd",
- "sysenter",
- "sysexit",
- "ucomisd",
- "ucomiss",
- "vmread",
- "vmwrite",
- "xorps",
- "xorpd",
- "vmovddup",
- "vpshuflw",
- "vpshufhw",
- "vhaddps",
- "vhsubps",
- "vaddsubps",
- "vcvtpd2dq",
- "vlddqu",
- "vcomisd",
- "vcomiss",
- "vucomisd",
- "vucomiss",
- "vaddpd",
- "vaddps",
- "vaddsd",
- "vaddss",
- "vaddsubpd",
- "vaesdec",
- "vaesdeclast",
- "vaesenc",
- "vaesenclast",
- "vaesimc",
- "vaeskeygenassist",
- "vblendpd",
- "vblendps",
- "vblendvpd",
- "vblendvps",
- "vbroadcastf128",
- "vbroadcasti128",
- "vbroadcastsd",
- "vbroadcastss",
- "vcmpsd",
- "vcmpss",
- "vcmppd",
- "vcmpps",
- "vcvtdq2pd",
- "vcvtdq2ps",
- "vcvtpd2ps",
- "vcvtph2ps",
- "vcvtps2dq",
- "vcvtps2pd",
- "vcvtss2sd",
- "vcvtsi2ss",
- "vcvtsi2sd",
- "vcvtsd2si",
- "vcvtsd2ss",
- "vcvtps2ph",
- "vcvtss2si",
- "vcvttpd2dq",
- "vcvttps2dq",
- "vcvttss2si",
- "vcvttsd2si",
- "vdivpd",
- "vdivps",
- "vdivsd",
- "vdivss",
- "vdppd",
- "vdpps",
- "vextractf128",
- "vextracti128",
- "vextractps",
- "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",
- "vgatherdpd",
- "vgatherdps",
- "vgatherqpd",
- "vgatherqps",
- "vhaddpd",
- "vhsubpd",
- "vinsertf128",
- "vinserti128",
- "vinsertps",
- "vmaskmovdqu",
- "vmaskmovpd",
- "vmaskmovps",
- "vmaxpd",
- "vmaxps",
- "vmaxsd",
- "vmaxss",
- "vminpd",
- "vminps",
- "vminsd",
- "vminss",
- "vmovapd",
- "vmovaps",
- "vmovd",
- "vmovdqa",
- "vmovdqu",
- "vmovhlps",
- "vmovhpd",
- "vmovhps",
- "vmovlhps",
- "vmovlpd",
- "vmovlps",
- "vmovmskpd",
- "vmovmskps",
- "vmovntdq",
- "vmovntdqa",
- "vmovntpd",
- "vmovntps",
- "vmovq",
- "vmovss",
- "vmovsd",
- "vmovshdup",
- "vmovsldup",
- "vmovupd",
- "vmovups",
- "vmpsadbw",
- "vmulpd",
- "vmulps",
- "vmulsd",
- "vmulss",
- "vpabsb",
- "vpabsd",
- "vpabsw",
- "vpackssdw",
- "vpackusdw",
- "vpacksswb",
- "vpackuswb",
- "vpaddb",
- "vpaddd",
- "vpaddq",
- "vpaddsb",
- "vpaddsw",
- "vpaddusb",
- "vpaddusw",
- "vpaddw",
- "vpalignr",
- "vandpd",
- "vandps",
- "vorpd",
- "vorps",
- "vandnpd",
- "vandnps",
- "vpand",
- "vpandn",
- "vpavgb",
- "vpavgw",
- "vpblendd",
- "vpblendvb",
- "vpblendw",
- "vpbroadcastb",
- "vpbroadcastd",
- "vpbroadcastq",
- "vpbroadcastw",
- "vpclmulqdq",
- "vpcmpeqb",
- "vpcmpeqd",
- "vpcmpeqq",
- "vpcmpeqw",
- "vpcmpgtb",
- "vpcmpgtd",
- "vpcmpgtq",
- "vpcmpgtw",
- "vpcmpestri",
- "vpcmpestrm",
- "vpcmpistri",
- "vpcmpistrm",
- "vperm2f128",
- "vperm2i128",
- "vpermd",
- "vpermilpd",
- "vpermilps",
- "vpermpd",
- "vpermps",
- "vpermq",
- "vpextrb",
- "vpextrd",
- "vpextrq",
- "vpextrw",
- "vpgatherdd",
- "vpgatherdq",
- "vpgatherqd",
- "vpgatherqq",
- "vphaddd",
- "vphaddsw",
- "vphaddw",
- "vpmaddubsw",
- "vphminposuw",
- "vphsubd",
- "vphsubsw",
- "vphsubw",
- "vpinsrb",
- "vpinsrd",
- "vpinsrq",
- "vpinsrw",
- "vpmaddwd",
- "vpmaskmovd",
- "vpmaskmovq",
- "vpmaxsb",
- "vpmaxsd",
- "vpmaxsw",
- "vpmaxub",
- "vpmaxuw",
- "vpmaxud",
- "vpminsb",
- "vpminsw",
- "vpminsd",
- "vpminub",
- "vpminuw",
- "vpminud",
- "vpmovmskb",
- "vpmovsxbd",
- "vpmovsxbq",
- "vpmovsxbw",
- "vpmovsxdq",
- "vpmovsxwd",
- "vpmovsxwq",
- "vpmovzxbd",
- "vpmovzxbq",
- "vpmovzxbw",
- "vpmovzxdq",
- "vpmovzxwd",
- "vpmovzxwq",
- "vpmuldq",
- "vpmulhrsw",
- "vpmulhuw",
- "vpmulhw",
- "vpmullq",
- "vpmulld",
- "vpmullw",
- "vpmuludq",
- "vpor",
- "vpsadbw",
- "vpshufb",
- "vpshufd",
- "vpsignb",
- "vpsignd",
- "vpsignw",
- "vpslld",
- "vpslldq",
- "vpsllq",
- "vpsllvd",
- "vpsllvq",
- "vpsllw",
- "vpsrad",
- "vpsravd",
- "vpsraw",
- "vpsrld",
- "vpsrldq",
- "vpsrlq",
- "vpsrlvd",
- "vpsrlvq",
- "vpsrlw",
- "vpsubb",
- "vpsubd",
- "vpsubq",
- "vpsubsb",
- "vpsubsw",
- "vpsubusb",
- "vpsubusw",
- "vpsubw",
- "vptest",
- "vpunpckhbw",
- "vpunpckhdq",
- "vpunpckhqdq",
- "vpunpckhwd",
- "vpunpcklbw",
- "vpunpckldq",
- "vpunpcklqdq",
- "vpunpcklwd",
- "vpxor",
- "vrcpps",
- "vroundpd",
- "vroundps",
- "vroundsd",
- "vroundss",
- "vrsqrtps",
- "vrsqrtss",
- "vrcpss",
- "vshufpd",
- "vshufps",
- "vsqrtpd",
- "vsqrtps",
- "vsqrtss",
- "vsqrtsd",
- "vsubpd",
- "vsubps",
- "vsubsd",
- "vsubss",
- "vtestpd",
- "vtestps",
- "vunpckhpd",
- "vunpckhps",
- "vunpcklpd",
- "vunpcklps",
- "vxorpd",
- "vxorps",
- "vzeroupper",
- "vzeroall",
- "vldmxcsr",
- "vstmxcsr",
- "pclmulqdq",
- "aeskeygenassist",
- "aesimc",
- "aesenc",
- "aesenclast",
- "aesdec",
- "aesdeclast",
- "pcmpgtq",
- "pcmpistrm",
- "pcmpistri",
- "pcmpestri",
- "packusdw",
- "pcmpestrm",
- "pcmpeqq",
- "ptest",
- "phminposuw",
- "dpps",
- "dppd",
- "mpsadbw",
- "pmovzxdq",
- "pmovsxdq",
- "pmovzxbd",
- "pmovsxbd",
- "pmovzxwq",
- "pmovsxwq",
- "pmovzxbq",
- "pmovsxbq",
- "pmovsxwd",
- "pmovzxwd",
- "pextrq",
- "pextrd",
- "pextrw",
- "pextrb",
- "pmovsxbw",
- "pmovzxbw",
- "pinsrq",
- "pinsrd",
- "pinsrb",
- "extractps",
- "insertps",
- "roundss",
- "roundsd",
- "roundps",
- "roundpd",
- "pmaxsb",
- "pmaxsd",
- "pmaxuw",
- "pmaxud",
- "pminsd",
- "pminsb",
- "pminud",
- "pminuw",
- "blendw",
- "pblendvb",
- "pblendw",
- "blendvps",
- "blendvpd",
- "blendps",
- "blendpd",
- "pmuldq",
- "movntdqa",
- "pmulld",
- "palignr",
- "psignw",
- "psignd",
- "psignb",
- "pshufb",
- "pmulhrsw",
- "pmaddubsw",
- "pabsd",
- "pabsw",
- "pabsb",
- "phsubsw",
- "phsubw",
- "phsubd",
- "phaddd",
- "phaddsw",
- "phaddw",
- "hsubpd",
- "haddpd",
- "sha1rnds4",
- "sha1nexte",
- "sha1msg1",
- "sha1msg2",
- "sha256rnds2",
- "sha256msg1",
- "sha256msg2",
- "lzcnt",
- "clgi",
- "stgi",
- "skinit",
- "vmload",
- "vmmcall",
- "vmsave",
- "vmrun",
- "invlpga",
- "invlpgb",
- "tlbsync",
- "movbe",
- "adcx",
- "adox",
- "prefetchw",
- "rdpid",
- "cmpxchg8b",
- "cmpxchg16b",
- "vmptrld",
- "vmptrst",
- "bzhi",
- "mulx",
- "shlx",
- "shrx",
- "sarx",
- "pdep",
- "pext",
- "rorx",
- "xrstors",
- "xrstors64",
- "xsavec",
- "xsavec64",
- "xsaves",
- "xsaves64",
- "rdfsbase",
- "rdgsbase",
- "wrfsbase",
- "wrgsbase",
- "crc32",
- "salc",
- "xlat",
-
- "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",
- "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",
- "fxtract",
- "fyl2x",
- "fyl2xp1",
- "loopnz",
- "loopz",
- "loop",
- "jrcxz",
- "movdir64b",
- "movdiri",
- "aesdec128kl",
- "aesdec256kl",
- "aesdecwide128kl",
- "aesdecwide256kl",
- "aesenc128kl",
- "aesenc256kl",
- "aesencwide128kl",
- "aesencwide256kl",
- "encodekey128",
- "encodekey256",
- "loadiwkey",
-
- // unsure
- "hreset",
-
- // 3dnow
- "femms",
- "pi2fw",
- "pi2fd",
- "pi2iw",
- "pi2id",
- "pmulhrw",
- "pfcmpge",
- "pfmin",
- "pfrcp",
- "pfrsqrt",
- "pfsub",
- "pfadd",
- "pfcmpgt",
- "pfmax",
- "pfrcpit1",
- "pfrsqit1",
- "pfsubr",
- "pfacc",
- "pfcmpeq",
- "pfmul",
- "pfmulhrw",
- "pfrcpit2",
- "pfnacc",
- "pfpnacc",
- "pswapd",
- "pavgusb",
-
- // ENQCMD
- "enqcmd",
- "enqcmds",
-
- // INVPCID,
- "invept",
- "invvpid",
- "invpcid",
-
- // PTWRITE
- "ptwrite",
-
- // GFNI
- "gf2p8affineqb",
- "gf2p8affineinvqb",
- "gf2p8mulb",
-
- // CET
- "wruss",
- "wrss",
- "incssp",
- "saveprevssp",
- "setssbsy",
- "clrssbsy",
- "rstorssp",
- "endbr64",
- "endbr32",
-
- // TDX
- "tdcall",
- "seamret",
- "seamops",
- "seamcall",
-
- // WAITPKG
- "tpause",
- "umonitor",
- "umwait",
-
- // UINTR
- "uiret",
- "testui",
- "clui",
- "stui",
- "senduipi",
-
- // TSXLDTRK
- "xsusldtrk",
- "xresldtrk",
-
- // AVX512F
- "valignd",
- "valignq",
- "vblendmpd",
- "vblendmps",
- "vcompresspd",
- "vcompressps",
- "vcvtpd2udq",
- "vcvttpd2udq",
- "vcvtps2udq",
- "vcvttps2udq",
- "vcvtqq2pd",
- "vcvtqq2ps",
- "vcvtsd2usi",
- "vcvttsd2usi",
- "vcvtss2usi",
- "vcvttss2usi",
- "vcvtudq2pd",
- "vcvtudq2ps",
- "vcvtusi2usd",
- "vcvtusi2uss",
- "vexpandpd",
- "vexpandps",
- "vextractf32x4",
- "vextractf64x4",
- "vextracti32x4",
- "vextracti64x4",
- "vfixupimmpd",
- "vfixupimmps",
- "vfixupimmsd",
- "vfixupimmss",
- "vgetexppd",
- "vgetexpps",
- "vgetexpsd",
- "vgetexpss",
- "vgetmantpd",
- "vgetmantps",
- "vgetmantsd",
- "vgetmantss",
- "vinsertf32x4",
- "vinsertf64x4",
- "vinserti64x4",
- "vmovdqa32",
- "vmovdqa64",
- "vmovdqu32",
- "vmovdqu64",
- "vpblendmd",
- "vpblendmq",
- "vpcmpd",
- "vpcmpud",
- "vpcmpq",
- "vpcmpuq",
- "vpcompressq",
- "vpcompressd",
- "vpermi2d",
- "vpermi2q",
- "vpermi2pd",
- "vpermi2ps",
- "vpermt2d",
- "vpermt2q",
- "vpermt2pd",
- "vpermt2ps",
- "vpmaxsq",
- "vpmaxuq",
- "vpminsq",
- "vpminuq",
- "vpmovsqb",
- "vpmovusqb",
- "vpmovsqw",
- "vpmovusqw",
- "vpmovsqd",
- "vpmovusqd",
- "vpmovsdb",
- "vpmovusdb",
- "vpmovsdw",
- "vpmovusdw",
- "vprold",
- "vprolq",
- "vprolvd",
- "vprolvq",
- "vprord",
- "vprorq",
- "vprorrd",
- "vprorrq",
- "vpscatterdd",
- "vpscatterdq",
- "vpscatterqd",
- "vpscatterqq",
- "vpsraq",
- "vpsravq",
- "vptestnmd",
- "vptestnmq",
- "vpternlogd",
- "vpternlogq",
- "vptestmd",
- "vptestmq",
- "vrcp14pd",
- "vrcp14ps",
- "vrcp14sd",
- "vrcp14ss",
- "vrndscalepd",
- "vrndscaleps",
- "vrndscalesd",
- "vrndscaless",
- "vrsqrt14pd",
- "vrsqrt14ps",
- "vrsqrt14sd",
- "vrsqrt14ss",
- "vscaledpd",
- "vscaledps",
- "vscaledsd",
- "vscaledss",
- "vscatterdd",
- "vscatterdq",
- "vscatterqd",
- "vscatterqq",
- "vshuff32x4",
- "vshuff64x2",
- "vshufi32x4",
- "vshufi64x2",
-
- // AVX512DQ
- "vcvttpd2qq",
- "vcvtpd2qq",
- "vcvttpd2uqq",
- "vcvtpd2uqq",
- "vcvttps2qq",
- "vcvtps2qq",
- "vcvttps2uqq",
- "vcvtps2uqq",
- "vcvtuqq2pd",
- "vcvtuqq2ps",
- "vextractf64x2",
- "vextracti64x2",
- "vfpclasspd",
- "vfpclassps",
- "vfpclasssd",
- "vfpclassss",
- "vinsertf64x2",
- "vinserti64x2",
- "vpmovm2d",
- "vpmovm2q",
- "vpmovb2d",
- "vpmovq2m",
- "vrangepd",
- "vrangeps",
- "vrangesd",
- "vrangess",
- "vreducepd",
- "vreduceps",
- "vreducesd",
- "vreducess",
-
- // AVX512BW
- "vdbpsadbw",
- "vmovdqu8",
- "vmovdqu16",
- "vpblendmb",
- "vpblendmw",
- "vpcmpb",
- "vpcmpub",
- "vpcmpw",
- "vpcmpuw",
- "vpermw",
- "vpermi2b",
- "vpermi2w",
- "vpmovm2b",
- "vpmovm2w",
- "vpmovb2m",
- "vpmovw2m",
- "vpmovswb",
- "vpmovuswb",
- "vpsllvw",
- "vpsravw",
- "vpsrlvw",
- "vptestnmb",
- "vptestnmw",
- "vptestmb",
- "vptestmw",
-
- // AVX512CD
- "vpbroadcastm",
- "vpconflictd",
- "vpconflictq",
- "vplzcntd",
- "vplzcntq",
-
- "kunpckbw",
- "kunpckwd",
- "kunpckdq",
-
- "kaddb",
- "kandb",
- "kandnb",
- "kmovb",
- "knotb",
- "korb",
- "kortestb",
- "kshiftlb",
- "kshiftrb",
- "ktestb",
- "kxnorb",
- "kxorb",
- "kaddw",
- "kandw",
- "kandnw",
- "kmovw",
- "knotw",
- "korw",
- "kortestw",
- "kshiftlw",
- "kshiftrw",
- "ktestw",
- "kxnorw",
- "kxorw",
- "kaddd",
- "kandd",
- "kandnd",
- "kmovd",
- "knotd",
- "kord",
- "kortestd",
- "kshiftld",
- "kshiftrd",
- "ktestd",
- "kxnord",
- "kxord",
- "kaddq",
- "kandq",
- "kandnq",
- "kmovq",
- "knotq",
- "korq",
- "kortestq",
- "kshiftlq",
- "kshiftrq",
- "ktestq",
- "kxnorq",
- "kxorq",
-
- // AVX512ER
- "vexp2pd",
- "vexp2ps",
- "vexp2sd",
- "vexp2ss",
- "vrcp28pd",
- "vrcp28ps",
- "vrcp28sd",
- "vrcp28ss",
- "vrsqrt28pd",
- "vrsqrt28ps",
- "vrsqrt28sd",
- "vrsqrt28ss",
-
- // AVX512PF
- "vgatherpf0dpd",
- "vgatherpf0dps",
- "vgatherpf0qpd",
- "vgatherpf0qps",
- "vgatherpf1dpd",
- "vgatherpf1dps",
- "vgatherpf1qpd",
- "vgatherpf1qps",
- "vscatterpf0dpd",
- "vscatterpf0dps",
- "vscatterpf0qpd",
- "vscatterpf0qps",
- "vscatterpf1dpd",
- "vscatterpf1dps",
- "vscatterpf1qpd",
- "vscatterpf1qps",
-
- // MPX
- "bndmk",
- "bndcl",
- "bndcu",
- "bndcn",
- "bndmov",
- "bndldx",
- "bndstx",
-
-
-
- "vgf2p8affineqb",
- "vgf2p8affineinvqb",
- "vpshrdq",
- "vpshrdd",
- "vpshrdw",
- "vpshldq",
- "vpshldd",
- "vpshldw",
- "vbroadcastf32x8",
- "vbroadcastf64x4",
- "vbroadcastf32x4",
- "vbroadcastf64x2",
- "vbroadcastf32x2",
- "vbroadcasti32x8",
- "vbroadcasti64x4",
- "vbroadcasti32x4",
- "vbroadcasti64x2",
- "vbroadcasti32x2",
- "vextracti32x8",
- "vextractf32x8",
- "vinserti32x8",
- "vinsertf32x8",
- "vinserti32x4",
- "v4fnmaddss",
- "v4fnmaddps",
- "vcvtneps2bf16",
- "v4fmaddss",
- "v4fmaddps",
- "vcvtne2ps2bf16",
- "vp2intersectd",
- "vp2intersectq",
- "vp4dpwssds",
- "vp4dpwssd",
- "vpdpwssds",
- "vpdpwssd",
- "vpdpbusds",
- "vdpbf16ps",
- "vpbroadcastmw2d",
- "vpbroadcastmb2q",
- "vpmovd2m",
- "vpmovqd",
- "vpmovwb",
- "vpmovdb",
- "vpmovdw",
- "vpmovqb",
- "vpmovqw",
- "vgf2p8mulb",
- "vpmadd52huq",
- "vpmadd52luq",
- "vpshufbitqmb",
- "vpermb",
- "vpexpandd",
- "vpexpandq",
- "vpabsq",
- "vprorvd",
- "vprorvq",
- "vpmultishiftqb",
- "vpermt2b",
- "vpermt2w",
- "vpshrdvq",
- "vpshrdvd",
- "vpshrdvw",
- "vpshldvq",
- "vpshldvd",
- "vpshldvw",
- "vpcompressb",
- "vpcompressw",
- "vpexpandb",
- "vpexpandw",
- "vpopcntd",
- "vpopcntq",
- "vpopcntb",
- "vpopcntw",
- "vscalefss",
- "vscalefsd",
- "vscalefps",
- "vscalefpd",
- "vpdpbusd",
- "vcvtusi2sd",
- "vcvtusi2ss",
- "vpxord",
- "vpxorq",
- "vpord",
- "vporq",
- "vpandnd",
- "vpandnq",
- "vpandd",
- "vpandq",
- "psmash",
- "pvalidate",
- "rmpadjust",
- "rmpupdate",
-];
-
impl Opcode {
fn name(&self) -> &'static str {
unsafe {
- MNEMONICS.get_kinda_unchecked(*self as usize)
+ crate::generated::opcode::MNEMONICS.get_kinda_unchecked(*self as usize)
}
}
}
@@ -2508,6 +1050,10 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {
Opcode::VSCATTERDQ |
Opcode::VSCATTERQD |
Opcode::VSCATTERQQ |
+ Opcode::VSCATTERDPS |
+ Opcode::VSCATTERDPD |
+ Opcode::VSCATTERQPS |
+ Opcode::VSCATTERQPD |
Opcode::VPSCATTERDD |
Opcode::VPSCATTERDQ |
Opcode::VPSCATTERQD |
@@ -2696,6 +1242,8 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {
Opcode::VPINSRW |
Opcode::VPMASKMOVD |
Opcode::VPMASKMOVQ |
+ Opcode::VCOMPRESSD |
+ Opcode::VCOMPRESSQ |
Opcode::VCOMPRESSPD |
Opcode::VCOMPRESSPS |
Opcode::VPCOMPRESSQ |
@@ -3125,6 +1673,8 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {
Opcode::EMMS |
Opcode::FEMMS |
Opcode::GETSEC |
+ Opcode::LDS |
+ Opcode::LES |
Opcode::LFS |
Opcode::LGS |
Opcode::LSS |
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs
index 6412afb..56fd90f 100644
--- a/src/long_mode/mod.rs
+++ b/src/long_mode/mod.rs
@@ -11,6 +11,7 @@ pub use self::display::{DisplayStyle, InstructionDisplayer};
use core::cmp::PartialEq;
use crate::safer_unchecked::unreachable_kinda_unchecked as unreachable_unchecked;
+pub use crate::generated::opcode::long_mode::Opcode as Opcode;
use yaxpeax_arch::{AddressDiff, Decoder, Reader, LengthedInstruction};
use yaxpeax_arch::annotation::{AnnotatingDecoder, DescriptionSink, NullSink};
@@ -1059,1489 +1060,6 @@ const XSAVE: [Opcode; 10] = [
Opcode::XSETBV,
];
-/// an `x86_64` opcode. there sure are a lot of these.
-#[allow(non_camel_case_types)]
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[non_exhaustive]
-#[repr(u32)]
-pub enum Opcode {
- Invalid,
- ADD,
- OR,
- ADC,
- SBB,
- AND,
- XOR,
- SUB,
- CMP,
- XADD,
- BT,
- BTS,
- BTC,
- BTR,
- BSF,
- BSR,
- TZCNT,
- MOVSS,
- ADDSS,
- SUBSS,
- MULSS,
- DIVSS,
- MINSS,
- MAXSS,
- SQRTSS,
- MOVSD,
- SQRTSD,
- ADDSD,
- SUBSD,
- MULSD,
- DIVSD,
- MINSD,
- MAXSD,
- MOVSLDUP,
- MOVSHDUP,
- MOVDDUP,
- HADDPS,
- HSUBPS,
- ADDSUBPD,
- ADDSUBPS,
- CVTSI2SS,
- CVTSI2SD,
- CVTTSD2SI,
- CVTTPS2DQ,
- CVTPD2DQ,
- CVTPD2PS,
- CVTPS2DQ,
- CVTSD2SI,
- CVTSD2SS,
- CVTTSS2SI,
- CVTSS2SI,
- CVTSS2SD,
- CVTDQ2PD,
- LDDQU,
- MOVZX,
- MOVSX,
- MOVSXD,
- SAR,
- SAL,
- SHR,
- SHRD,
- SHL,
- RCR,
- RCL,
- ROR,
- ROL,
- INC,
- DEC,
- HLT,
- CALL,
- CALLF,
- JMP,
- JMPF,
- PUSH,
- POP,
- LEA,
- NOP,
- PREFETCHNTA,
- PREFETCH0,
- PREFETCH1,
- PREFETCH2,
- XCHG,
- POPF,
- INT,
- INTO,
- IRET,
- IRETD,
- IRETQ,
- RETF,
- ENTER,
- LEAVE,
- MOV,
- RETURN,
- PUSHF,
- WAIT,
- CBW,
- CWDE,
- CDQE,
- CWD,
- CDQ,
- CQO,
- LODS,
- STOS,
- LAHF,
- SAHF,
- CMPS,
- SCAS,
- MOVS,
- TEST,
- INS,
- IN,
- OUTS,
- OUT,
- IMUL,
- JO,
- JNO,
- JB,
- JNB,
- JZ,
- JNZ,
- JA,
- JNA,
- JS,
- JNS,
- JP,
- JNP,
- JL,
- JGE,
- JLE,
- JG,
- CMOVA,
- CMOVB,
- CMOVG,
- CMOVGE,
- CMOVL,
- CMOVLE,
- CMOVNA,
- CMOVNB,
- CMOVNO,
- CMOVNP,
- CMOVNS,
- CMOVNZ,
- CMOVO,
- CMOVP,
- CMOVS,
- CMOVZ,
- DIV,
- IDIV,
- MUL,
- NEG,
- NOT,
- CMPXCHG,
- SETO,
- SETNO,
- SETB,
- SETAE,
- SETZ,
- SETNZ,
- SETBE,
- SETA,
- SETS,
- SETNS,
- SETP,
- SETNP,
- SETL,
- SETGE,
- SETLE,
- SETG,
- CPUID,
- UD0,
- UD1,
- UD2,
- WBINVD,
- INVD,
- SYSRET,
- CLTS,
- SYSCALL,
- LSL,
- LAR,
- SGDT,
- SIDT,
- LGDT,
- LIDT,
- SMSW,
- LMSW,
- SWAPGS,
- RDTSCP,
- INVLPG,
- FXSAVE,
- FXRSTOR,
- LDMXCSR,
- STMXCSR,
- XSAVE,
- XRSTOR,
- XSAVEOPT,
- LFENCE,
- MFENCE,
- SFENCE,
- CLFLUSH,
- CLFLUSHOPT,
- CLWB,
- WRMSR,
- RDTSC,
- RDMSR,
- RDPMC,
- SLDT,
- STR,
- LLDT,
- LTR,
- VERR,
- VERW,
- CMC,
- CLC,
- STC,
- CLI,
- STI,
- CLD,
- STD,
- JMPE,
- POPCNT,
- MOVDQU,
- MOVDQA,
- MOVQ,
- CMPSS,
- CMPSD,
- UNPCKLPS,
- UNPCKLPD,
- UNPCKHPS,
- UNPCKHPD,
- PSHUFHW,
- PSHUFLW,
- MOVUPS,
- MOVQ2DQ,
- MOVDQ2Q,
- RSQRTSS,
- RCPSS,
-
- ANDN,
- BEXTR,
- BLSI,
- BLSMSK,
- BLSR,
- VMCLEAR,
- VMXON,
- VMCALL,
- VMLAUNCH,
- VMRESUME,
- VMXOFF,
- PCONFIG,
- MONITOR,
- MWAIT,
- MONITORX,
- MWAITX,
- CLAC,
- STAC,
- ENCLS,
- ENCLV,
- XGETBV,
- XSETBV,
- VMFUNC,
- XABORT,
- XBEGIN,
- XEND,
- XTEST,
- ENCLU,
- RDPKRU,
- WRPKRU,
-
- RDPRU,
- CLZERO,
-
- RDSEED,
- RDRAND,
-
- ADDPS,
- ADDPD,
- ANDNPS,
- ANDNPD,
- ANDPS,
- ANDPD,
- BSWAP,
- CMPPD,
- CMPPS,
- COMISD,
- COMISS,
- CVTDQ2PS,
- CVTPI2PS,
- CVTPI2PD,
- CVTPS2PD,
- CVTPS2PI,
- CVTPD2PI,
- CVTTPS2PI,
- CVTTPD2PI,
- CVTTPD2DQ,
- DIVPS,
- DIVPD,
- EMMS,
- GETSEC,
- LFS,
- LGS,
- LSS,
- MASKMOVQ,
- MASKMOVDQU,
- MAXPS,
- MAXPD,
- MINPS,
- MINPD,
- MOVAPS,
- MOVAPD,
- MOVD,
- MOVLPS,
- MOVLPD,
- MOVHPS,
- MOVHPD,
- MOVLHPS,
- MOVHLPS,
- MOVUPD,
- MOVMSKPS,
- MOVMSKPD,
- MOVNTI,
- MOVNTPS,
- MOVNTPD,
- EXTRQ,
- INSERTQ,
- MOVNTSS,
- MOVNTSD,
- MOVNTQ,
- MOVNTDQ,
- MULPS,
- MULPD,
- ORPS,
- ORPD,
- PACKSSDW,
- PACKSSWB,
- PACKUSWB,
- PADDB,
- PADDD,
- PADDQ,
- PADDSB,
- PADDSW,
- PADDUSB,
- PADDUSW,
- PADDW,
- PAND,
- PANDN,
- PAVGB,
- PAVGW,
- PCMPEQB,
- PCMPEQD,
- PCMPEQW,
- PCMPGTB,
- PCMPGTD,
- PCMPGTW,
- PINSRW,
- PMADDWD,
- PMAXSW,
- PMAXUB,
- PMINSW,
- PMINUB,
- PMOVMSKB,
- PMULHUW,
- PMULHW,
- PMULLW,
- PMULUDQ,
- POR,
- PSADBW,
- PSHUFW,
- PSHUFD,
- PSLLD,
- PSLLDQ,
- PSLLQ,
- PSLLW,
- PSRAD,
- PSRAW,
- PSRLD,
- PSRLDQ,
- PSRLQ,
- PSRLW,
- PSUBB,
- PSUBD,
- PSUBQ,
- PSUBSB,
- PSUBSW,
- PSUBUSB,
- PSUBUSW,
- PSUBW,
- PUNPCKHBW,
- PUNPCKHDQ,
- PUNPCKHWD,
- PUNPCKLBW,
- PUNPCKLDQ,
- PUNPCKLWD,
- PUNPCKLQDQ,
- PUNPCKHQDQ,
- PXOR,
- RCPPS,
- RSM,
- RSQRTPS,
- SHLD,
- SHUFPD,
- SHUFPS,
- SLHD,
- SQRTPS,
- SQRTPD,
- SUBPS,
- SUBPD,
- SYSENTER,
- SYSEXIT,
- UCOMISD,
- UCOMISS,
- VMREAD,
- VMWRITE,
- XORPS,
- XORPD,
-
- VMOVDDUP,
- VPSHUFLW,
- VPSHUFHW,
- VHADDPS,
- VHSUBPS,
- VADDSUBPS,
- VCVTPD2DQ,
- VLDDQU,
-
- VCOMISD,
- VCOMISS,
- VUCOMISD,
- VUCOMISS,
- VADDPD,
- VADDPS,
- VADDSD,
- VADDSS,
- VADDSUBPD,
- VAESDEC,
- VAESDECLAST,
- VAESENC,
- VAESENCLAST,
- VAESIMC,
- VAESKEYGENASSIST,
- VBLENDPD,
- VBLENDPS,
- VBLENDVPD,
- VBLENDVPS,
- VBROADCASTF128,
- VBROADCASTI128,
- VBROADCASTSD,
- VBROADCASTSS,
- VCMPSD,
- VCMPSS,
- VCMPPD,
- VCMPPS,
- VCVTDQ2PD,
- VCVTDQ2PS,
- VCVTPD2PS,
- VCVTPH2PS,
- VCVTPS2DQ,
- VCVTPS2PD,
- VCVTSS2SD,
- VCVTSI2SS,
- VCVTSI2SD,
- VCVTSD2SI,
- VCVTSD2SS,
- VCVTPS2PH,
- VCVTSS2SI,
- VCVTTPD2DQ,
- VCVTTPS2DQ,
- VCVTTSS2SI,
- VCVTTSD2SI,
- VDIVPD,
- VDIVPS,
- VDIVSD,
- VDIVSS,
- VDPPD,
- VDPPS,
- VEXTRACTF128,
- VEXTRACTI128,
- VEXTRACTPS,
- 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,
- VGATHERDPD,
- VGATHERDPS,
- VGATHERQPD,
- VGATHERQPS,
- VHADDPD,
- VHSUBPD,
- VINSERTF128,
- VINSERTI128,
- VINSERTPS,
- VMASKMOVDQU,
- VMASKMOVPD,
- VMASKMOVPS,
- VMAXPD,
- VMAXPS,
- VMAXSD,
- VMAXSS,
- VMINPD,
- VMINPS,
- VMINSD,
- VMINSS,
- VMOVAPD,
- VMOVAPS,
- VMOVD,
- VMOVDQA,
- VMOVDQU,
- VMOVHLPS,
- VMOVHPD,
- VMOVHPS,
- VMOVLHPS,
- VMOVLPD,
- VMOVLPS,
- VMOVMSKPD,
- VMOVMSKPS,
- VMOVNTDQ,
- VMOVNTDQA,
- VMOVNTPD,
- VMOVNTPS,
- VMOVQ,
- VMOVSS,
- VMOVSD,
- VMOVSHDUP,
- VMOVSLDUP,
- VMOVUPD,
- VMOVUPS,
- VMPSADBW,
- VMULPD,
- VMULPS,
- VMULSD,
- VMULSS,
- VPABSB,
- VPABSD,
- VPABSW,
- VPACKSSDW,
- VPACKUSDW,
- VPACKSSWB,
- VPACKUSWB,
- VPADDB,
- VPADDD,
- VPADDQ,
- VPADDSB,
- VPADDSW,
- VPADDUSB,
- VPADDUSW,
- VPADDW,
- VPALIGNR,
- VANDPD,
- VANDPS,
- VORPD,
- VORPS,
- VANDNPD,
- VANDNPS,
- VPAND,
- VPANDN,
- VPAVGB,
- VPAVGW,
- VPBLENDD,
- VPBLENDVB,
- VPBLENDW,
- VPBROADCASTB,
- VPBROADCASTD,
- VPBROADCASTQ,
- VPBROADCASTW,
- VPCLMULQDQ,
- VPCMPEQB,
- VPCMPEQD,
- VPCMPEQQ,
- VPCMPEQW,
- VPCMPGTB,
- VPCMPGTD,
- VPCMPGTQ,
- VPCMPGTW,
- VPCMPESTRI,
- VPCMPESTRM,
- VPCMPISTRI,
- VPCMPISTRM,
- VPERM2F128,
- VPERM2I128,
- VPERMD,
- VPERMILPD,
- VPERMILPS,
- VPERMPD,
- VPERMPS,
- VPERMQ,
- VPEXTRB,
- VPEXTRD,
- VPEXTRQ,
- VPEXTRW,
- VPGATHERDD,
- VPGATHERDQ,
- VPGATHERQD,
- VPGATHERQQ,
- VPHADDD,
- VPHADDSW,
- VPHADDW,
- VPMADDUBSW,
- VPHMINPOSUW,
- VPHSUBD,
- VPHSUBSW,
- VPHSUBW,
- VPINSRB,
- VPINSRD,
- VPINSRQ,
- VPINSRW,
- VPMADDWD,
- VPMASKMOVD,
- VPMASKMOVQ,
- VPMAXSB,
- VPMAXSD,
- VPMAXSW,
- VPMAXUB,
- VPMAXUW,
- VPMAXUD,
- VPMINSB,
- VPMINSW,
- VPMINSD,
- VPMINUB,
- VPMINUW,
- VPMINUD,
- VPMOVMSKB,
- VPMOVSXBD,
- VPMOVSXBQ,
- VPMOVSXBW,
- VPMOVSXDQ,
- VPMOVSXWD,
- VPMOVSXWQ,
- VPMOVZXBD,
- VPMOVZXBQ,
- VPMOVZXBW,
- VPMOVZXDQ,
- VPMOVZXWD,
- VPMOVZXWQ,
- VPMULDQ,
- VPMULHRSW,
- VPMULHUW,
- VPMULHW,
- VPMULLQ,
- VPMULLD,
- VPMULLW,
- VPMULUDQ,
- VPOR,
- VPSADBW,
- VPSHUFB,
- VPSHUFD,
- VPSIGNB,
- VPSIGND,
- VPSIGNW,
- VPSLLD,
- VPSLLDQ,
- VPSLLQ,
- VPSLLVD,
- VPSLLVQ,
- VPSLLW,
- VPSRAD,
- VPSRAVD,
- VPSRAW,
- VPSRLD,
- VPSRLDQ,
- VPSRLQ,
- VPSRLVD,
- VPSRLVQ,
- VPSRLW,
- VPSUBB,
- VPSUBD,
- VPSUBQ,
- VPSUBSB,
- VPSUBSW,
- VPSUBUSB,
- VPSUBUSW,
- VPSUBW,
- VPTEST,
- VPUNPCKHBW,
- VPUNPCKHDQ,
- VPUNPCKHQDQ,
- VPUNPCKHWD,
- VPUNPCKLBW,
- VPUNPCKLDQ,
- VPUNPCKLQDQ,
- VPUNPCKLWD,
- VPXOR,
- VRCPPS,
- VROUNDPD,
- VROUNDPS,
- VROUNDSD,
- VROUNDSS,
- VRSQRTPS,
- VRSQRTSS,
- VRCPSS,
- VSHUFPD,
- VSHUFPS,
- VSQRTPD,
- VSQRTPS,
- VSQRTSS,
- VSQRTSD,
- VSUBPD,
- VSUBPS,
- VSUBSD,
- VSUBSS,
- VTESTPD,
- VTESTPS,
- VUNPCKHPD,
- VUNPCKHPS,
- VUNPCKLPD,
- VUNPCKLPS,
- VXORPD,
- VXORPS,
- VZEROUPPER,
- VZEROALL,
- VLDMXCSR,
- VSTMXCSR,
-
- PCLMULQDQ,
- AESKEYGENASSIST,
- AESIMC,
- AESENC,
- AESENCLAST,
- AESDEC,
- AESDECLAST,
- PCMPGTQ,
- PCMPISTRM,
- PCMPISTRI,
- PCMPESTRI,
- PACKUSDW,
- PCMPESTRM,
- PCMPEQQ,
- PTEST,
- PHMINPOSUW,
- DPPS,
- DPPD,
- MPSADBW,
- PMOVZXDQ,
- PMOVSXDQ,
- PMOVZXBD,
- PMOVSXBD,
- PMOVZXWQ,
- PMOVSXWQ,
- PMOVZXBQ,
- PMOVSXBQ,
- PMOVSXWD,
- PMOVZXWD,
- PEXTRQ,
- PEXTRD,
- PEXTRW,
- PEXTRB,
- PMOVSXBW,
- PMOVZXBW,
- PINSRQ,
- PINSRD,
- PINSRB,
- EXTRACTPS,
- INSERTPS,
- ROUNDSS,
- ROUNDSD,
- ROUNDPS,
- ROUNDPD,
- PMAXSB,
- PMAXSD,
- PMAXUW,
- PMAXUD,
- PMINSD,
- PMINSB,
- PMINUD,
- PMINUW,
- BLENDW,
- PBLENDVB,
- PBLENDW,
- BLENDVPS,
- BLENDVPD,
- BLENDPS,
- BLENDPD,
- PMULDQ,
- MOVNTDQA,
- PMULLD,
- PALIGNR,
- PSIGNW,
- PSIGND,
- PSIGNB,
- PSHUFB,
- PMULHRSW,
- PMADDUBSW,
- PABSD,
- PABSW,
- PABSB,
- PHSUBSW,
- PHSUBW,
- PHSUBD,
- PHADDD,
- PHADDSW,
- PHADDW,
- HSUBPD,
- HADDPD,
-
- SHA1RNDS4,
- SHA1NEXTE,
- SHA1MSG1,
- SHA1MSG2,
- SHA256RNDS2,
- SHA256MSG1,
- SHA256MSG2,
-
- LZCNT,
- CLGI,
- STGI,
- SKINIT,
- VMLOAD,
- VMMCALL,
- VMSAVE,
- VMRUN,
- INVLPGA,
- INVLPGB,
- TLBSYNC,
-
- MOVBE,
-
- ADCX,
- ADOX,
-
- PREFETCHW,
-
- RDPID,
- CMPXCHG8B,
- CMPXCHG16B,
- VMPTRLD,
- VMPTRST,
-
- BZHI,
- MULX,
- SHLX,
- SHRX,
- SARX,
- PDEP,
- PEXT,
- RORX,
- XRSTORS,
- XRSTORS64,
- XSAVEC,
- XSAVEC64,
- XSAVES,
- XSAVES64,
-
- RDFSBASE,
- RDGSBASE,
- WRFSBASE,
- WRGSBASE,
-
- CRC32,
- SALC,
- XLAT,
-
- 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,
- 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,
- FXTRACT,
- FYL2X,
- FYL2XP1,
-
- LOOPNZ,
- LOOPZ,
- LOOP,
- JRCXZ,
-
- // started shipping in Tremont, 2020 sept 23
- MOVDIR64B,
- MOVDIRI,
-
- // started shipping in Tiger Lake, 2020 sept 2
- AESDEC128KL,
- AESDEC256KL,
- AESDECWIDE128KL,
- AESDECWIDE256KL,
- AESENC128KL,
- AESENC256KL,
- AESENCWIDE128KL,
- AESENCWIDE256KL,
- ENCODEKEY128,
- ENCODEKEY256,
- LOADIWKEY,
-
- // unsure
- HRESET,
-
- // 3dnow
- FEMMS,
- PI2FW,
- PI2FD,
- PF2IW,
- PF2ID,
- PMULHRW,
- PFCMPGE,
- PFMIN,
- PFRCP,
- PFRSQRT,
- PFSUB,
- PFADD,
- PFCMPGT,
- PFMAX,
- PFRCPIT1,
- PFRSQIT1,
- PFSUBR,
- PFACC,
- PFCMPEQ,
- PFMUL,
- PFMULHRW,
- PFRCPIT2,
- PFNACC,
- PFPNACC,
- PSWAPD,
- PAVGUSB,
-
- // ENQCMD
- ENQCMD,
- ENQCMDS,
-
- // INVPCID
- INVEPT,
- INVVPID,
- INVPCID,
-
- // PTWRITE
- PTWRITE,
-
- // GFNI
- GF2P8AFFINEQB,
- GF2P8AFFINEINVQB,
- GF2P8MULB,
-
- // CET
- WRUSS,
- WRSS,
- INCSSP,
- SAVEPREVSSP,
- SETSSBSY,
- CLRSSBSY,
- RSTORSSP,
- ENDBR64,
- ENDBR32,
-
- // TDX
- TDCALL,
- SEAMRET,
- SEAMOPS,
- SEAMCALL,
-
- // WAITPKG
- TPAUSE,
- UMONITOR,
- UMWAIT,
-
- // UINTR
- UIRET,
- TESTUI,
- CLUI,
- STUI,
- SENDUIPI,
-
- // TSXLDTRK
- XSUSLDTRK,
- XRESLDTRK,
-
- // AVX512F
- VALIGND,
- VALIGNQ,
- VBLENDMPD,
- VBLENDMPS,
- VCOMPRESSPD,
- VCOMPRESSPS,
- VCVTPD2UDQ,
- VCVTTPD2UDQ,
- VCVTPS2UDQ,
- VCVTTPS2UDQ,
- VCVTQQ2PD,
- VCVTQQ2PS,
- VCVTSD2USI,
- VCVTTSD2USI,
- VCVTSS2USI,
- VCVTTSS2USI,
- VCVTUDQ2PD,
- VCVTUDQ2PS,
- VCVTUSI2USD,
- VCVTUSI2USS,
- VEXPANDPD,
- VEXPANDPS,
- VEXTRACTF32X4,
- VEXTRACTF64X4,
- VEXTRACTI32X4,
- VEXTRACTI64X4,
- VFIXUPIMMPD,
- VFIXUPIMMPS,
- VFIXUPIMMSD,
- VFIXUPIMMSS,
- VGETEXPPD,
- VGETEXPPS,
- VGETEXPSD,
- VGETEXPSS,
- VGETMANTPD,
- VGETMANTPS,
- VGETMANTSD,
- VGETMANTSS,
- VINSERTF32X4,
- VINSERTF64X4,
- VINSERTI64X4,
- VMOVDQA32,
- VMOVDQA64,
- VMOVDQU32,
- VMOVDQU64,
- VPBLENDMD,
- VPBLENDMQ,
- VPCMPD,
- VPCMPUD,
- VPCMPQ,
- VPCMPUQ,
- VPCOMPRESSQ,
- VPCOMPRESSD,
- VPERMI2D,
- VPERMI2Q,
- VPERMI2PD,
- VPERMI2PS,
- VPERMT2D,
- VPERMT2Q,
- VPERMT2PD,
- VPERMT2PS,
- VPMAXSQ,
- VPMAXUQ,
- VPMINSQ,
- VPMINUQ,
- VPMOVSQB,
- VPMOVUSQB,
- VPMOVSQW,
- VPMOVUSQW,
- VPMOVSQD,
- VPMOVUSQD,
- VPMOVSDB,
- VPMOVUSDB,
- VPMOVSDW,
- VPMOVUSDW,
- VPROLD,
- VPROLQ,
- VPROLVD,
- VPROLVQ,
- VPRORD,
- VPRORQ,
- VPRORRD,
- VPRORRQ,
- VPSCATTERDD,
- VPSCATTERDQ,
- VPSCATTERQD,
- VPSCATTERQQ,
- VPSRAQ,
- VPSRAVQ,
- VPTESTNMD,
- VPTESTNMQ,
- VPTERNLOGD,
- VPTERNLOGQ,
- VPTESTMD,
- VPTESTMQ,
- VRCP14PD,
- VRCP14PS,
- VRCP14SD,
- VRCP14SS,
- VRNDSCALEPD,
- VRNDSCALEPS,
- VRNDSCALESD,
- VRNDSCALESS,
- VRSQRT14PD,
- VRSQRT14PS,
- VRSQRT14SD,
- VRSQRT14SS,
- VSCALEDPD,
- VSCALEDPS,
- VSCALEDSD,
- VSCALEDSS,
- VSCATTERDD,
- VSCATTERDQ,
- VSCATTERQD,
- VSCATTERQQ,
- VSHUFF32X4,
- VSHUFF64X2,
- VSHUFI32X4,
- VSHUFI64X2,
-
- // AVX512DQ
- VCVTTPD2QQ,
- VCVTPD2QQ,
- VCVTTPD2UQQ,
- VCVTPD2UQQ,
- VCVTTPS2QQ,
- VCVTPS2QQ,
- VCVTTPS2UQQ,
- VCVTPS2UQQ,
- VCVTUQQ2PD,
- VCVTUQQ2PS,
- VEXTRACTF64X2,
- VEXTRACTI64X2,
- VFPCLASSPD,
- VFPCLASSPS,
- VFPCLASSSD,
- VFPCLASSSS,
- VINSERTF64X2,
- VINSERTI64X2,
- VPMOVM2D,
- VPMOVM2Q,
- VPMOVB2D,
- VPMOVQ2M,
- VRANGEPD,
- VRANGEPS,
- VRANGESD,
- VRANGESS,
- VREDUCEPD,
- VREDUCEPS,
- VREDUCESD,
- VREDUCESS,
-
- // AVX512BW
- VDBPSADBW,
- VMOVDQU8,
- VMOVDQU16,
- VPBLENDMB,
- VPBLENDMW,
- VPCMPB,
- VPCMPUB,
- VPCMPW,
- VPCMPUW,
- VPERMW,
- VPERMI2B,
- VPERMI2W,
- VPMOVM2B,
- VPMOVM2W,
- VPMOVB2M,
- VPMOVW2M,
- VPMOVSWB,
- VPMOVUSWB,
- VPSLLVW,
- VPSRAVW,
- VPSRLVW,
- VPTESTNMB,
- VPTESTNMW,
- VPTESTMB,
- VPTESTMW,
-
- // AVX512CD
- VPBROADCASTM,
- VPCONFLICTD,
- VPCONFLICTQ,
- VPLZCNTD,
- VPLZCNTQ,
-
- KUNPCKBW,
- KUNPCKWD,
- KUNPCKDQ,
-
- KADDB,
- KANDB,
- KANDNB,
- KMOVB,
- KNOTB,
- KORB,
- KORTESTB,
- KSHIFTLB,
- KSHIFTRB,
- KTESTB,
- KXNORB,
- KXORB,
- KADDW,
- KANDW,
- KANDNW,
- KMOVW,
- KNOTW,
- KORW,
- KORTESTW,
- KSHIFTLW,
- KSHIFTRW,
- KTESTW,
- KXNORW,
- KXORW,
- KADDD,
- KANDD,
- KANDND,
- KMOVD,
- KNOTD,
- KORD,
- KORTESTD,
- KSHIFTLD,
- KSHIFTRD,
- KTESTD,
- KXNORD,
- KXORD,
- KADDQ,
- KANDQ,
- KANDNQ,
- KMOVQ,
- KNOTQ,
- KORQ,
- KORTESTQ,
- KSHIFTLQ,
- KSHIFTRQ,
- KTESTQ,
- KXNORQ,
- KXORQ,
-
- // AVX512ER
- VEXP2PD,
- VEXP2PS,
- VEXP2SD,
- VEXP2SS,
- VRCP28PD,
- VRCP28PS,
- VRCP28SD,
- VRCP28SS,
- VRSQRT28PD,
- VRSQRT28PS,
- VRSQRT28SD,
- VRSQRT28SS,
-
- // AVX512PF
- VGATHERPF0DPD,
- VGATHERPF0DPS,
- VGATHERPF0QPD,
- VGATHERPF0QPS,
- VGATHERPF1DPD,
- VGATHERPF1DPS,
- VGATHERPF1QPD,
- VGATHERPF1QPS,
- VSCATTERPF0DPD,
- VSCATTERPF0DPS,
- VSCATTERPF0QPD,
- VSCATTERPF0QPS,
- VSCATTERPF1DPD,
- VSCATTERPF1DPS,
- VSCATTERPF1QPD,
- VSCATTERPF1QPS,
-
- // MPX
- BNDMK,
- BNDCL,
- BNDCU,
- BNDCN,
- BNDMOV,
- BNDLDX,
- BNDSTX,
-
- VGF2P8AFFINEQB,
- VGF2P8AFFINEINVQB,
- VPSHRDQ,
- VPSHRDD,
- VPSHRDW,
- VPSHLDQ,
- VPSHLDD,
- VPSHLDW,
- VBROADCASTF32X8,
- VBROADCASTF64X4,
- VBROADCASTF32X4,
- VBROADCASTF64X2,
- VBROADCASTF32X2,
- VBROADCASTI32X8,
- VBROADCASTI64X4,
- VBROADCASTI32X4,
- VBROADCASTI64X2,
- VBROADCASTI32X2,
- VEXTRACTI32X8,
- VEXTRACTF32X8,
- VINSERTI32X8,
- VINSERTF32X8,
- VINSERTI32X4,
- V4FNMADDSS,
- V4FNMADDPS,
- VCVTNEPS2BF16,
- V4FMADDSS,
- V4FMADDPS,
- VCVTNE2PS2BF16,
- VP2INTERSECTD,
- VP2INTERSECTQ,
- VP4DPWSSDS,
- VP4DPWSSD,
- VPDPWSSDS,
- VPDPWSSD,
- VPDPBUSDS,
- VDPBF16PS,
- VPBROADCASTMW2D,
- VPBROADCASTMB2Q,
- VPMOVD2M,
- VPMOVQD,
- VPMOVWB,
- VPMOVDB,
- VPMOVDW,
- VPMOVQB,
- VPMOVQW,
- VGF2P8MULB,
- VPMADD52HUQ,
- VPMADD52LUQ,
- VPSHUFBITQMB,
- VPERMB,
- VPEXPANDD,
- VPEXPANDQ,
- VPABSQ,
- VPRORVD,
- VPRORVQ,
- VPMULTISHIFTQB,
- VPERMT2B,
- VPERMT2W,
- VPSHRDVQ,
- VPSHRDVD,
- VPSHRDVW,
- VPSHLDVQ,
- VPSHLDVD,
- VPSHLDVW,
- VPCOMPRESSB,
- VPCOMPRESSW,
- VPEXPANDB,
- VPEXPANDW,
- VPOPCNTD,
- VPOPCNTQ,
- VPOPCNTB,
- VPOPCNTW,
- VSCALEFSS,
- VSCALEFSD,
- VSCALEFPS,
- VSCALEFPD,
- VPDPBUSD,
- VCVTUSI2SD,
- VCVTUSI2SS,
- VPXORD,
- VPXORQ,
- VPORD,
- VPORQ,
- VPANDND,
- VPANDNQ,
- VPANDD,
- VPANDQ,
-
- PSMASH,
- PVALIDATE,
- RMPADJUST,
- RMPUPDATE,
-}
-
impl PartialEq for Instruction {
fn eq(&self, other: &Self) -> bool {
if self.prefixes != other.prefixes {
@@ -2595,7 +1113,7 @@ pub struct Instruction {
operands: [OperandSpec; 4],
imm: u64,
disp: u64,
- opcode: Opcode,
+ pub(crate) opcode: Opcode,
mem_size: u8,
}
@@ -3477,666 +1995,6 @@ impl InstDecoder {
self.flags |= 1 << 63;
self
}
-
- /// optionally reject or reinterpret instruction according to the decoder's
- /// declared extensions.
- fn revise_instruction(&self, inst: &mut Instruction) -> Result<(), DecodeError> {
- if inst.prefixes.evex().is_some() {
- if !self.avx512() {
- return Err(DecodeError::InvalidOpcode);
- } else {
- return Ok(());
- }
- }
- match inst.opcode {
- Opcode::TZCNT => {
- if !self.bmi1() {
- // tzcnt is only supported if bmi1 is enabled. without bmi1, this decodes as
- // bsf.
- inst.opcode = Opcode::BSF;
- }
- }
- Opcode::LDDQU |
- Opcode::ADDSUBPS |
- Opcode::ADDSUBPD |
- Opcode::HADDPS |
- Opcode::HSUBPS |
- Opcode::HADDPD |
- Opcode::HSUBPD |
- Opcode::MOVSHDUP |
- Opcode::MOVSLDUP |
- Opcode::MOVDDUP |
- Opcode::MONITOR |
- Opcode::MWAIT => {
- // via Intel section 5.7, SSE3 Instructions
- if !self.sse3() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PHADDW |
- Opcode::PHADDSW |
- Opcode::PHADDD |
- Opcode::PHSUBW |
- Opcode::PHSUBSW |
- Opcode::PHSUBD |
- Opcode::PABSB |
- Opcode::PABSW |
- Opcode::PABSD |
- Opcode::PMADDUBSW |
- Opcode::PMULHRSW |
- Opcode::PSHUFB |
- Opcode::PSIGNB |
- Opcode::PSIGNW |
- Opcode::PSIGND |
- Opcode::PALIGNR => {
- // via Intel section 5.8, SSSE3 Instructions
- if !self.ssse3() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PMULLD |
- Opcode::PMULDQ |
- Opcode::MOVNTDQA |
- Opcode::BLENDPD |
- Opcode::BLENDPS |
- Opcode::BLENDVPD |
- Opcode::BLENDVPS |
- Opcode::PBLENDVB |
- Opcode::BLENDW |
- Opcode::PMINUW |
- Opcode::PMINUD |
- Opcode::PMINSB |
- Opcode::PMINSD |
- Opcode::PMAXUW |
- Opcode::PMAXUD |
- Opcode::PMAXSB |
- Opcode::PMAXSD |
- Opcode::ROUNDPS |
- Opcode::ROUNDPD |
- Opcode::ROUNDSS |
- Opcode::ROUNDSD |
- Opcode::PBLENDW |
- Opcode::EXTRACTPS |
- Opcode::INSERTPS |
- Opcode::PINSRB |
- Opcode::PINSRD |
- Opcode::PINSRQ |
- Opcode::PMOVSXBW |
- Opcode::PMOVZXBW |
- Opcode::PMOVSXBD |
- Opcode::PMOVZXBD |
- Opcode::PMOVSXWD |
- Opcode::PMOVZXWD |
- Opcode::PMOVSXBQ |
- Opcode::PMOVZXBQ |
- Opcode::PMOVSXWQ |
- Opcode::PMOVZXWQ |
- Opcode::PMOVSXDQ |
- Opcode::PMOVZXDQ |
- Opcode::DPPS |
- Opcode::DPPD |
- Opcode::MPSADBW |
- Opcode::PHMINPOSUW |
- Opcode::PTEST |
- Opcode::PCMPEQQ |
- Opcode::PEXTRB |
- Opcode::PEXTRW |
- Opcode::PEXTRD |
- Opcode::PEXTRQ |
- Opcode::PACKUSDW => {
- // via Intel section 5.10, SSE4.1 Instructions
- if !self.sse4_1() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::EXTRQ |
- Opcode::INSERTQ |
- Opcode::MOVNTSS |
- Opcode::MOVNTSD => {
- if !self.sse4a() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::CRC32 |
- Opcode::PCMPESTRI |
- Opcode::PCMPESTRM |
- Opcode::PCMPISTRI |
- Opcode::PCMPISTRM |
- Opcode::PCMPGTQ => {
- // via Intel section 5.11, SSE4.2 Instructions
- if !self.sse4_2() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::AESDEC |
- Opcode::AESDECLAST |
- Opcode::AESENC |
- Opcode::AESENCLAST |
- Opcode::AESIMC |
- Opcode::AESKEYGENASSIST => {
- // via Intel section 5.12. AESNI AND PCLMULQDQ
- if !self.aesni() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PCLMULQDQ => {
- // via Intel section 5.12. AESNI AND PCLMULQDQ
- if !self.pclmulqdq() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::XABORT |
- Opcode::XBEGIN |
- Opcode::XEND |
- Opcode::XTEST => {
- if !self.tsx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::SHA1MSG1 |
- Opcode::SHA1MSG2 |
- Opcode::SHA1NEXTE |
- Opcode::SHA1RNDS4 |
- Opcode::SHA256MSG1 |
- Opcode::SHA256MSG2 |
- Opcode::SHA256RNDS2 => {
- if !self.sha() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::ENCLV |
- Opcode::ENCLS |
- Opcode::ENCLU => {
- if !self.sgx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- // AVX...
- Opcode::VMOVDDUP |
- Opcode::VPSHUFLW |
- Opcode::VPSHUFHW |
- Opcode::VHADDPS |
- Opcode::VHSUBPS |
- Opcode::VADDSUBPS |
- Opcode::VCVTPD2DQ |
- Opcode::VLDDQU |
- Opcode::VCOMISD |
- Opcode::VCOMISS |
- Opcode::VUCOMISD |
- Opcode::VUCOMISS |
- Opcode::VADDPD |
- Opcode::VADDPS |
- Opcode::VADDSD |
- Opcode::VADDSS |
- Opcode::VADDSUBPD |
- Opcode::VBLENDPD |
- Opcode::VBLENDPS |
- Opcode::VBLENDVPD |
- Opcode::VBLENDVPS |
- Opcode::VBROADCASTF128 |
- Opcode::VBROADCASTI128 |
- Opcode::VBROADCASTSD |
- Opcode::VBROADCASTSS |
- Opcode::VCMPSD |
- Opcode::VCMPSS |
- Opcode::VCMPPD |
- Opcode::VCMPPS |
- Opcode::VCVTDQ2PD |
- Opcode::VCVTDQ2PS |
- Opcode::VCVTPD2PS |
- Opcode::VCVTPS2DQ |
- Opcode::VCVTPS2PD |
- Opcode::VCVTSS2SD |
- Opcode::VCVTSI2SS |
- Opcode::VCVTSI2SD |
- Opcode::VCVTSD2SI |
- Opcode::VCVTSD2SS |
- Opcode::VCVTSS2SI |
- Opcode::VCVTTPD2DQ |
- Opcode::VCVTTPS2DQ |
- Opcode::VCVTTSS2SI |
- Opcode::VCVTTSD2SI |
- Opcode::VDIVPD |
- Opcode::VDIVPS |
- Opcode::VDIVSD |
- Opcode::VDIVSS |
- Opcode::VDPPD |
- Opcode::VDPPS |
- Opcode::VEXTRACTF128 |
- Opcode::VEXTRACTI128 |
- Opcode::VEXTRACTPS |
- 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 |
- Opcode::VGATHERDPD |
- Opcode::VGATHERDPS |
- Opcode::VGATHERQPD |
- Opcode::VGATHERQPS |
- Opcode::VHADDPD |
- Opcode::VHSUBPD |
- Opcode::VINSERTF128 |
- Opcode::VINSERTI128 |
- Opcode::VINSERTPS |
- Opcode::VMASKMOVDQU |
- Opcode::VMASKMOVPD |
- Opcode::VMASKMOVPS |
- Opcode::VMAXPD |
- Opcode::VMAXPS |
- Opcode::VMAXSD |
- Opcode::VMAXSS |
- Opcode::VMINPD |
- Opcode::VMINPS |
- Opcode::VMINSD |
- Opcode::VMINSS |
- Opcode::VMOVAPD |
- Opcode::VMOVAPS |
- Opcode::VMOVD |
- Opcode::VMOVDQA |
- Opcode::VMOVDQU |
- Opcode::VMOVHLPS |
- Opcode::VMOVHPD |
- Opcode::VMOVHPS |
- Opcode::VMOVLHPS |
- Opcode::VMOVLPD |
- Opcode::VMOVLPS |
- Opcode::VMOVMSKPD |
- Opcode::VMOVMSKPS |
- Opcode::VMOVNTDQ |
- Opcode::VMOVNTDQA |
- Opcode::VMOVNTPD |
- Opcode::VMOVNTPS |
- Opcode::VMOVQ |
- Opcode::VMOVSS |
- Opcode::VMOVSD |
- Opcode::VMOVSHDUP |
- Opcode::VMOVSLDUP |
- Opcode::VMOVUPD |
- Opcode::VMOVUPS |
- Opcode::VMPSADBW |
- Opcode::VMULPD |
- Opcode::VMULPS |
- Opcode::VMULSD |
- Opcode::VMULSS |
- Opcode::VPABSB |
- Opcode::VPABSD |
- Opcode::VPABSW |
- Opcode::VPACKSSDW |
- Opcode::VPACKUSDW |
- Opcode::VPACKSSWB |
- Opcode::VPACKUSWB |
- Opcode::VPADDB |
- Opcode::VPADDD |
- Opcode::VPADDQ |
- Opcode::VPADDSB |
- Opcode::VPADDSW |
- Opcode::VPADDUSB |
- Opcode::VPADDUSW |
- Opcode::VPADDW |
- Opcode::VPALIGNR |
- Opcode::VPAND |
- Opcode::VANDPD |
- Opcode::VANDPS |
- Opcode::VANDNPD |
- Opcode::VANDNPS |
- Opcode::VORPD |
- Opcode::VORPS |
- Opcode::VPANDN |
- Opcode::VPAVGB |
- Opcode::VPAVGW |
- Opcode::VPBLENDD |
- Opcode::VPBLENDVB |
- Opcode::VPBLENDW |
- Opcode::VPBROADCASTB |
- Opcode::VPBROADCASTD |
- Opcode::VPBROADCASTQ |
- Opcode::VPBROADCASTW |
- Opcode::VPCLMULQDQ |
- Opcode::VPCMPEQB |
- Opcode::VPCMPEQD |
- Opcode::VPCMPEQQ |
- Opcode::VPCMPEQW |
- Opcode::VPCMPGTB |
- Opcode::VPCMPGTD |
- Opcode::VPCMPGTQ |
- Opcode::VPCMPGTW |
- Opcode::VPCMPESTRI |
- Opcode::VPCMPESTRM |
- Opcode::VPCMPISTRI |
- Opcode::VPCMPISTRM |
- Opcode::VPERM2F128 |
- Opcode::VPERM2I128 |
- Opcode::VPERMD |
- Opcode::VPERMILPD |
- Opcode::VPERMILPS |
- Opcode::VPERMPD |
- Opcode::VPERMPS |
- Opcode::VPERMQ |
- Opcode::VPEXTRB |
- Opcode::VPEXTRD |
- Opcode::VPEXTRQ |
- Opcode::VPEXTRW |
- Opcode::VPGATHERDD |
- Opcode::VPGATHERDQ |
- Opcode::VPGATHERQD |
- Opcode::VPGATHERQQ |
- Opcode::VPHADDD |
- Opcode::VPHADDSW |
- Opcode::VPHADDW |
- Opcode::VPMADDUBSW |
- Opcode::VPHMINPOSUW |
- Opcode::VPHSUBD |
- Opcode::VPHSUBSW |
- Opcode::VPHSUBW |
- Opcode::VPINSRB |
- Opcode::VPINSRD |
- Opcode::VPINSRQ |
- Opcode::VPINSRW |
- Opcode::VPMADDWD |
- Opcode::VPMASKMOVD |
- Opcode::VPMASKMOVQ |
- Opcode::VPMAXSB |
- Opcode::VPMAXSD |
- Opcode::VPMAXSW |
- Opcode::VPMAXUB |
- Opcode::VPMAXUW |
- Opcode::VPMAXUD |
- Opcode::VPMINSB |
- Opcode::VPMINSW |
- Opcode::VPMINSD |
- Opcode::VPMINUB |
- Opcode::VPMINUW |
- Opcode::VPMINUD |
- Opcode::VPMOVMSKB |
- 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::VPMULHRSW |
- Opcode::VPMULHUW |
- Opcode::VPMULHW |
- Opcode::VPMULLQ |
- Opcode::VPMULLD |
- Opcode::VPMULLW |
- Opcode::VPMULUDQ |
- Opcode::VPOR |
- Opcode::VPSADBW |
- Opcode::VPSHUFB |
- Opcode::VPSHUFD |
- Opcode::VPSIGNB |
- Opcode::VPSIGND |
- Opcode::VPSIGNW |
- Opcode::VPSLLD |
- Opcode::VPSLLDQ |
- Opcode::VPSLLQ |
- Opcode::VPSLLVD |
- Opcode::VPSLLVQ |
- Opcode::VPSLLW |
- Opcode::VPSRAD |
- Opcode::VPSRAVD |
- Opcode::VPSRAW |
- Opcode::VPSRLD |
- Opcode::VPSRLDQ |
- Opcode::VPSRLQ |
- Opcode::VPSRLVD |
- Opcode::VPSRLVQ |
- Opcode::VPSRLW |
- Opcode::VPSUBB |
- Opcode::VPSUBD |
- Opcode::VPSUBQ |
- Opcode::VPSUBSB |
- Opcode::VPSUBSW |
- Opcode::VPSUBUSB |
- Opcode::VPSUBUSW |
- Opcode::VPSUBW |
- Opcode::VPTEST |
- Opcode::VPUNPCKHBW |
- Opcode::VPUNPCKHDQ |
- Opcode::VPUNPCKHQDQ |
- Opcode::VPUNPCKHWD |
- Opcode::VPUNPCKLBW |
- Opcode::VPUNPCKLDQ |
- Opcode::VPUNPCKLQDQ |
- Opcode::VPUNPCKLWD |
- Opcode::VPXOR |
- Opcode::VRCPPS |
- Opcode::VROUNDPD |
- Opcode::VROUNDPS |
- Opcode::VROUNDSD |
- Opcode::VROUNDSS |
- Opcode::VRSQRTPS |
- Opcode::VRSQRTSS |
- Opcode::VRCPSS |
- Opcode::VSHUFPD |
- Opcode::VSHUFPS |
- Opcode::VSQRTPD |
- Opcode::VSQRTPS |
- Opcode::VSQRTSS |
- Opcode::VSQRTSD |
- Opcode::VSUBPD |
- Opcode::VSUBPS |
- Opcode::VSUBSD |
- Opcode::VSUBSS |
- Opcode::VTESTPD |
- Opcode::VTESTPS |
- Opcode::VUNPCKHPD |
- Opcode::VUNPCKHPS |
- Opcode::VUNPCKLPD |
- Opcode::VUNPCKLPS |
- Opcode::VXORPD |
- Opcode::VXORPS |
- Opcode::VZEROUPPER |
- Opcode::VZEROALL |
- Opcode::VLDMXCSR |
- Opcode::VSTMXCSR => {
- // TODO: check a table for these
- if !self.avx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VAESDEC |
- Opcode::VAESDECLAST |
- Opcode::VAESENC |
- Opcode::VAESENCLAST |
- Opcode::VAESIMC |
- Opcode::VAESKEYGENASSIST => {
- // TODO: check a table for these
- if !self.avx() || !self.aesni() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::MOVBE => {
- if !self.movbe() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::POPCNT => {
- /*
- * from the intel SDM:
- * ```
- * Before an application attempts to use the POPCNT instruction, it must check that
- * the processor supports SSE4.2 (if CPUID.01H:ECX.SSE4_2[bit 20] = 1) and POPCNT
- * (if CPUID.01H:ECX.POPCNT[bit 23] = 1).
- * ```
- */
- if self.intel_quirks() && (self.sse4_2() || self.popcnt()) {
- return Ok(());
- } else if !self.popcnt() {
- /*
- * elsewhere from the amd APM:
- * `Instruction Subsets and CPUID Feature Flags` on page 507 indicates that
- * popcnt is present when the popcnt bit is reported by cpuid. this seems to be
- * the less quirky default, so `intel_quirks` is considered the outlier, and
- * before this default.
- * */
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::LZCNT => {
- /*
- * amd APM, `LZCNT` page 212:
- * LZCNT is an Advanced Bit Manipulation (ABM) instruction. Support for the LZCNT
- * instruction is indicated by CPUID Fn8000_0001_ECX[ABM] = 1.
- *
- * meanwhile the intel SDM simply states:
- * ```
- * CPUID.EAX=80000001H:ECX.LZCNT[bit 5]: if 1 indicates the processor supports the
- * LZCNT instruction.
- * ```
- *
- * so that's considered the less-quirky (default) case here.
- * */
- if self.amd_quirks() && !self.abm() {
- return Err(DecodeError::InvalidOpcode);
- } else if !self.lzcnt() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::ADCX |
- Opcode::ADOX => {
- if !self.adx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VMRUN |
- Opcode::VMLOAD |
- Opcode::VMSAVE |
- Opcode::CLGI |
- Opcode::VMMCALL |
- Opcode::INVLPGA => {
- if !self.svm() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::STGI |
- Opcode::SKINIT => {
- if !self.svm() || !self.skinit() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::LAHF |
- Opcode::SAHF => {
- if !self.lahfsahf() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VCVTPS2PH |
- Opcode::VCVTPH2PS => {
- /*
- * from intel SDM:
- * ```
- * 14.4.1 Detection of F16C Instructions Application using float 16 instruction
- * must follow a detection sequence similar to AVX to ensure: • The OS has
- * enabled YMM state management support, • The processor support AVX as
- * indicated by the CPUID feature flag, i.e. CPUID.01H:ECX.AVX[bit 28] = 1. •
- * The processor support 16-bit floating-point conversion instructions via a
- * CPUID feature flag (CPUID.01H:ECX.F16C[bit 29] = 1).
- * ```
- *
- * TODO: only the VEX-coded variant of this instruction should be gated on `f16c`.
- * the EVEX-coded variant should be gated on `avx512f` or `avx512vl` if not
- * EVEX.512-coded.
- */
- if !self.avx() || !self.f16c() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::RDRAND => {
- if !self.rdrand() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::RDSEED => {
- if !self.rdseed() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::MONITORX | Opcode::MWAITX | // these are gated on the `monitorx` and `mwaitx` cpuid bits, but are AMD-only.
- Opcode::CLZERO | Opcode::RDPRU => { // again, gated on specific cpuid bits, but AMD-only.
- if !self.amd_quirks() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- other => {
- if !self.bmi1() {
- if BMI1.contains(&other) {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- if !self.bmi2() {
- if BMI2.contains(&other) {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- }
- }
- Ok(())
- }
}
impl Default for InstDecoder {
@@ -4162,7 +2020,7 @@ impl Decoder<Arch> for InstDecoder {
}
if self != &InstDecoder::default() {
- self.revise_instruction(&mut instr)?;
+ crate::generated::long_mode::revise_instruction(self, &mut instr)?;
}
Ok(instr)
@@ -4189,7 +2047,7 @@ impl AnnotatingDecoder<Arch> for InstDecoder {
}
if self != &InstDecoder::default() {
- self.revise_instruction(instr)?;
+ crate::generated::long_mode::revise_instruction(self, instr)?;
}
Ok(())
diff --git a/src/protected_mode/display.rs b/src/protected_mode/display.rs
index 4416141..9ef531e 100644
--- a/src/protected_mode/display.rs
+++ b/src/protected_mode/display.rs
@@ -345,1480 +345,10 @@ impl fmt::Display for Opcode {
}
}
-const MNEMONICS: &[&'static str] = &[
- "invalid",
- "add",
- "or",
- "adc",
- "sbb",
- "and",
- "xor",
- "sub",
- "cmp",
- "xadd",
- "bt",
- "bts",
- "btc",
- "btr",
- "bsf",
- "bsr",
- "tzcnt",
- "movss",
- "addss",
- "subss",
- "mulss",
- "divss",
- "minss",
- "maxss",
- "sqrtss",
- "movsd",
- "sqrtsd",
- "addsd",
- "subsd",
- "mulsd",
- "divsd",
- "minsd",
- "maxsd",
- "movsldup",
- "movshdup",
- "movddup",
- "haddps",
- "hsubps",
- "addsubpd",
- "addsubps",
- "cvtsi2ss",
- "cvtsi2sd",
- "cvttsd2si",
- "cvttps2dq",
- "cvtpd2dq",
- "cvtpd2ps",
- "cvtps2dq",
- "cvtsd2si",
- "cvtsd2ss",
- "cvttss2si",
- "cvtss2si",
- "cvtss2sd",
- "cvtdq2pd",
- "lddqu",
- "movzx",
- "movsx",
- "movsxd",
- "sar",
- "sal",
- "shr",
- "shrd",
- "shl",
- "rcr",
- "rcl",
- "ror",
- "rol",
- "inc",
- "dec",
- "hlt",
- "call",
- "callf",
- "jmp",
- "jmpf",
- "push",
- "pop",
- "lea",
- "nop",
- "prefetchnta",
- "prefetch0",
- "prefetch1",
- "prefetch2",
- "xchg",
- "popf",
- "int",
- "into",
- "iret",
- "iretd",
- "iretq",
- "retf",
- "enter",
- "leave",
- "mov",
- "ret",
- "pushf",
- "wait",
- "cbw",
- "cwde",
- "cdqe",
- "cwd",
- "cdq",
- "cqo",
- "lods",
- "stos",
- "lahf",
- "sahf",
- "cmps",
- "scas",
- "movs",
- "test",
- "ins",
- "in",
- "outs",
- "out",
- "imul",
- "jo",
- "jno",
- "jb",
- "jnb",
- "jz",
- "jnz",
- "ja",
- "jna",
- "js",
- "jns",
- "jp",
- "jnp",
- "jl",
- "jge",
- "jle",
- "jg",
- "cmova",
- "cmovb",
- "cmovg",
- "cmovge",
- "cmovl",
- "cmovle",
- "cmovna",
- "cmovnb",
- "cmovno",
- "cmovnp",
- "cmovns",
- "cmovnz",
- "cmovo",
- "cmovp",
- "cmovs",
- "cmovz",
- "div",
- "idiv",
- "mul",
- "neg",
- "not",
- "cmpxchg",
- "seto",
- "setno",
- "setb",
- "setae",
- "setz",
- "setnz",
- "setbe",
- "seta",
- "sets",
- "setns",
- "setp",
- "setnp",
- "setl",
- "setge",
- "setle",
- "setg",
- "cpuid",
- "ud0",
- "ud1",
- "ud2",
- "wbinvd",
- "invd",
- "sysret",
- "clts",
- "syscall",
- "lsl",
- "lar",
- "les",
- "lds",
- "sgdt",
- "sidt",
- "lgdt",
- "lidt",
- "smsw",
- "lmsw",
- "swapgs",
- "rdtscp",
- "invlpg",
- "fxsave",
- "fxrstor",
- "ldmxcsr",
- "stmxcsr",
- "xsave",
- "xrstor",
- "xsaveopt",
- "lfence",
- "mfence",
- "sfence",
- "clflush",
- "clflushopt",
- "clwb",
- "wrmsr",
- "rdtsc",
- "rdmsr",
- "rdpmc",
- "sldt",
- "str",
- "lldt",
- "ltr",
- "verr",
- "verw",
- "cmc",
- "clc",
- "stc",
- "cli",
- "sti",
- "cld",
- "std",
- "jmpe",
- "popcnt",
- "movdqu",
- "movdqa",
- "movq",
- "cmpss",
- "cmpsd",
- "unpcklps",
- "unpcklpd",
- "unpckhps",
- "unpckhpd",
- "pshufhw",
- "pshuflw",
- "movups",
- "movq2dq",
- "movdq2q",
- "rsqrtss",
- "rcpss",
- "andn",
- "bextr",
- "blsi",
- "blsmsk",
- "blsr",
- "vmclear",
- "vmxon",
- "vmcall",
- "vmlaunch",
- "vmresume",
- "vmxoff",
- "pconfig",
- "monitor",
- "mwait",
- "monitorx",
- "mwaitx",
- "clac",
- "stac",
- "encls",
- "enclv",
- "xgetbv",
- "xsetbv",
- "vmfunc",
- "xabort",
- "xbegin",
- "xend",
- "xtest",
- "enclu",
- "rdpkru",
- "wrpkru",
- "rdpru",
- "clzero",
- "rdseed",
- "rdrand",
- "addps",
- "addpd",
- "andnps",
- "andnpd",
- "andps",
- "andpd",
- "bswap",
- "cmppd",
- "cmpps",
- "comisd",
- "comiss",
- "cvtdq2ps",
- "cvtpi2ps",
- "cvtpi2pd",
- "cvtps2pd",
- "cvtps2pi",
- "cvtpd2pi",
- "cvttps2pi",
- "cvttpd2pi",
- "cvttpd2dq",
- "divps",
- "divpd",
- "emms",
- "getsec",
- "lfs",
- "lgs",
- "lss",
- "maskmovq",
- "maskmovdqu",
- "maxps",
- "maxpd",
- "minps",
- "minpd",
- "movaps",
- "movapd",
- "movd",
- "movlps",
- "movlpd",
- "movhps",
- "movhpd",
- "movlhps",
- "movhlps",
- "movupd",
- "movmskps",
- "movmskpd",
- "movnti",
- "movntps",
- "movntpd",
- "extrq",
- "insertq",
- "movntss",
- "movntsd",
- "movntq",
- "movntdq",
- "mulps",
- "mulpd",
- "orps",
- "orpd",
- "packssdw",
- "packsswb",
- "packuswb",
- "paddb",
- "paddd",
- "paddq",
- "paddsb",
- "paddsw",
- "paddusb",
- "paddusw",
- "paddw",
- "pand",
- "pandn",
- "pavgb",
- "pavgw",
- "pcmpeqb",
- "pcmpeqd",
- "pcmpeqw",
- "pcmpgtb",
- "pcmpgtd",
- "pcmpgtw",
- "pinsrw",
- "pmaddwd",
- "pmaxsw",
- "pmaxub",
- "pminsw",
- "pminub",
- "pmovmskb",
- "pmulhuw",
- "pmulhw",
- "pmullw",
- "pmuludq",
- "por",
- "psadbw",
- "pshufw",
- "pshufd",
- "pslld",
- "pslldq",
- "psllq",
- "psllw",
- "psrad",
- "psraw",
- "psrld",
- "psrldq",
- "psrlq",
- "psrlw",
- "psubb",
- "psubd",
- "psubq",
- "psubsb",
- "psubsw",
- "psubusb",
- "psubusw",
- "psubw",
- "punpckhbw",
- "punpckhdq",
- "punpckhwd",
- "punpcklbw",
- "punpckldq",
- "punpcklwd",
- "punpcklqdq",
- "punpckhqdq",
- "pxor",
- "rcpps",
- "rsm",
- "rsqrtps",
- "shld",
- "shufpd",
- "shufps",
- "slhd",
- "sqrtps",
- "sqrtpd",
- "subps",
- "subpd",
- "sysenter",
- "sysexit",
- "ucomisd",
- "ucomiss",
- "vmread",
- "vmwrite",
- "xorps",
- "xorpd",
- "vmovddup",
- "vpshuflw",
- "vpshufhw",
- "vhaddps",
- "vhsubps",
- "vaddsubps",
- "vcvtpd2dq",
- "vlddqu",
- "vcomisd",
- "vcomiss",
- "vucomisd",
- "vucomiss",
- "vaddpd",
- "vaddps",
- "vaddsd",
- "vaddss",
- "vaddsubpd",
- "vaesdec",
- "vaesdeclast",
- "vaesenc",
- "vaesenclast",
- "vaesimc",
- "vaeskeygenassist",
- "vblendpd",
- "vblendps",
- "vblendvpd",
- "vblendvps",
- "vbroadcastf128",
- "vbroadcasti128",
- "vbroadcastsd",
- "vbroadcastss",
- "vcmpsd",
- "vcmpss",
- "vcmppd",
- "vcmpps",
- "vcvtdq2pd",
- "vcvtdq2ps",
- "vcvtpd2ps",
- "vcvtph2ps",
- "vcvtps2dq",
- "vcvtps2pd",
- "vcvtss2sd",
- "vcvtsi2ss",
- "vcvtsi2sd",
- "vcvtsd2si",
- "vcvtsd2ss",
- "vcvtps2ph",
- "vcvtss2si",
- "vcvttpd2dq",
- "vcvttps2dq",
- "vcvttss2si",
- "vcvttsd2si",
- "vdivpd",
- "vdivps",
- "vdivsd",
- "vdivss",
- "vdppd",
- "vdpps",
- "vextractf128",
- "vextracti128",
- "vextractps",
- "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",
- "vgatherdpd",
- "vgatherdps",
- "vgatherqpd",
- "vgatherqps",
- "vhaddpd",
- "vhsubpd",
- "vinsertf128",
- "vinserti128",
- "vinsertps",
- "vmaskmovdqu",
- "vmaskmovpd",
- "vmaskmovps",
- "vmaxpd",
- "vmaxps",
- "vmaxsd",
- "vmaxss",
- "vminpd",
- "vminps",
- "vminsd",
- "vminss",
- "vmovapd",
- "vmovaps",
- "vmovd",
- "vmovdqa",
- "vmovdqu",
- "vmovhlps",
- "vmovhpd",
- "vmovhps",
- "vmovlhps",
- "vmovlpd",
- "vmovlps",
- "vmovmskpd",
- "vmovmskps",
- "vmovntdq",
- "vmovntdqa",
- "vmovntpd",
- "vmovntps",
- "vmovq",
- "vmovss",
- "vmovsd",
- "vmovshdup",
- "vmovsldup",
- "vmovupd",
- "vmovups",
- "vmpsadbw",
- "vmulpd",
- "vmulps",
- "vmulsd",
- "vmulss",
- "vpabsb",
- "vpabsd",
- "vpabsw",
- "vpackssdw",
- "vpackusdw",
- "vpacksswb",
- "vpackuswb",
- "vpaddb",
- "vpaddd",
- "vpaddq",
- "vpaddsb",
- "vpaddsw",
- "vpaddusb",
- "vpaddusw",
- "vpaddw",
- "vpalignr",
- "vandpd",
- "vandps",
- "vorpd",
- "vorps",
- "vandnpd",
- "vandnps",
- "vpand",
- "vpandn",
- "vpavgb",
- "vpavgw",
- "vpblendd",
- "vpblendvb",
- "vpblendw",
- "vpbroadcastb",
- "vpbroadcastd",
- "vpbroadcastq",
- "vpbroadcastw",
- "vpclmulqdq",
- "vpcmpeqb",
- "vpcmpeqd",
- "vpcmpeqq",
- "vpcmpeqw",
- "vpcmpgtb",
- "vpcmpgtd",
- "vpcmpgtq",
- "vpcmpgtw",
- "vpcmpestri",
- "vpcmpestrm",
- "vpcmpistri",
- "vpcmpistrm",
- "vperm2f128",
- "vperm2i128",
- "vpermd",
- "vpermilpd",
- "vpermilps",
- "vpermpd",
- "vpermps",
- "vpermq",
- "vpextrb",
- "vpextrd",
- "vpextrq",
- "vpextrw",
- "vpgatherdd",
- "vpgatherdq",
- "vpgatherqd",
- "vpgatherqq",
- "vphaddd",
- "vphaddsw",
- "vphaddw",
- "vpmaddubsw",
- "vphminposuw",
- "vphsubd",
- "vphsubsw",
- "vphsubw",
- "vpinsrb",
- "vpinsrd",
- "vpinsrq",
- "vpinsrw",
- "vpmaddwd",
- "vpmaskmovd",
- "vpmaskmovq",
- "vpmaxsb",
- "vpmaxsd",
- "vpmaxsw",
- "vpmaxub",
- "vpmaxuw",
- "vpmaxud",
- "vpminsb",
- "vpminsw",
- "vpminsd",
- "vpminub",
- "vpminuw",
- "vpminud",
- "vpmovmskb",
- "vpmovsxbd",
- "vpmovsxbq",
- "vpmovsxbw",
- "vpmovsxdq",
- "vpmovsxwd",
- "vpmovsxwq",
- "vpmovzxbd",
- "vpmovzxbq",
- "vpmovzxbw",
- "vpmovzxdq",
- "vpmovzxwd",
- "vpmovzxwq",
- "vpmuldq",
- "vpmulhrsw",
- "vpmulhuw",
- "vpmulhw",
- "vpmullq",
- "vpmulld",
- "vpmullw",
- "vpmuludq",
- "vpor",
- "vpsadbw",
- "vpshufb",
- "vpshufd",
- "vpsignb",
- "vpsignd",
- "vpsignw",
- "vpslld",
- "vpslldq",
- "vpsllq",
- "vpsllvd",
- "vpsllvq",
- "vpsllw",
- "vpsrad",
- "vpsravd",
- "vpsraw",
- "vpsrld",
- "vpsrldq",
- "vpsrlq",
- "vpsrlvd",
- "vpsrlvq",
- "vpsrlw",
- "vpsubb",
- "vpsubd",
- "vpsubq",
- "vpsubsb",
- "vpsubsw",
- "vpsubusb",
- "vpsubusw",
- "vpsubw",
- "vptest",
- "vpunpckhbw",
- "vpunpckhdq",
- "vpunpckhqdq",
- "vpunpckhwd",
- "vpunpcklbw",
- "vpunpckldq",
- "vpunpcklqdq",
- "vpunpcklwd",
- "vpxor",
- "vrcpps",
- "vroundpd",
- "vroundps",
- "vroundsd",
- "vroundss",
- "vrsqrtps",
- "vrsqrtss",
- "vrcpss",
- "vshufpd",
- "vshufps",
- "vsqrtpd",
- "vsqrtps",
- "vsqrtss",
- "vsqrtsd",
- "vsubpd",
- "vsubps",
- "vsubsd",
- "vsubss",
- "vtestpd",
- "vtestps",
- "vunpckhpd",
- "vunpckhps",
- "vunpcklpd",
- "vunpcklps",
- "vxorpd",
- "vxorps",
- "vzeroupper",
- "vzeroall",
- "vldmxcsr",
- "vstmxcsr",
- "pclmulqdq",
- "aeskeygenassist",
- "aesimc",
- "aesenc",
- "aesenclast",
- "aesdec",
- "aesdeclast",
- "pcmpgtq",
- "pcmpistrm",
- "pcmpistri",
- "pcmpestri",
- "packusdw",
- "pcmpestrm",
- "pcmpeqq",
- "ptest",
- "phminposuw",
- "dpps",
- "dppd",
- "mpsadbw",
- "pmovzxdq",
- "pmovsxdq",
- "pmovzxbd",
- "pmovsxbd",
- "pmovzxwq",
- "pmovsxwq",
- "pmovzxbq",
- "pmovsxbq",
- "pmovsxwd",
- "pmovzxwd",
- "pextrq",
- "pextrd",
- "pextrw",
- "pextrb",
- "pmovsxbw",
- "pmovzxbw",
- "pinsrq",
- "pinsrd",
- "pinsrb",
- "extractps",
- "insertps",
- "roundss",
- "roundsd",
- "roundps",
- "roundpd",
- "pmaxsb",
- "pmaxsd",
- "pmaxuw",
- "pmaxud",
- "pminsd",
- "pminsb",
- "pminud",
- "pminuw",
- "blendw",
- "pblendvb",
- "pblendw",
- "blendvps",
- "blendvpd",
- "blendps",
- "blendpd",
- "pmuldq",
- "movntdqa",
- "pmulld",
- "palignr",
- "psignw",
- "psignd",
- "psignb",
- "pshufb",
- "pmulhrsw",
- "pmaddubsw",
- "pabsd",
- "pabsw",
- "pabsb",
- "phsubsw",
- "phsubw",
- "phsubd",
- "phaddd",
- "phaddsw",
- "phaddw",
- "hsubpd",
- "haddpd",
- "sha1rnds4",
- "sha1nexte",
- "sha1msg1",
- "sha1msg2",
- "sha256rnds2",
- "sha256msg1",
- "sha256msg2",
- "lzcnt",
- "clgi",
- "stgi",
- "skinit",
- "vmload",
- "vmmcall",
- "vmsave",
- "vmrun",
- "invlpga",
- "invlpgb",
- "tlbsync",
- "movbe",
- "adcx",
- "adox",
- "prefetchw",
- "rdpid",
- "cmpxchg8b",
- "cmpxchg16b",
- "vmptrld",
- "vmptrst",
- "bzhi",
- "mulx",
- "shlx",
- "shrx",
- "sarx",
- "pdep",
- "pext",
- "rorx",
- "xrstors",
- "xrstors64",
- "xsavec",
- "xsavec64",
- "xsaves",
- "xsaves64",
- "rdfsbase",
- "rdgsbase",
- "wrfsbase",
- "wrgsbase",
- "crc32",
- "salc",
- "xlat",
-
- "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",
- "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",
- "fxtract",
- "fyl2x",
- "fyl2xp1",
- "loopnz",
- "loopz",
- "loop",
- "jecxz",
- "pusha",
- "popa",
- "bound",
- "arpl",
- "aas",
- "aaa",
- "das",
- "daa",
- "aam",
- "aad",
- "movdir64b",
- "movdiri",
- "aesdec128kl",
- "aesdec256kl",
- "aesdecwide128kl",
- "aesdecwide256kl",
- "aesenc128kl",
- "aesenc256kl",
- "aesencwide128kl",
- "aesencwide256kl",
- "encodekey128",
- "encodekey256",
- "loadiwkey",
-
- // unsure
- "hreset",
-
- // 3dnow
- "femms",
- "pi2fw",
- "pi2fd",
- "pi2iw",
- "pi2id",
- "pmulhrw",
- "pfcmpge",
- "pfmin",
- "pfrcp",
- "pfrsqrt",
- "pfsub",
- "pfadd",
- "pfcmpgt",
- "pfmax",
- "pfrcpit1",
- "pfrsqit1",
- "pfsubr",
- "pfacc",
- "pfcmpeq",
- "pfmul",
- "pfmulhrw",
- "pfrcpit2",
- "pfnacc",
- "pfpnacc",
- "pswapd",
- "pavgusb",
-
- // ENQCMD
- "enqcmd",
- "enqcmds",
-
- // INVPCID,
- "invept",
- "invvpid",
- "invpcid",
-
- // PTWRITE
- "ptwrite",
-
- // GFNI
- "gf2p8affineqb",
- "gf2p8affineinvqb",
- "gf2p8mulb",
-
- // CET
- "wruss",
- "wrss",
- "incssp",
- "saveprevssp",
- "setssbsy",
- "clrssbsy",
- "rstorssp",
- "endbr64",
- "endbr32",
-
- // TDX
- "tdcall",
- "seamret",
- "seamops",
- "seamcall",
-
- // WAITPKG
- "tpause",
- "umonitor",
- "umwait",
-
- // UINTR
- "uiret",
- "testui",
- "clui",
- "stui",
- "senduipi",
-
- // TSXLDTRK
- "xsusldtrk",
- "xresldtrk",
-
- // AVX512F
- "valignd",
- "valignq",
- "vblendmpd",
- "vblendmps",
- "vcompresspd",
- "vcompressps",
- "vcvtpd2udq",
- "vcvttpd2udq",
- "vcvtps2udq",
- "vcvttps2udq",
- "vcvtqq2pd",
- "vcvtqq2ps",
- "vcvtsd2usi",
- "vcvttsd2usi",
- "vcvtss2usi",
- "vcvttss2usi",
- "vcvtudq2pd",
- "vcvtudq2ps",
- "vcvtusi2usd",
- "vcvtusi2uss",
- "vexpandpd",
- "vexpandps",
- "vextractf32x4",
- "vextractf64x4",
- "vextracti32x4",
- "vextracti64x4",
- "vfixupimmpd",
- "vfixupimmps",
- "vfixupimmsd",
- "vfixupimmss",
- "vgetexppd",
- "vgetexpps",
- "vgetexpsd",
- "vgetexpss",
- "vgetmantpd",
- "vgetmantps",
- "vgetmantsd",
- "vgetmantss",
- "vinsertf32x4",
- "vinsertf64x4",
- "vinserti64x4",
- "vmovdqa32",
- "vmovdqa64",
- "vmovdqu32",
- "vmovdqu64",
- "vpblendmd",
- "vpblendmq",
- "vpcmpd",
- "vpcmpud",
- "vpcmpq",
- "vpcmpuq",
- "vpcompressq",
- "vpcompressd",
- "vpermi2d",
- "vpermi2q",
- "vpermi2pd",
- "vpermi2ps",
- "vpermt2d",
- "vpermt2q",
- "vpermt2pd",
- "vpermt2ps",
- "vpmaxsq",
- "vpmaxuq",
- "vpminsq",
- "vpminuq",
- "vpmovsqb",
- "vpmovusqb",
- "vpmovsqw",
- "vpmovusqw",
- "vpmovsqd",
- "vpmovusqd",
- "vpmovsdb",
- "vpmovusdb",
- "vpmovsdw",
- "vpmovusdw",
- "vprold",
- "vprolq",
- "vprolvd",
- "vprolvq",
- "vprord",
- "vprorq",
- "vprorrd",
- "vprorrq",
- "vpscatterdd",
- "vpscatterdq",
- "vpscatterqd",
- "vpscatterqq",
- "vpsraq",
- "vpsravq",
- "vptestnmd",
- "vptestnmq",
- "vpternlogd",
- "vpternlogq",
- "vptestmd",
- "vptestmq",
- "vrcp14pd",
- "vrcp14ps",
- "vrcp14sd",
- "vrcp14ss",
- "vrndscalepd",
- "vrndscaleps",
- "vrndscalesd",
- "vrndscaless",
- "vrsqrt14pd",
- "vrsqrt14ps",
- "vrsqrt14sd",
- "vrsqrt14ss",
- "vscaledpd",
- "vscaledps",
- "vscaledsd",
- "vscaledss",
- "vscatterdd",
- "vscatterdq",
- "vscatterqd",
- "vscatterqq",
- "vshuff32x4",
- "vshuff64x2",
- "vshufi32x4",
- "vshufi64x2",
-
- // AVX512DQ
- "vcvttpd2qq",
- "vcvtpd2qq",
- "vcvttpd2uqq",
- "vcvtpd2uqq",
- "vcvttps2qq",
- "vcvtps2qq",
- "vcvttps2uqq",
- "vcvtps2uqq",
- "vcvtuqq2pd",
- "vcvtuqq2ps",
- "vextractf64x2",
- "vextracti64x2",
- "vfpclasspd",
- "vfpclassps",
- "vfpclasssd",
- "vfpclassss",
- "vinsertf64x2",
- "vinserti64x2",
- "vpmovm2d",
- "vpmovm2q",
- "vpmovb2d",
- "vpmovq2m",
- "vrangepd",
- "vrangeps",
- "vrangesd",
- "vrangess",
- "vreducepd",
- "vreduceps",
- "vreducesd",
- "vreducess",
-
- // AVX512BW
- "vdbpsadbw",
- "vmovdqu8",
- "vmovdqu16",
- "vpblendmb",
- "vpblendmw",
- "vpcmpb",
- "vpcmpub",
- "vpcmpw",
- "vpcmpuw",
- "vpermw",
- "vpermi2b",
- "vpermi2w",
- "vpmovm2b",
- "vpmovm2w",
- "vpmovb2m",
- "vpmovw2m",
- "vpmovswb",
- "vpmovuswb",
- "vpsllvw",
- "vpsravw",
- "vpsrlvw",
- "vptestnmb",
- "vptestnmw",
- "vptestmb",
- "vptestmw",
-
- // AVX512CD
- "vpbroadcastm",
- "vpconflictd",
- "vpconflictq",
- "vplzcntd",
- "vplzcntq",
-
- "kunpckbw",
- "kunpckwd",
- "kunpckdq",
-
- "kaddb",
- "kandb",
- "kandnb",
- "kmovb",
- "knotb",
- "korb",
- "kortestb",
- "kshiftlb",
- "kshiftrb",
- "ktestb",
- "kxnorb",
- "kxorb",
- "kaddw",
- "kandw",
- "kandnw",
- "kmovw",
- "knotw",
- "korw",
- "kortestw",
- "kshiftlw",
- "kshiftrw",
- "ktestw",
- "kxnorw",
- "kxorw",
- "kaddd",
- "kandd",
- "kandnd",
- "kmovd",
- "knotd",
- "kord",
- "kortestd",
- "kshiftld",
- "kshiftrd",
- "ktestd",
- "kxnord",
- "kxord",
- "kaddq",
- "kandq",
- "kandnq",
- "kmovq",
- "knotq",
- "korq",
- "kortestq",
- "kshiftlq",
- "kshiftrq",
- "ktestq",
- "kxnorq",
- "kxorq",
-
- // AVX512ER
- "vexp2pd",
- "vexp2ps",
- "vexp2sd",
- "vexp2ss",
- "vrcp28pd",
- "vrcp28ps",
- "vrcp28sd",
- "vrcp28ss",
- "vrsqrt28pd",
- "vrsqrt28ps",
- "vrsqrt28sd",
- "vrsqrt28ss",
-
- // AVX512PF
- "vgatherpf0dpd",
- "vgatherpf0dps",
- "vgatherpf0qpd",
- "vgatherpf0qps",
- "vgatherpf1dpd",
- "vgatherpf1dps",
- "vgatherpf1qpd",
- "vgatherpf1qps",
- "vscatterpf0dpd",
- "vscatterpf0dps",
- "vscatterpf0qpd",
- "vscatterpf0qps",
- "vscatterpf1dpd",
- "vscatterpf1dps",
- "vscatterpf1qpd",
- "vscatterpf1qps",
-
- // MPX
- "bndmk",
- "bndcl",
- "bndcu",
- "bndcn",
- "bndmov",
- "bndldx",
- "bndstx",
-
-
-
- "vgf2p8affineqb",
- "vgf2p8affineinvqb",
- "vpshrdq",
- "vpshrdd",
- "vpshrdw",
- "vpshldq",
- "vpshldd",
- "vpshldw",
- "vbroadcastf32x8",
- "vbroadcastf64x4",
- "vbroadcastf32x4",
- "vbroadcastf64x2",
- "vbroadcastf32x2",
- "vbroadcasti32x8",
- "vbroadcasti64x4",
- "vbroadcasti32x4",
- "vbroadcasti64x2",
- "vbroadcasti32x2",
- "vextracti32x8",
- "vextractf32x8",
- "vinserti32x8",
- "vinsertf32x8",
- "vinserti32x4",
- "v4fnmaddss",
- "v4fnmaddps",
- "vcvtneps2bf16",
- "v4fmaddss",
- "v4fmaddps",
- "vcvtne2ps2bf16",
- "vp2intersectd",
- "vp2intersectq",
- "vp4dpwssds",
- "vp4dpwssd",
- "vpdpwssds",
- "vpdpwssd",
- "vpdpbusds",
- "vdpbf16ps",
- "vpbroadcastmw2d",
- "vpbroadcastmb2q",
- "vpmovd2m",
- "vpmovqd",
- "vpmovwb",
- "vpmovdb",
- "vpmovdw",
- "vpmovqb",
- "vpmovqw",
- "vgf2p8mulb",
- "vpmadd52huq",
- "vpmadd52luq",
- "vpshufbitqmb",
- "vpermb",
- "vpexpandd",
- "vpexpandq",
- "vpabsq",
- "vprorvd",
- "vprorvq",
- "vpmultishiftqb",
- "vpermt2b",
- "vpermt2w",
- "vpshrdvq",
- "vpshrdvd",
- "vpshrdvw",
- "vpshldvq",
- "vpshldvd",
- "vpshldvw",
- "vpcompressb",
- "vpcompressw",
- "vpexpandb",
- "vpexpandw",
- "vpopcntd",
- "vpopcntq",
- "vpopcntb",
- "vpopcntw",
- "vscalefss",
- "vscalefsd",
- "vscalefps",
- "vscalefpd",
- "vpdpbusd",
- "vcvtusi2sd",
- "vcvtusi2ss",
- "vpxord",
- "vpxorq",
- "vpord",
- "vporq",
- "vpandnd",
- "vpandnq",
- "vpandd",
- "vpandq",
- "psmash",
- "pvalidate",
- "rmpadjust",
- "rmpupdate",
-];
-
impl Opcode {
fn name(&self) -> &'static str {
unsafe {
- MNEMONICS.get_kinda_unchecked(*self as usize)
+ crate::generated::opcode::MNEMONICS.get_kinda_unchecked(*self as usize)
}
}
}
@@ -2523,6 +1053,10 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {
Opcode::VSCATTERDQ |
Opcode::VSCATTERQD |
Opcode::VSCATTERQQ |
+ Opcode::VSCATTERDPS |
+ Opcode::VSCATTERDPD |
+ Opcode::VSCATTERQPS |
+ Opcode::VSCATTERQPD |
Opcode::VPSCATTERDD |
Opcode::VPSCATTERDQ |
Opcode::VPSCATTERQD |
@@ -2711,6 +1245,8 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {
Opcode::VPINSRW |
Opcode::VPMASKMOVD |
Opcode::VPMASKMOVQ |
+ Opcode::VCOMPRESSD |
+ Opcode::VCOMPRESSQ |
Opcode::VCOMPRESSPD |
Opcode::VCOMPRESSPS |
Opcode::VPCOMPRESSQ |
diff --git a/src/protected_mode/mod.rs b/src/protected_mode/mod.rs
index 2993968..2adf0c8 100644
--- a/src/protected_mode/mod.rs
+++ b/src/protected_mode/mod.rs
@@ -11,6 +11,7 @@ pub use self::display::{DisplayStyle, InstructionDisplayer};
use core::cmp::PartialEq;
use crate::safer_unchecked::unreachable_kinda_unchecked as unreachable_unchecked;
+pub use crate::generated::opcode::protected_mode::Opcode as Opcode;
use yaxpeax_arch::{AddressDiff, Decoder, Reader, LengthedInstruction};
use yaxpeax_arch::annotation::{AnnotatingDecoder, DescriptionSink, NullSink};
@@ -997,1500 +998,6 @@ const XSAVE: [Opcode; 10] = [
Opcode::XSETBV,
];
-#[allow(non_camel_case_types)]
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[non_exhaustive]
-pub enum Opcode {
- Invalid,
- ADD,
- OR,
- ADC,
- SBB,
- AND,
- XOR,
- SUB,
- CMP,
- XADD,
- BT,
- BTS,
- BTC,
- BTR,
- BSF,
- BSR,
- TZCNT,
- MOVSS,
- ADDSS,
- SUBSS,
- MULSS,
- DIVSS,
- MINSS,
- MAXSS,
- SQRTSS,
- MOVSD,
- SQRTSD,
- ADDSD,
- SUBSD,
- MULSD,
- DIVSD,
- MINSD,
- MAXSD,
- MOVSLDUP,
- MOVSHDUP,
- MOVDDUP,
- HADDPS,
- HSUBPS,
- ADDSUBPD,
- ADDSUBPS,
- CVTSI2SS,
- CVTSI2SD,
- CVTTSD2SI,
- CVTTPS2DQ,
- CVTPD2DQ,
- CVTPD2PS,
- CVTPS2DQ,
- CVTSD2SI,
- CVTSD2SS,
- CVTTSS2SI,
- CVTSS2SI,
- CVTSS2SD,
- CVTDQ2PD,
- LDDQU,
- MOVZX,
- MOVSX,
- MOVSXD,
- SAR,
- SAL,
- SHR,
- SHRD,
- SHL,
- RCR,
- RCL,
- ROR,
- ROL,
- INC,
- DEC,
- HLT,
- CALL,
- CALLF,
- JMP,
- JMPF,
- PUSH,
- POP,
- LEA,
- NOP,
- PREFETCHNTA,
- PREFETCH0,
- PREFETCH1,
- PREFETCH2,
- XCHG,
- POPF,
- INT,
- INTO,
- IRET,
- IRETD,
- IRETQ,
- RETF,
- ENTER,
- LEAVE,
- MOV,
- RETURN,
- PUSHF,
- WAIT,
- CBW,
- CWDE,
- CDQE,
- CWD,
- CDQ,
- CQO,
- LODS,
- STOS,
- LAHF,
- SAHF,
- CMPS,
- SCAS,
- MOVS,
- TEST,
- INS,
- IN,
- OUTS,
- OUT,
- IMUL,
- JO,
- JNO,
- JB,
- JNB,
- JZ,
- JNZ,
- JA,
- JNA,
- JS,
- JNS,
- JP,
- JNP,
- JL,
- JGE,
- JLE,
- JG,
- CMOVA,
- CMOVB,
- CMOVG,
- CMOVGE,
- CMOVL,
- CMOVLE,
- CMOVNA,
- CMOVNB,
- CMOVNO,
- CMOVNP,
- CMOVNS,
- CMOVNZ,
- CMOVO,
- CMOVP,
- CMOVS,
- CMOVZ,
- DIV,
- IDIV,
- MUL,
- NEG,
- NOT,
- CMPXCHG,
- SETO,
- SETNO,
- SETB,
- SETAE,
- SETZ,
- SETNZ,
- SETBE,
- SETA,
- SETS,
- SETNS,
- SETP,
- SETNP,
- SETL,
- SETGE,
- SETLE,
- SETG,
- CPUID,
- UD0,
- UD1,
- UD2,
- WBINVD,
- INVD,
- SYSRET,
- CLTS,
- SYSCALL,
- LSL,
- LAR,
- LES,
- LDS,
- SGDT,
- SIDT,
- LGDT,
- LIDT,
- SMSW,
- LMSW,
- SWAPGS,
- RDTSCP,
- INVLPG,
- FXSAVE,
- FXRSTOR,
- LDMXCSR,
- STMXCSR,
- XSAVE,
- XRSTOR,
- XSAVEOPT,
- LFENCE,
- MFENCE,
- SFENCE,
- CLFLUSH,
- CLFLUSHOPT,
- CLWB,
- WRMSR,
- RDTSC,
- RDMSR,
- RDPMC,
- SLDT,
- STR,
- LLDT,
- LTR,
- VERR,
- VERW,
- CMC,
- CLC,
- STC,
- CLI,
- STI,
- CLD,
- STD,
- JMPE,
- POPCNT,
- MOVDQU,
- MOVDQA,
- MOVQ,
- CMPSS,
- CMPSD,
- UNPCKLPS,
- UNPCKLPD,
- UNPCKHPS,
- UNPCKHPD,
- PSHUFHW,
- PSHUFLW,
- MOVUPS,
- MOVQ2DQ,
- MOVDQ2Q,
- RSQRTSS,
- RCPSS,
-
- ANDN,
- BEXTR,
- BLSI,
- BLSMSK,
- BLSR,
- VMCLEAR,
- VMXON,
- VMCALL,
- VMLAUNCH,
- VMRESUME,
- VMXOFF,
- PCONFIG,
- MONITOR,
- MWAIT,
- MONITORX,
- MWAITX,
- CLAC,
- STAC,
- ENCLS,
- ENCLV,
- XGETBV,
- XSETBV,
- VMFUNC,
- XABORT,
- XBEGIN,
- XEND,
- XTEST,
- ENCLU,
- RDPKRU,
- WRPKRU,
-
- RDPRU,
- CLZERO,
-
- RDSEED,
- RDRAND,
-
- ADDPS,
- ADDPD,
- ANDNPS,
- ANDNPD,
- ANDPS,
- ANDPD,
- BSWAP,
- CMPPD,
- CMPPS,
- COMISD,
- COMISS,
- CVTDQ2PS,
- CVTPI2PS,
- CVTPI2PD,
- CVTPS2PD,
- CVTPS2PI,
- CVTPD2PI,
- CVTTPS2PI,
- CVTTPD2PI,
- CVTTPD2DQ,
- DIVPS,
- DIVPD,
- EMMS,
- GETSEC,
- LFS,
- LGS,
- LSS,
- MASKMOVQ,
- MASKMOVDQU,
- MAXPS,
- MAXPD,
- MINPS,
- MINPD,
- MOVAPS,
- MOVAPD,
- MOVD,
- MOVLPS,
- MOVLPD,
- MOVHPS,
- MOVHPD,
- MOVLHPS,
- MOVHLPS,
- MOVUPD,
- MOVMSKPS,
- MOVMSKPD,
- MOVNTI,
- MOVNTPS,
- MOVNTPD,
- EXTRQ,
- INSERTQ,
- MOVNTSS,
- MOVNTSD,
- MOVNTQ,
- MOVNTDQ,
- MULPS,
- MULPD,
- ORPS,
- ORPD,
- PACKSSDW,
- PACKSSWB,
- PACKUSWB,
- PADDB,
- PADDD,
- PADDQ,
- PADDSB,
- PADDSW,
- PADDUSB,
- PADDUSW,
- PADDW,
- PAND,
- PANDN,
- PAVGB,
- PAVGW,
- PCMPEQB,
- PCMPEQD,
- PCMPEQW,
- PCMPGTB,
- PCMPGTD,
- PCMPGTW,
- PINSRW,
- PMADDWD,
- PMAXSW,
- PMAXUB,
- PMINSW,
- PMINUB,
- PMOVMSKB,
- PMULHUW,
- PMULHW,
- PMULLW,
- PMULUDQ,
- POR,
- PSADBW,
- PSHUFW,
- PSHUFD,
- PSLLD,
- PSLLDQ,
- PSLLQ,
- PSLLW,
- PSRAD,
- PSRAW,
- PSRLD,
- PSRLDQ,
- PSRLQ,
- PSRLW,
- PSUBB,
- PSUBD,
- PSUBQ,
- PSUBSB,
- PSUBSW,
- PSUBUSB,
- PSUBUSW,
- PSUBW,
- PUNPCKHBW,
- PUNPCKHDQ,
- PUNPCKHWD,
- PUNPCKLBW,
- PUNPCKLDQ,
- PUNPCKLWD,
- PUNPCKLQDQ,
- PUNPCKHQDQ,
- PXOR,
- RCPPS,
- RSM,
- RSQRTPS,
- SHLD,
- SHUFPD,
- SHUFPS,
- SLHD,
- SQRTPS,
- SQRTPD,
- SUBPS,
- SUBPD,
- SYSENTER,
- SYSEXIT,
- UCOMISD,
- UCOMISS,
- VMREAD,
- VMWRITE,
- XORPS,
- XORPD,
-
- VMOVDDUP,
- VPSHUFLW,
- VPSHUFHW,
- VHADDPS,
- VHSUBPS,
- VADDSUBPS,
- VCVTPD2DQ,
- VLDDQU,
-
- VCOMISD,
- VCOMISS,
- VUCOMISD,
- VUCOMISS,
- VADDPD,
- VADDPS,
- VADDSD,
- VADDSS,
- VADDSUBPD,
- VAESDEC,
- VAESDECLAST,
- VAESENC,
- VAESENCLAST,
- VAESIMC,
- VAESKEYGENASSIST,
- VBLENDPD,
- VBLENDPS,
- VBLENDVPD,
- VBLENDVPS,
- VBROADCASTF128,
- VBROADCASTI128,
- VBROADCASTSD,
- VBROADCASTSS,
- VCMPSD,
- VCMPSS,
- VCMPPD,
- VCMPPS,
- VCVTDQ2PD,
- VCVTDQ2PS,
- VCVTPD2PS,
- VCVTPH2PS,
- VCVTPS2DQ,
- VCVTPS2PD,
- VCVTSS2SD,
- VCVTSI2SS,
- VCVTSI2SD,
- VCVTSD2SI,
- VCVTSD2SS,
- VCVTPS2PH,
- VCVTSS2SI,
- VCVTTPD2DQ,
- VCVTTPS2DQ,
- VCVTTSS2SI,
- VCVTTSD2SI,
- VDIVPD,
- VDIVPS,
- VDIVSD,
- VDIVSS,
- VDPPD,
- VDPPS,
- VEXTRACTF128,
- VEXTRACTI128,
- VEXTRACTPS,
- 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,
- VGATHERDPD,
- VGATHERDPS,
- VGATHERQPD,
- VGATHERQPS,
- VHADDPD,
- VHSUBPD,
- VINSERTF128,
- VINSERTI128,
- VINSERTPS,
- VMASKMOVDQU,
- VMASKMOVPD,
- VMASKMOVPS,
- VMAXPD,
- VMAXPS,
- VMAXSD,
- VMAXSS,
- VMINPD,
- VMINPS,
- VMINSD,
- VMINSS,
- VMOVAPD,
- VMOVAPS,
- VMOVD,
- VMOVDQA,
- VMOVDQU,
- VMOVHLPS,
- VMOVHPD,
- VMOVHPS,
- VMOVLHPS,
- VMOVLPD,
- VMOVLPS,
- VMOVMSKPD,
- VMOVMSKPS,
- VMOVNTDQ,
- VMOVNTDQA,
- VMOVNTPD,
- VMOVNTPS,
- VMOVQ,
- VMOVSS,
- VMOVSD,
- VMOVSHDUP,
- VMOVSLDUP,
- VMOVUPD,
- VMOVUPS,
- VMPSADBW,
- VMULPD,
- VMULPS,
- VMULSD,
- VMULSS,
- VPABSB,
- VPABSD,
- VPABSW,
- VPACKSSDW,
- VPACKUSDW,
- VPACKSSWB,
- VPACKUSWB,
- VPADDB,
- VPADDD,
- VPADDQ,
- VPADDSB,
- VPADDSW,
- VPADDUSB,
- VPADDUSW,
- VPADDW,
- VPALIGNR,
- VANDPD,
- VANDPS,
- VORPD,
- VORPS,
- VANDNPD,
- VANDNPS,
- VPAND,
- VPANDN,
- VPAVGB,
- VPAVGW,
- VPBLENDD,
- VPBLENDVB,
- VPBLENDW,
- VPBROADCASTB,
- VPBROADCASTD,
- VPBROADCASTQ,
- VPBROADCASTW,
- VPCLMULQDQ,
- VPCMPEQB,
- VPCMPEQD,
- VPCMPEQQ,
- VPCMPEQW,
- VPCMPGTB,
- VPCMPGTD,
- VPCMPGTQ,
- VPCMPGTW,
- VPCMPESTRI,
- VPCMPESTRM,
- VPCMPISTRI,
- VPCMPISTRM,
- VPERM2F128,
- VPERM2I128,
- VPERMD,
- VPERMILPD,
- VPERMILPS,
- VPERMPD,
- VPERMPS,
- VPERMQ,
- VPEXTRB,
- VPEXTRD,
- VPEXTRQ,
- VPEXTRW,
- VPGATHERDD,
- VPGATHERDQ,
- VPGATHERQD,
- VPGATHERQQ,
- VPHADDD,
- VPHADDSW,
- VPHADDW,
- VPMADDUBSW,
- VPHMINPOSUW,
- VPHSUBD,
- VPHSUBSW,
- VPHSUBW,
- VPINSRB,
- VPINSRD,
- VPINSRQ,
- VPINSRW,
- VPMADDWD,
- VPMASKMOVD,
- VPMASKMOVQ,
- VPMAXSB,
- VPMAXSD,
- VPMAXSW,
- VPMAXUB,
- VPMAXUW,
- VPMAXUD,
- VPMINSB,
- VPMINSW,
- VPMINSD,
- VPMINUB,
- VPMINUW,
- VPMINUD,
- VPMOVMSKB,
- VPMOVSXBD,
- VPMOVSXBQ,
- VPMOVSXBW,
- VPMOVSXDQ,
- VPMOVSXWD,
- VPMOVSXWQ,
- VPMOVZXBD,
- VPMOVZXBQ,
- VPMOVZXBW,
- VPMOVZXDQ,
- VPMOVZXWD,
- VPMOVZXWQ,
- VPMULDQ,
- VPMULHRSW,
- VPMULHUW,
- VPMULHW,
- VPMULLQ,
- VPMULLD,
- VPMULLW,
- VPMULUDQ,
- VPOR,
- VPSADBW,
- VPSHUFB,
- VPSHUFD,
- VPSIGNB,
- VPSIGND,
- VPSIGNW,
- VPSLLD,
- VPSLLDQ,
- VPSLLQ,
- VPSLLVD,
- VPSLLVQ,
- VPSLLW,
- VPSRAD,
- VPSRAVD,
- VPSRAW,
- VPSRLD,
- VPSRLDQ,
- VPSRLQ,
- VPSRLVD,
- VPSRLVQ,
- VPSRLW,
- VPSUBB,
- VPSUBD,
- VPSUBQ,
- VPSUBSB,
- VPSUBSW,
- VPSUBUSB,
- VPSUBUSW,
- VPSUBW,
- VPTEST,
- VPUNPCKHBW,
- VPUNPCKHDQ,
- VPUNPCKHQDQ,
- VPUNPCKHWD,
- VPUNPCKLBW,
- VPUNPCKLDQ,
- VPUNPCKLQDQ,
- VPUNPCKLWD,
- VPXOR,
- VRCPPS,
- VROUNDPD,
- VROUNDPS,
- VROUNDSD,
- VROUNDSS,
- VRSQRTPS,
- VRSQRTSS,
- VRCPSS,
- VSHUFPD,
- VSHUFPS,
- VSQRTPD,
- VSQRTPS,
- VSQRTSS,
- VSQRTSD,
- VSUBPD,
- VSUBPS,
- VSUBSD,
- VSUBSS,
- VTESTPD,
- VTESTPS,
- VUNPCKHPD,
- VUNPCKHPS,
- VUNPCKLPD,
- VUNPCKLPS,
- VXORPD,
- VXORPS,
- VZEROUPPER,
- VZEROALL,
- VLDMXCSR,
- VSTMXCSR,
-
- PCLMULQDQ,
- AESKEYGENASSIST,
- AESIMC,
- AESENC,
- AESENCLAST,
- AESDEC,
- AESDECLAST,
- PCMPGTQ,
- PCMPISTRM,
- PCMPISTRI,
- PCMPESTRI,
- PACKUSDW,
- PCMPESTRM,
- PCMPEQQ,
- PTEST,
- PHMINPOSUW,
- DPPS,
- DPPD,
- MPSADBW,
- PMOVZXDQ,
- PMOVSXDQ,
- PMOVZXBD,
- PMOVSXBD,
- PMOVZXWQ,
- PMOVSXWQ,
- PMOVZXBQ,
- PMOVSXBQ,
- PMOVSXWD,
- PMOVZXWD,
- PEXTRQ,
- PEXTRD,
- PEXTRW,
- PEXTRB,
- PMOVSXBW,
- PMOVZXBW,
- PINSRQ,
- PINSRD,
- PINSRB,
- EXTRACTPS,
- INSERTPS,
- ROUNDSS,
- ROUNDSD,
- ROUNDPS,
- ROUNDPD,
- PMAXSB,
- PMAXSD,
- PMAXUW,
- PMAXUD,
- PMINSD,
- PMINSB,
- PMINUD,
- PMINUW,
- BLENDW,
- PBLENDVB,
- PBLENDW,
- BLENDVPS,
- BLENDVPD,
- BLENDPS,
- BLENDPD,
- PMULDQ,
- MOVNTDQA,
- PMULLD,
- PALIGNR,
- PSIGNW,
- PSIGND,
- PSIGNB,
- PSHUFB,
- PMULHRSW,
- PMADDUBSW,
- PABSD,
- PABSW,
- PABSB,
- PHSUBSW,
- PHSUBW,
- PHSUBD,
- PHADDD,
- PHADDSW,
- PHADDW,
- HSUBPD,
- HADDPD,
-
- SHA1RNDS4,
- SHA1NEXTE,
- SHA1MSG1,
- SHA1MSG2,
- SHA256RNDS2,
- SHA256MSG1,
- SHA256MSG2,
-
- LZCNT,
- CLGI,
- STGI,
- SKINIT,
- VMLOAD,
- VMMCALL,
- VMSAVE,
- VMRUN,
- INVLPGA,
- INVLPGB,
- TLBSYNC,
-
- MOVBE,
-
- ADCX,
- ADOX,
-
- PREFETCHW,
-
- RDPID,
- CMPXCHG8B,
- CMPXCHG16B,
- VMPTRLD,
- VMPTRST,
-
- BZHI,
- MULX,
- SHLX,
- SHRX,
- SARX,
- PDEP,
- PEXT,
- RORX,
- XRSTORS,
- XRSTORS64,
- XSAVEC,
- XSAVEC64,
- XSAVES,
- XSAVES64,
-
- RDFSBASE,
- RDGSBASE,
- WRFSBASE,
- WRGSBASE,
-
- CRC32,
- SALC,
- XLAT,
-
- 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,
- 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,
- FXTRACT,
- FYL2X,
- FYL2XP1,
-
- LOOPNZ,
- LOOPZ,
- LOOP,
- JECXZ,
-
- PUSHA,
- POPA,
- BOUND,
- ARPL,
- AAS,
- AAA,
- DAS,
- DAA,
- AAM,
- AAD,
-
- // started shipping in Tremont, 2020 sept 23
- MOVDIR64B,
- MOVDIRI,
-
- // started shipping in Tiger Lake, 2020 sept 2
- AESDEC128KL,
- AESDEC256KL,
- AESDECWIDE128KL,
- AESDECWIDE256KL,
- AESENC128KL,
- AESENC256KL,
- AESENCWIDE128KL,
- AESENCWIDE256KL,
- ENCODEKEY128,
- ENCODEKEY256,
- LOADIWKEY,
-
- // unsure
- HRESET,
-
- // 3dnow
- FEMMS,
- PI2FW,
- PI2FD,
- PF2IW,
- PF2ID,
- PMULHRW,
- PFCMPGE,
- PFMIN,
- PFRCP,
- PFRSQRT,
- PFSUB,
- PFADD,
- PFCMPGT,
- PFMAX,
- PFRCPIT1,
- PFRSQIT1,
- PFSUBR,
- PFACC,
- PFCMPEQ,
- PFMUL,
- PFMULHRW,
- PFRCPIT2,
- PFNACC,
- PFPNACC,
- PSWAPD,
- PAVGUSB,
-
- // ENQCMD
- ENQCMD,
- ENQCMDS,
-
- // INVPCID
- INVEPT,
- INVVPID,
- INVPCID,
-
- // PTWRITE
- PTWRITE,
-
- // GFNI
- GF2P8AFFINEQB,
- GF2P8AFFINEINVQB,
- GF2P8MULB,
-
- // CET
- WRUSS,
- WRSS,
- INCSSP,
- SAVEPREVSSP,
- SETSSBSY,
- CLRSSBSY,
- RSTORSSP,
- ENDBR64,
- ENDBR32,
-
- // TDX
- TDCALL,
- SEAMRET,
- SEAMOPS,
- SEAMCALL,
-
- // WAITPKG
- TPAUSE,
- UMONITOR,
- UMWAIT,
-
- // UINTR
- UIRET,
- TESTUI,
- CLUI,
- STUI,
- SENDUIPI,
-
- // TSXLDTRK
- XSUSLDTRK,
- XRESLDTRK,
-
- // AVX512F
- VALIGND,
- VALIGNQ,
- VBLENDMPD,
- VBLENDMPS,
- VCOMPRESSPD,
- VCOMPRESSPS,
- VCVTPD2UDQ,
- VCVTTPD2UDQ,
- VCVTPS2UDQ,
- VCVTTPS2UDQ,
- VCVTQQ2PD,
- VCVTQQ2PS,
- VCVTSD2USI,
- VCVTTSD2USI,
- VCVTSS2USI,
- VCVTTSS2USI,
- VCVTUDQ2PD,
- VCVTUDQ2PS,
- VCVTUSI2USD,
- VCVTUSI2USS,
- VEXPANDPD,
- VEXPANDPS,
- VEXTRACTF32X4,
- VEXTRACTF64X4,
- VEXTRACTI32X4,
- VEXTRACTI64X4,
- VFIXUPIMMPD,
- VFIXUPIMMPS,
- VFIXUPIMMSD,
- VFIXUPIMMSS,
- VGETEXPPD,
- VGETEXPPS,
- VGETEXPSD,
- VGETEXPSS,
- VGETMANTPD,
- VGETMANTPS,
- VGETMANTSD,
- VGETMANTSS,
- VINSERTF32X4,
- VINSERTF64X4,
- VINSERTI64X4,
- VMOVDQA32,
- VMOVDQA64,
- VMOVDQU32,
- VMOVDQU64,
- VPBLENDMD,
- VPBLENDMQ,
- VPCMPD,
- VPCMPUD,
- VPCMPQ,
- VPCMPUQ,
- VPCOMPRESSQ,
- VPCOMPRESSD,
- VPERMI2D,
- VPERMI2Q,
- VPERMI2PD,
- VPERMI2PS,
- VPERMT2D,
- VPERMT2Q,
- VPERMT2PD,
- VPERMT2PS,
- VPMAXSQ,
- VPMAXUQ,
- VPMINSQ,
- VPMINUQ,
- VPMOVSQB,
- VPMOVUSQB,
- VPMOVSQW,
- VPMOVUSQW,
- VPMOVSQD,
- VPMOVUSQD,
- VPMOVSDB,
- VPMOVUSDB,
- VPMOVSDW,
- VPMOVUSDW,
- VPROLD,
- VPROLQ,
- VPROLVD,
- VPROLVQ,
- VPRORD,
- VPRORQ,
- VPRORRD,
- VPRORRQ,
- VPSCATTERDD,
- VPSCATTERDQ,
- VPSCATTERQD,
- VPSCATTERQQ,
- VPSRAQ,
- VPSRAVQ,
- VPTESTNMD,
- VPTESTNMQ,
- VPTERNLOGD,
- VPTERNLOGQ,
- VPTESTMD,
- VPTESTMQ,
- VRCP14PD,
- VRCP14PS,
- VRCP14SD,
- VRCP14SS,
- VRNDSCALEPD,
- VRNDSCALEPS,
- VRNDSCALESD,
- VRNDSCALESS,
- VRSQRT14PD,
- VRSQRT14PS,
- VRSQRT14SD,
- VRSQRT14SS,
- VSCALEDPD,
- VSCALEDPS,
- VSCALEDSD,
- VSCALEDSS,
- VSCATTERDD,
- VSCATTERDQ,
- VSCATTERQD,
- VSCATTERQQ,
- VSHUFF32X4,
- VSHUFF64X2,
- VSHUFI32X4,
- VSHUFI64X2,
-
- // AVX512DQ
- VCVTTPD2QQ,
- VCVTPD2QQ,
- VCVTTPD2UQQ,
- VCVTPD2UQQ,
- VCVTTPS2QQ,
- VCVTPS2QQ,
- VCVTTPS2UQQ,
- VCVTPS2UQQ,
- VCVTUQQ2PD,
- VCVTUQQ2PS,
- VEXTRACTF64X2,
- VEXTRACTI64X2,
- VFPCLASSPD,
- VFPCLASSPS,
- VFPCLASSSD,
- VFPCLASSSS,
- VINSERTF64X2,
- VINSERTI64X2,
- VPMOVM2D,
- VPMOVM2Q,
- VPMOVB2D,
- VPMOVQ2M,
- VRANGEPD,
- VRANGEPS,
- VRANGESD,
- VRANGESS,
- VREDUCEPD,
- VREDUCEPS,
- VREDUCESD,
- VREDUCESS,
-
- // AVX512BW
- VDBPSADBW,
- VMOVDQU8,
- VMOVDQU16,
- VPBLENDMB,
- VPBLENDMW,
- VPCMPB,
- VPCMPUB,
- VPCMPW,
- VPCMPUW,
- VPERMW,
- VPERMI2B,
- VPERMI2W,
- VPMOVM2B,
- VPMOVM2W,
- VPMOVB2M,
- VPMOVW2M,
- VPMOVSWB,
- VPMOVUSWB,
- VPSLLVW,
- VPSRAVW,
- VPSRLVW,
- VPTESTNMB,
- VPTESTNMW,
- VPTESTMB,
- VPTESTMW,
-
- // AVX512CD
- VPBROADCASTM,
- VPCONFLICTD,
- VPCONFLICTQ,
- VPLZCNTD,
- VPLZCNTQ,
-
- KUNPCKBW,
- KUNPCKWD,
- KUNPCKDQ,
-
- KADDB,
- KANDB,
- KANDNB,
- KMOVB,
- KNOTB,
- KORB,
- KORTESTB,
- KSHIFTLB,
- KSHIFTRB,
- KTESTB,
- KXNORB,
- KXORB,
- KADDW,
- KANDW,
- KANDNW,
- KMOVW,
- KNOTW,
- KORW,
- KORTESTW,
- KSHIFTLW,
- KSHIFTRW,
- KTESTW,
- KXNORW,
- KXORW,
- KADDD,
- KANDD,
- KANDND,
- KMOVD,
- KNOTD,
- KORD,
- KORTESTD,
- KSHIFTLD,
- KSHIFTRD,
- KTESTD,
- KXNORD,
- KXORD,
- KADDQ,
- KANDQ,
- KANDNQ,
- KMOVQ,
- KNOTQ,
- KORQ,
- KORTESTQ,
- KSHIFTLQ,
- KSHIFTRQ,
- KTESTQ,
- KXNORQ,
- KXORQ,
-
- // AVX512ER
- VEXP2PD,
- VEXP2PS,
- VEXP2SD,
- VEXP2SS,
- VRCP28PD,
- VRCP28PS,
- VRCP28SD,
- VRCP28SS,
- VRSQRT28PD,
- VRSQRT28PS,
- VRSQRT28SD,
- VRSQRT28SS,
-
- // AVX512PF
- VGATHERPF0DPD,
- VGATHERPF0DPS,
- VGATHERPF0QPD,
- VGATHERPF0QPS,
- VGATHERPF1DPD,
- VGATHERPF1DPS,
- VGATHERPF1QPD,
- VGATHERPF1QPS,
- VSCATTERPF0DPD,
- VSCATTERPF0DPS,
- VSCATTERPF0QPD,
- VSCATTERPF0QPS,
- VSCATTERPF1DPD,
- VSCATTERPF1DPS,
- VSCATTERPF1QPD,
- VSCATTERPF1QPS,
-
- // MPX
- BNDMK,
- BNDCL,
- BNDCU,
- BNDCN,
- BNDMOV,
- BNDLDX,
- BNDSTX,
-
- VGF2P8AFFINEQB,
- VGF2P8AFFINEINVQB,
- VPSHRDQ,
- VPSHRDD,
- VPSHRDW,
- VPSHLDQ,
- VPSHLDD,
- VPSHLDW,
- VBROADCASTF32X8,
- VBROADCASTF64X4,
- VBROADCASTF32X4,
- VBROADCASTF64X2,
- VBROADCASTF32X2,
- VBROADCASTI32X8,
- VBROADCASTI64X4,
- VBROADCASTI32X4,
- VBROADCASTI64X2,
- VBROADCASTI32X2,
- VEXTRACTI32X8,
- VEXTRACTF32X8,
- VINSERTI32X8,
- VINSERTF32X8,
- VINSERTI32X4,
- V4FNMADDSS,
- V4FNMADDPS,
- VCVTNEPS2BF16,
- V4FMADDSS,
- V4FMADDPS,
- VCVTNE2PS2BF16,
- VP2INTERSECTD,
- VP2INTERSECTQ,
- VP4DPWSSDS,
- VP4DPWSSD,
- VPDPWSSDS,
- VPDPWSSD,
- VPDPBUSDS,
- VDPBF16PS,
- VPBROADCASTMW2D,
- VPBROADCASTMB2Q,
- VPMOVD2M,
- VPMOVQD,
- VPMOVWB,
- VPMOVDB,
- VPMOVDW,
- VPMOVQB,
- VPMOVQW,
- VGF2P8MULB,
- VPMADD52HUQ,
- VPMADD52LUQ,
- VPSHUFBITQMB,
- VPERMB,
- VPEXPANDD,
- VPEXPANDQ,
- VPABSQ,
- VPRORVD,
- VPRORVQ,
- VPMULTISHIFTQB,
- VPERMT2B,
- VPERMT2W,
- VPSHRDVQ,
- VPSHRDVD,
- VPSHRDVW,
- VPSHLDVQ,
- VPSHLDVD,
- VPSHLDVW,
- VPCOMPRESSB,
- VPCOMPRESSW,
- VPEXPANDB,
- VPEXPANDW,
- VPOPCNTD,
- VPOPCNTQ,
- VPOPCNTB,
- VPOPCNTW,
- VSCALEFSS,
- VSCALEFSD,
- VSCALEFPS,
- VSCALEFPD,
- VPDPBUSD,
- VCVTUSI2SD,
- VCVTUSI2SS,
- VPXORD,
- VPXORQ,
- VPORD,
- VPORQ,
- VPANDND,
- VPANDNQ,
- VPANDD,
- VPANDQ,
-
- PSMASH,
- PVALIDATE,
- RMPADJUST,
- RMPUPDATE,
-}
-
impl PartialEq for Instruction {
fn eq(&self, other: &Self) -> bool {
if self.prefixes != other.prefixes {
@@ -2544,7 +1051,7 @@ pub struct Instruction {
operands: [OperandSpec; 4],
imm: u32,
disp: u32,
- opcode: Opcode,
+ pub(crate) opcode: Opcode,
mem_size: u8,
}
@@ -3431,666 +1938,6 @@ impl InstDecoder {
self.flags |= 1 << 63;
self
}
-
- /// Optionally reject or reinterpret instruction according to the decoder's
- /// declared extensions.
- fn revise_instruction(&self, inst: &mut Instruction) -> Result<(), DecodeError> {
- if inst.prefixes.evex().is_some() {
- if !self.avx512() {
- return Err(DecodeError::InvalidOpcode);
- } else {
- return Ok(());
- }
- }
- match inst.opcode {
- Opcode::TZCNT => {
- if !self.bmi1() {
- // tzcnt is only supported if bmi1 is enabled. without bmi1, this decodes as
- // bsf.
- inst.opcode = Opcode::BSF;
- }
- }
- Opcode::LDDQU |
- Opcode::ADDSUBPS |
- Opcode::ADDSUBPD |
- Opcode::HADDPS |
- Opcode::HSUBPS |
- Opcode::HADDPD |
- Opcode::HSUBPD |
- Opcode::MOVSHDUP |
- Opcode::MOVSLDUP |
- Opcode::MOVDDUP |
- Opcode::MONITOR |
- Opcode::MWAIT => {
- // via Intel section 5.7, SSE3 Instructions
- if !self.sse3() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PHADDW |
- Opcode::PHADDSW |
- Opcode::PHADDD |
- Opcode::PHSUBW |
- Opcode::PHSUBSW |
- Opcode::PHSUBD |
- Opcode::PABSB |
- Opcode::PABSW |
- Opcode::PABSD |
- Opcode::PMADDUBSW |
- Opcode::PMULHRSW |
- Opcode::PSHUFB |
- Opcode::PSIGNB |
- Opcode::PSIGNW |
- Opcode::PSIGND |
- Opcode::PALIGNR => {
- // via Intel section 5.8, SSSE3 Instructions
- if !self.ssse3() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PMULLD |
- Opcode::PMULDQ |
- Opcode::MOVNTDQA |
- Opcode::BLENDPD |
- Opcode::BLENDPS |
- Opcode::BLENDVPD |
- Opcode::BLENDVPS |
- Opcode::PBLENDVB |
- Opcode::BLENDW |
- Opcode::PMINUW |
- Opcode::PMINUD |
- Opcode::PMINSB |
- Opcode::PMINSD |
- Opcode::PMAXUW |
- Opcode::PMAXUD |
- Opcode::PMAXSB |
- Opcode::PMAXSD |
- Opcode::ROUNDPS |
- Opcode::ROUNDPD |
- Opcode::ROUNDSS |
- Opcode::ROUNDSD |
- Opcode::PBLENDW |
- Opcode::EXTRACTPS |
- Opcode::INSERTPS |
- Opcode::PINSRB |
- Opcode::PINSRD |
- Opcode::PINSRQ |
- Opcode::PMOVSXBW |
- Opcode::PMOVZXBW |
- Opcode::PMOVSXBD |
- Opcode::PMOVZXBD |
- Opcode::PMOVSXWD |
- Opcode::PMOVZXWD |
- Opcode::PMOVSXBQ |
- Opcode::PMOVZXBQ |
- Opcode::PMOVSXWQ |
- Opcode::PMOVZXWQ |
- Opcode::PMOVSXDQ |
- Opcode::PMOVZXDQ |
- Opcode::DPPS |
- Opcode::DPPD |
- Opcode::MPSADBW |
- Opcode::PHMINPOSUW |
- Opcode::PTEST |
- Opcode::PCMPEQQ |
- Opcode::PEXTRB |
- Opcode::PEXTRW |
- Opcode::PEXTRD |
- Opcode::PEXTRQ |
- Opcode::PACKUSDW => {
- // via Intel section 5.10, SSE4.1 Instructions
- if !self.sse4_1() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::EXTRQ |
- Opcode::INSERTQ |
- Opcode::MOVNTSS |
- Opcode::MOVNTSD => {
- if !self.sse4a() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::CRC32 |
- Opcode::PCMPESTRI |
- Opcode::PCMPESTRM |
- Opcode::PCMPISTRI |
- Opcode::PCMPISTRM |
- Opcode::PCMPGTQ => {
- // via Intel section 5.11, SSE4.2 Instructions
- if !self.sse4_2() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::AESDEC |
- Opcode::AESDECLAST |
- Opcode::AESENC |
- Opcode::AESENCLAST |
- Opcode::AESIMC |
- Opcode::AESKEYGENASSIST => {
- // via Intel section 5.12. AESNI AND PCLMULQDQ
- if !self.aesni() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PCLMULQDQ => {
- // via Intel section 5.12. AESNI AND PCLMULQDQ
- if !self.pclmulqdq() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::XABORT |
- Opcode::XBEGIN |
- Opcode::XEND |
- Opcode::XTEST => {
- if !self.tsx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::SHA1MSG1 |
- Opcode::SHA1MSG2 |
- Opcode::SHA1NEXTE |
- Opcode::SHA1RNDS4 |
- Opcode::SHA256MSG1 |
- Opcode::SHA256MSG2 |
- Opcode::SHA256RNDS2 => {
- if !self.sha() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::ENCLV |
- Opcode::ENCLS |
- Opcode::ENCLU => {
- if !self.sgx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- // AVX...
- Opcode::VMOVDDUP |
- Opcode::VPSHUFLW |
- Opcode::VPSHUFHW |
- Opcode::VHADDPS |
- Opcode::VHSUBPS |
- Opcode::VADDSUBPS |
- Opcode::VCVTPD2DQ |
- Opcode::VLDDQU |
- Opcode::VCOMISD |
- Opcode::VCOMISS |
- Opcode::VUCOMISD |
- Opcode::VUCOMISS |
- Opcode::VADDPD |
- Opcode::VADDPS |
- Opcode::VADDSD |
- Opcode::VADDSS |
- Opcode::VADDSUBPD |
- Opcode::VBLENDPD |
- Opcode::VBLENDPS |
- Opcode::VBLENDVPD |
- Opcode::VBLENDVPS |
- Opcode::VBROADCASTF128 |
- Opcode::VBROADCASTI128 |
- Opcode::VBROADCASTSD |
- Opcode::VBROADCASTSS |
- Opcode::VCMPSD |
- Opcode::VCMPSS |
- Opcode::VCMPPD |
- Opcode::VCMPPS |
- Opcode::VCVTDQ2PD |
- Opcode::VCVTDQ2PS |
- Opcode::VCVTPD2PS |
- Opcode::VCVTPS2DQ |
- Opcode::VCVTPS2PD |
- Opcode::VCVTSS2SD |
- Opcode::VCVTSI2SS |
- Opcode::VCVTSI2SD |
- Opcode::VCVTSD2SI |
- Opcode::VCVTSD2SS |
- Opcode::VCVTSS2SI |
- Opcode::VCVTTPD2DQ |
- Opcode::VCVTTPS2DQ |
- Opcode::VCVTTSS2SI |
- Opcode::VCVTTSD2SI |
- Opcode::VDIVPD |
- Opcode::VDIVPS |
- Opcode::VDIVSD |
- Opcode::VDIVSS |
- Opcode::VDPPD |
- Opcode::VDPPS |
- Opcode::VEXTRACTF128 |
- Opcode::VEXTRACTI128 |
- Opcode::VEXTRACTPS |
- 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 |
- Opcode::VGATHERDPD |
- Opcode::VGATHERDPS |
- Opcode::VGATHERQPD |
- Opcode::VGATHERQPS |
- Opcode::VHADDPD |
- Opcode::VHSUBPD |
- Opcode::VINSERTF128 |
- Opcode::VINSERTI128 |
- Opcode::VINSERTPS |
- Opcode::VMASKMOVDQU |
- Opcode::VMASKMOVPD |
- Opcode::VMASKMOVPS |
- Opcode::VMAXPD |
- Opcode::VMAXPS |
- Opcode::VMAXSD |
- Opcode::VMAXSS |
- Opcode::VMINPD |
- Opcode::VMINPS |
- Opcode::VMINSD |
- Opcode::VMINSS |
- Opcode::VMOVAPD |
- Opcode::VMOVAPS |
- Opcode::VMOVD |
- Opcode::VMOVDQA |
- Opcode::VMOVDQU |
- Opcode::VMOVHLPS |
- Opcode::VMOVHPD |
- Opcode::VMOVHPS |
- Opcode::VMOVLHPS |
- Opcode::VMOVLPD |
- Opcode::VMOVLPS |
- Opcode::VMOVMSKPD |
- Opcode::VMOVMSKPS |
- Opcode::VMOVNTDQ |
- Opcode::VMOVNTDQA |
- Opcode::VMOVNTPD |
- Opcode::VMOVNTPS |
- Opcode::VMOVQ |
- Opcode::VMOVSS |
- Opcode::VMOVSD |
- Opcode::VMOVSHDUP |
- Opcode::VMOVSLDUP |
- Opcode::VMOVUPD |
- Opcode::VMOVUPS |
- Opcode::VMPSADBW |
- Opcode::VMULPD |
- Opcode::VMULPS |
- Opcode::VMULSD |
- Opcode::VMULSS |
- Opcode::VPABSB |
- Opcode::VPABSD |
- Opcode::VPABSW |
- Opcode::VPACKSSDW |
- Opcode::VPACKUSDW |
- Opcode::VPACKSSWB |
- Opcode::VPACKUSWB |
- Opcode::VPADDB |
- Opcode::VPADDD |
- Opcode::VPADDQ |
- Opcode::VPADDSB |
- Opcode::VPADDSW |
- Opcode::VPADDUSB |
- Opcode::VPADDUSW |
- Opcode::VPADDW |
- Opcode::VPALIGNR |
- Opcode::VPAND |
- Opcode::VANDPD |
- Opcode::VANDPS |
- Opcode::VANDNPD |
- Opcode::VANDNPS |
- Opcode::VORPD |
- Opcode::VORPS |
- Opcode::VPANDN |
- Opcode::VPAVGB |
- Opcode::VPAVGW |
- Opcode::VPBLENDD |
- Opcode::VPBLENDVB |
- Opcode::VPBLENDW |
- Opcode::VPBROADCASTB |
- Opcode::VPBROADCASTD |
- Opcode::VPBROADCASTQ |
- Opcode::VPBROADCASTW |
- Opcode::VPCLMULQDQ |
- Opcode::VPCMPEQB |
- Opcode::VPCMPEQD |
- Opcode::VPCMPEQQ |
- Opcode::VPCMPEQW |
- Opcode::VPCMPGTB |
- Opcode::VPCMPGTD |
- Opcode::VPCMPGTQ |
- Opcode::VPCMPGTW |
- Opcode::VPCMPESTRI |
- Opcode::VPCMPESTRM |
- Opcode::VPCMPISTRI |
- Opcode::VPCMPISTRM |
- Opcode::VPERM2F128 |
- Opcode::VPERM2I128 |
- Opcode::VPERMD |
- Opcode::VPERMILPD |
- Opcode::VPERMILPS |
- Opcode::VPERMPD |
- Opcode::VPERMPS |
- Opcode::VPERMQ |
- Opcode::VPEXTRB |
- Opcode::VPEXTRD |
- Opcode::VPEXTRQ |
- Opcode::VPEXTRW |
- Opcode::VPGATHERDD |
- Opcode::VPGATHERDQ |
- Opcode::VPGATHERQD |
- Opcode::VPGATHERQQ |
- Opcode::VPHADDD |
- Opcode::VPHADDSW |
- Opcode::VPHADDW |
- Opcode::VPMADDUBSW |
- Opcode::VPHMINPOSUW |
- Opcode::VPHSUBD |
- Opcode::VPHSUBSW |
- Opcode::VPHSUBW |
- Opcode::VPINSRB |
- Opcode::VPINSRD |
- Opcode::VPINSRQ |
- Opcode::VPINSRW |
- Opcode::VPMADDWD |
- Opcode::VPMASKMOVD |
- Opcode::VPMASKMOVQ |
- Opcode::VPMAXSB |
- Opcode::VPMAXSD |
- Opcode::VPMAXSW |
- Opcode::VPMAXUB |
- Opcode::VPMAXUW |
- Opcode::VPMAXUD |
- Opcode::VPMINSB |
- Opcode::VPMINSW |
- Opcode::VPMINSD |
- Opcode::VPMINUB |
- Opcode::VPMINUW |
- Opcode::VPMINUD |
- Opcode::VPMOVMSKB |
- 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::VPMULHRSW |
- Opcode::VPMULHUW |
- Opcode::VPMULHW |
- Opcode::VPMULLQ |
- Opcode::VPMULLD |
- Opcode::VPMULLW |
- Opcode::VPMULUDQ |
- Opcode::VPOR |
- Opcode::VPSADBW |
- Opcode::VPSHUFB |
- Opcode::VPSHUFD |
- Opcode::VPSIGNB |
- Opcode::VPSIGND |
- Opcode::VPSIGNW |
- Opcode::VPSLLD |
- Opcode::VPSLLDQ |
- Opcode::VPSLLQ |
- Opcode::VPSLLVD |
- Opcode::VPSLLVQ |
- Opcode::VPSLLW |
- Opcode::VPSRAD |
- Opcode::VPSRAVD |
- Opcode::VPSRAW |
- Opcode::VPSRLD |
- Opcode::VPSRLDQ |
- Opcode::VPSRLQ |
- Opcode::VPSRLVD |
- Opcode::VPSRLVQ |
- Opcode::VPSRLW |
- Opcode::VPSUBB |
- Opcode::VPSUBD |
- Opcode::VPSUBQ |
- Opcode::VPSUBSB |
- Opcode::VPSUBSW |
- Opcode::VPSUBUSB |
- Opcode::VPSUBUSW |
- Opcode::VPSUBW |
- Opcode::VPTEST |
- Opcode::VPUNPCKHBW |
- Opcode::VPUNPCKHDQ |
- Opcode::VPUNPCKHQDQ |
- Opcode::VPUNPCKHWD |
- Opcode::VPUNPCKLBW |
- Opcode::VPUNPCKLDQ |
- Opcode::VPUNPCKLQDQ |
- Opcode::VPUNPCKLWD |
- Opcode::VPXOR |
- Opcode::VRCPPS |
- Opcode::VROUNDPD |
- Opcode::VROUNDPS |
- Opcode::VROUNDSD |
- Opcode::VROUNDSS |
- Opcode::VRSQRTPS |
- Opcode::VRSQRTSS |
- Opcode::VRCPSS |
- Opcode::VSHUFPD |
- Opcode::VSHUFPS |
- Opcode::VSQRTPD |
- Opcode::VSQRTPS |
- Opcode::VSQRTSS |
- Opcode::VSQRTSD |
- Opcode::VSUBPD |
- Opcode::VSUBPS |
- Opcode::VSUBSD |
- Opcode::VSUBSS |
- Opcode::VTESTPD |
- Opcode::VTESTPS |
- Opcode::VUNPCKHPD |
- Opcode::VUNPCKHPS |
- Opcode::VUNPCKLPD |
- Opcode::VUNPCKLPS |
- Opcode::VXORPD |
- Opcode::VXORPS |
- Opcode::VZEROUPPER |
- Opcode::VZEROALL |
- Opcode::VLDMXCSR |
- Opcode::VSTMXCSR => {
- // TODO: check a table for these
- if !self.avx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VAESDEC |
- Opcode::VAESDECLAST |
- Opcode::VAESENC |
- Opcode::VAESENCLAST |
- Opcode::VAESIMC |
- Opcode::VAESKEYGENASSIST => {
- // TODO: check a table for these
- if !self.avx() || !self.aesni() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::MOVBE => {
- if !self.movbe() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::POPCNT => {
- /*
- * from the intel SDM:
- * ```
- * Before an application attempts to use the POPCNT instruction, it must check that
- * the processor supports SSE4.2 (if CPUID.01H:ECX.SSE4_2[bit 20] = 1) and POPCNT
- * (if CPUID.01H:ECX.POPCNT[bit 23] = 1).
- * ```
- */
- if self.intel_quirks() && (self.sse4_2() || self.popcnt()) {
- return Ok(());
- } else if !self.popcnt() {
- /*
- * elsewhere from the amd APM:
- * `Instruction Subsets and CPUID Feature Flags` on page 507 indicates that
- * popcnt is present when the popcnt bit is reported by cpuid. this seems to be
- * the less quirky default, so `intel_quirks` is considered the outlier, and
- * before this default.
- * */
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::LZCNT => {
- /*
- * amd APM, `LZCNT` page 212:
- * LZCNT is an Advanced Bit Manipulation (ABM) instruction. Support for the LZCNT
- * instruction is indicated by CPUID Fn8000_0001_ECX[ABM] = 1.
- *
- * meanwhile the intel SDM simply states:
- * ```
- * CPUID.EAX=80000001H:ECX.LZCNT[bit 5]: if 1 indicates the processor supports the
- * LZCNT instruction.
- * ```
- *
- * so that's considered the less-quirky (default) case here.
- * */
- if self.amd_quirks() && !self.abm() {
- return Err(DecodeError::InvalidOpcode);
- } else if !self.lzcnt() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::ADCX |
- Opcode::ADOX => {
- if !self.adx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VMRUN |
- Opcode::VMLOAD |
- Opcode::VMSAVE |
- Opcode::CLGI |
- Opcode::VMMCALL |
- Opcode::INVLPGA => {
- if !self.svm() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::STGI |
- Opcode::SKINIT => {
- if !self.svm() || !self.skinit() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::LAHF |
- Opcode::SAHF => {
- if !self.lahfsahf() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VCVTPS2PH |
- Opcode::VCVTPH2PS => {
- /*
- * from intel SDM:
- * ```
- * 14.4.1 Detection of F16C Instructions Application using float 16 instruction
- * must follow a detection sequence similar to AVX to ensure: • The OS has
- * enabled YMM state management support, • The processor support AVX as
- * indicated by the CPUID feature flag, i.e. CPUID.01H:ECX.AVX[bit 28] = 1. •
- * The processor support 16-bit floating-point conversion instructions via a
- * CPUID feature flag (CPUID.01H:ECX.F16C[bit 29] = 1).
- * ```
- *
- * TODO: only the VEX-coded variant of this instruction should be gated on `f16c`.
- * the EVEX-coded variant should be gated on `avx512f` or `avx512vl` if not
- * EVEX.512-coded.
- */
- if !self.avx() || !self.f16c() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::RDRAND => {
- if !self.rdrand() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::RDSEED => {
- if !self.rdseed() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::MONITORX | Opcode::MWAITX | // these are gated on the `monitorx` and `mwaitx` cpuid bits, but are AMD-only.
- Opcode::CLZERO | Opcode::RDPRU => { // again, gated on specific cpuid bits, but AMD-only.
- if !self.amd_quirks() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- other => {
- if !self.bmi1() {
- if BMI1.contains(&other) {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- if !self.bmi2() {
- if BMI2.contains(&other) {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- }
- }
- Ok(())
- }
}
impl Default for InstDecoder {
@@ -4116,7 +1963,7 @@ impl Decoder<Arch> for InstDecoder {
}
if self != &InstDecoder::default() {
- self.revise_instruction(&mut instr)?;
+ crate::generated::protected_mode::revise_instruction(self, &mut instr)?;
}
Ok(instr)
@@ -4141,7 +1988,7 @@ impl AnnotatingDecoder<Arch> for InstDecoder {
}
if self != &InstDecoder::default() {
- self.revise_instruction(instr)?;
+ crate::generated::protected_mode::revise_instruction(self, instr)?;
}
Ok(())
@@ -7677,7 +5524,7 @@ fn unlikely_operands<
vex::three_byte_vex(words, modrm, instruction, sink)?;
if decoder != &InstDecoder::default() {
- decoder.revise_instruction(instruction)?;
+ crate::generated::protected_mode::revise_instruction(decoder, instruction)?;
}
return Ok(());
}
@@ -7710,7 +5557,7 @@ fn unlikely_operands<
vex::two_byte_vex(words, modrm, instruction, sink)?;
if decoder != &InstDecoder::default() {
- decoder.revise_instruction(instruction)?;
+ crate::generated::protected_mode::revise_instruction(decoder, instruction)?;
}
return Ok(());
}
diff --git a/src/real_mode/display.rs b/src/real_mode/display.rs
index 6f6eb74..5783d1a 100644
--- a/src/real_mode/display.rs
+++ b/src/real_mode/display.rs
@@ -345,1480 +345,10 @@ impl fmt::Display for Opcode {
}
}
-const MNEMONICS: &[&'static str] = &[
- "invalid",
- "add",
- "or",
- "adc",
- "sbb",
- "and",
- "xor",
- "sub",
- "cmp",
- "xadd",
- "bt",
- "bts",
- "btc",
- "btr",
- "bsf",
- "bsr",
- "tzcnt",
- "movss",
- "addss",
- "subss",
- "mulss",
- "divss",
- "minss",
- "maxss",
- "sqrtss",
- "movsd",
- "sqrtsd",
- "addsd",
- "subsd",
- "mulsd",
- "divsd",
- "minsd",
- "maxsd",
- "movsldup",
- "movshdup",
- "movddup",
- "haddps",
- "hsubps",
- "addsubpd",
- "addsubps",
- "cvtsi2ss",
- "cvtsi2sd",
- "cvttsd2si",
- "cvttps2dq",
- "cvtpd2dq",
- "cvtpd2ps",
- "cvtps2dq",
- "cvtsd2si",
- "cvtsd2ss",
- "cvttss2si",
- "cvtss2si",
- "cvtss2sd",
- "cvtdq2pd",
- "lddqu",
- "movzx",
- "movsx",
- "movsxd",
- "sar",
- "sal",
- "shr",
- "shrd",
- "shl",
- "rcr",
- "rcl",
- "ror",
- "rol",
- "inc",
- "dec",
- "hlt",
- "call",
- "callf",
- "jmp",
- "jmpf",
- "push",
- "pop",
- "lea",
- "nop",
- "prefetchnta",
- "prefetch0",
- "prefetch1",
- "prefetch2",
- "xchg",
- "popf",
- "int",
- "into",
- "iret",
- "iretd",
- "iretq",
- "retf",
- "enter",
- "leave",
- "mov",
- "ret",
- "pushf",
- "wait",
- "cbw",
- "cwde",
- "cdqe",
- "cwd",
- "cdq",
- "cqo",
- "lods",
- "stos",
- "lahf",
- "sahf",
- "cmps",
- "scas",
- "movs",
- "test",
- "ins",
- "in",
- "outs",
- "out",
- "imul",
- "jo",
- "jno",
- "jb",
- "jnb",
- "jz",
- "jnz",
- "ja",
- "jna",
- "js",
- "jns",
- "jp",
- "jnp",
- "jl",
- "jge",
- "jle",
- "jg",
- "cmova",
- "cmovb",
- "cmovg",
- "cmovge",
- "cmovl",
- "cmovle",
- "cmovna",
- "cmovnb",
- "cmovno",
- "cmovnp",
- "cmovns",
- "cmovnz",
- "cmovo",
- "cmovp",
- "cmovs",
- "cmovz",
- "div",
- "idiv",
- "mul",
- "neg",
- "not",
- "cmpxchg",
- "seto",
- "setno",
- "setb",
- "setae",
- "setz",
- "setnz",
- "setbe",
- "seta",
- "sets",
- "setns",
- "setp",
- "setnp",
- "setl",
- "setge",
- "setle",
- "setg",
- "cpuid",
- "ud0",
- "ud1",
- "ud2",
- "wbinvd",
- "invd",
- "sysret",
- "clts",
- "syscall",
- "lsl",
- "lar",
- "les",
- "lds",
- "sgdt",
- "sidt",
- "lgdt",
- "lidt",
- "smsw",
- "lmsw",
- "swapgs",
- "rdtscp",
- "invlpg",
- "fxsave",
- "fxrstor",
- "ldmxcsr",
- "stmxcsr",
- "xsave",
- "xrstor",
- "xsaveopt",
- "lfence",
- "mfence",
- "sfence",
- "clflush",
- "clflushopt",
- "clwb",
- "wrmsr",
- "rdtsc",
- "rdmsr",
- "rdpmc",
- "sldt",
- "str",
- "lldt",
- "ltr",
- "verr",
- "verw",
- "cmc",
- "clc",
- "stc",
- "cli",
- "sti",
- "cld",
- "std",
- "jmpe",
- "popcnt",
- "movdqu",
- "movdqa",
- "movq",
- "cmpss",
- "cmpsd",
- "unpcklps",
- "unpcklpd",
- "unpckhps",
- "unpckhpd",
- "pshufhw",
- "pshuflw",
- "movups",
- "movq2dq",
- "movdq2q",
- "rsqrtss",
- "rcpss",
- "andn",
- "bextr",
- "blsi",
- "blsmsk",
- "blsr",
- "vmclear",
- "vmxon",
- "vmcall",
- "vmlaunch",
- "vmresume",
- "vmxoff",
- "pconfig",
- "monitor",
- "mwait",
- "monitorx",
- "mwaitx",
- "clac",
- "stac",
- "encls",
- "enclv",
- "xgetbv",
- "xsetbv",
- "vmfunc",
- "xabort",
- "xbegin",
- "xend",
- "xtest",
- "enclu",
- "rdpkru",
- "wrpkru",
- "rdpru",
- "clzero",
- "rdseed",
- "rdrand",
- "addps",
- "addpd",
- "andnps",
- "andnpd",
- "andps",
- "andpd",
- "bswap",
- "cmppd",
- "cmpps",
- "comisd",
- "comiss",
- "cvtdq2ps",
- "cvtpi2ps",
- "cvtpi2pd",
- "cvtps2pd",
- "cvtps2pi",
- "cvtpd2pi",
- "cvttps2pi",
- "cvttpd2pi",
- "cvttpd2dq",
- "divps",
- "divpd",
- "emms",
- "getsec",
- "lfs",
- "lgs",
- "lss",
- "maskmovq",
- "maskmovdqu",
- "maxps",
- "maxpd",
- "minps",
- "minpd",
- "movaps",
- "movapd",
- "movd",
- "movlps",
- "movlpd",
- "movhps",
- "movhpd",
- "movlhps",
- "movhlps",
- "movupd",
- "movmskps",
- "movmskpd",
- "movnti",
- "movntps",
- "movntpd",
- "extrq",
- "insertq",
- "movntss",
- "movntsd",
- "movntq",
- "movntdq",
- "mulps",
- "mulpd",
- "orps",
- "orpd",
- "packssdw",
- "packsswb",
- "packuswb",
- "paddb",
- "paddd",
- "paddq",
- "paddsb",
- "paddsw",
- "paddusb",
- "paddusw",
- "paddw",
- "pand",
- "pandn",
- "pavgb",
- "pavgw",
- "pcmpeqb",
- "pcmpeqd",
- "pcmpeqw",
- "pcmpgtb",
- "pcmpgtd",
- "pcmpgtw",
- "pinsrw",
- "pmaddwd",
- "pmaxsw",
- "pmaxub",
- "pminsw",
- "pminub",
- "pmovmskb",
- "pmulhuw",
- "pmulhw",
- "pmullw",
- "pmuludq",
- "por",
- "psadbw",
- "pshufw",
- "pshufd",
- "pslld",
- "pslldq",
- "psllq",
- "psllw",
- "psrad",
- "psraw",
- "psrld",
- "psrldq",
- "psrlq",
- "psrlw",
- "psubb",
- "psubd",
- "psubq",
- "psubsb",
- "psubsw",
- "psubusb",
- "psubusw",
- "psubw",
- "punpckhbw",
- "punpckhdq",
- "punpckhwd",
- "punpcklbw",
- "punpckldq",
- "punpcklwd",
- "punpcklqdq",
- "punpckhqdq",
- "pxor",
- "rcpps",
- "rsm",
- "rsqrtps",
- "shld",
- "shufpd",
- "shufps",
- "slhd",
- "sqrtps",
- "sqrtpd",
- "subps",
- "subpd",
- "sysenter",
- "sysexit",
- "ucomisd",
- "ucomiss",
- "vmread",
- "vmwrite",
- "xorps",
- "xorpd",
- "vmovddup",
- "vpshuflw",
- "vpshufhw",
- "vhaddps",
- "vhsubps",
- "vaddsubps",
- "vcvtpd2dq",
- "vlddqu",
- "vcomisd",
- "vcomiss",
- "vucomisd",
- "vucomiss",
- "vaddpd",
- "vaddps",
- "vaddsd",
- "vaddss",
- "vaddsubpd",
- "vaesdec",
- "vaesdeclast",
- "vaesenc",
- "vaesenclast",
- "vaesimc",
- "vaeskeygenassist",
- "vblendpd",
- "vblendps",
- "vblendvpd",
- "vblendvps",
- "vbroadcastf128",
- "vbroadcasti128",
- "vbroadcastsd",
- "vbroadcastss",
- "vcmpsd",
- "vcmpss",
- "vcmppd",
- "vcmpps",
- "vcvtdq2pd",
- "vcvtdq2ps",
- "vcvtpd2ps",
- "vcvtph2ps",
- "vcvtps2dq",
- "vcvtps2pd",
- "vcvtss2sd",
- "vcvtsi2ss",
- "vcvtsi2sd",
- "vcvtsd2si",
- "vcvtsd2ss",
- "vcvtps2ph",
- "vcvtss2si",
- "vcvttpd2dq",
- "vcvttps2dq",
- "vcvttss2si",
- "vcvttsd2si",
- "vdivpd",
- "vdivps",
- "vdivsd",
- "vdivss",
- "vdppd",
- "vdpps",
- "vextractf128",
- "vextracti128",
- "vextractps",
- "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",
- "vgatherdpd",
- "vgatherdps",
- "vgatherqpd",
- "vgatherqps",
- "vhaddpd",
- "vhsubpd",
- "vinsertf128",
- "vinserti128",
- "vinsertps",
- "vmaskmovdqu",
- "vmaskmovpd",
- "vmaskmovps",
- "vmaxpd",
- "vmaxps",
- "vmaxsd",
- "vmaxss",
- "vminpd",
- "vminps",
- "vminsd",
- "vminss",
- "vmovapd",
- "vmovaps",
- "vmovd",
- "vmovdqa",
- "vmovdqu",
- "vmovhlps",
- "vmovhpd",
- "vmovhps",
- "vmovlhps",
- "vmovlpd",
- "vmovlps",
- "vmovmskpd",
- "vmovmskps",
- "vmovntdq",
- "vmovntdqa",
- "vmovntpd",
- "vmovntps",
- "vmovq",
- "vmovss",
- "vmovsd",
- "vmovshdup",
- "vmovsldup",
- "vmovupd",
- "vmovups",
- "vmpsadbw",
- "vmulpd",
- "vmulps",
- "vmulsd",
- "vmulss",
- "vpabsb",
- "vpabsd",
- "vpabsw",
- "vpackssdw",
- "vpackusdw",
- "vpacksswb",
- "vpackuswb",
- "vpaddb",
- "vpaddd",
- "vpaddq",
- "vpaddsb",
- "vpaddsw",
- "vpaddusb",
- "vpaddusw",
- "vpaddw",
- "vpalignr",
- "vandpd",
- "vandps",
- "vorpd",
- "vorps",
- "vandnpd",
- "vandnps",
- "vpand",
- "vpandn",
- "vpavgb",
- "vpavgw",
- "vpblendd",
- "vpblendvb",
- "vpblendw",
- "vpbroadcastb",
- "vpbroadcastd",
- "vpbroadcastq",
- "vpbroadcastw",
- "vpclmulqdq",
- "vpcmpeqb",
- "vpcmpeqd",
- "vpcmpeqq",
- "vpcmpeqw",
- "vpcmpgtb",
- "vpcmpgtd",
- "vpcmpgtq",
- "vpcmpgtw",
- "vpcmpestri",
- "vpcmpestrm",
- "vpcmpistri",
- "vpcmpistrm",
- "vperm2f128",
- "vperm2i128",
- "vpermd",
- "vpermilpd",
- "vpermilps",
- "vpermpd",
- "vpermps",
- "vpermq",
- "vpextrb",
- "vpextrd",
- "vpextrq",
- "vpextrw",
- "vpgatherdd",
- "vpgatherdq",
- "vpgatherqd",
- "vpgatherqq",
- "vphaddd",
- "vphaddsw",
- "vphaddw",
- "vpmaddubsw",
- "vphminposuw",
- "vphsubd",
- "vphsubsw",
- "vphsubw",
- "vpinsrb",
- "vpinsrd",
- "vpinsrq",
- "vpinsrw",
- "vpmaddwd",
- "vpmaskmovd",
- "vpmaskmovq",
- "vpmaxsb",
- "vpmaxsd",
- "vpmaxsw",
- "vpmaxub",
- "vpmaxuw",
- "vpmaxud",
- "vpminsb",
- "vpminsw",
- "vpminsd",
- "vpminub",
- "vpminuw",
- "vpminud",
- "vpmovmskb",
- "vpmovsxbd",
- "vpmovsxbq",
- "vpmovsxbw",
- "vpmovsxdq",
- "vpmovsxwd",
- "vpmovsxwq",
- "vpmovzxbd",
- "vpmovzxbq",
- "vpmovzxbw",
- "vpmovzxdq",
- "vpmovzxwd",
- "vpmovzxwq",
- "vpmuldq",
- "vpmulhrsw",
- "vpmulhuw",
- "vpmulhw",
- "vpmullq",
- "vpmulld",
- "vpmullw",
- "vpmuludq",
- "vpor",
- "vpsadbw",
- "vpshufb",
- "vpshufd",
- "vpsignb",
- "vpsignd",
- "vpsignw",
- "vpslld",
- "vpslldq",
- "vpsllq",
- "vpsllvd",
- "vpsllvq",
- "vpsllw",
- "vpsrad",
- "vpsravd",
- "vpsraw",
- "vpsrld",
- "vpsrldq",
- "vpsrlq",
- "vpsrlvd",
- "vpsrlvq",
- "vpsrlw",
- "vpsubb",
- "vpsubd",
- "vpsubq",
- "vpsubsb",
- "vpsubsw",
- "vpsubusb",
- "vpsubusw",
- "vpsubw",
- "vptest",
- "vpunpckhbw",
- "vpunpckhdq",
- "vpunpckhqdq",
- "vpunpckhwd",
- "vpunpcklbw",
- "vpunpckldq",
- "vpunpcklqdq",
- "vpunpcklwd",
- "vpxor",
- "vrcpps",
- "vroundpd",
- "vroundps",
- "vroundsd",
- "vroundss",
- "vrsqrtps",
- "vrsqrtss",
- "vrcpss",
- "vshufpd",
- "vshufps",
- "vsqrtpd",
- "vsqrtps",
- "vsqrtss",
- "vsqrtsd",
- "vsubpd",
- "vsubps",
- "vsubsd",
- "vsubss",
- "vtestpd",
- "vtestps",
- "vunpckhpd",
- "vunpckhps",
- "vunpcklpd",
- "vunpcklps",
- "vxorpd",
- "vxorps",
- "vzeroupper",
- "vzeroall",
- "vldmxcsr",
- "vstmxcsr",
- "pclmulqdq",
- "aeskeygenassist",
- "aesimc",
- "aesenc",
- "aesenclast",
- "aesdec",
- "aesdeclast",
- "pcmpgtq",
- "pcmpistrm",
- "pcmpistri",
- "pcmpestri",
- "packusdw",
- "pcmpestrm",
- "pcmpeqq",
- "ptest",
- "phminposuw",
- "dpps",
- "dppd",
- "mpsadbw",
- "pmovzxdq",
- "pmovsxdq",
- "pmovzxbd",
- "pmovsxbd",
- "pmovzxwq",
- "pmovsxwq",
- "pmovzxbq",
- "pmovsxbq",
- "pmovsxwd",
- "pmovzxwd",
- "pextrq",
- "pextrd",
- "pextrw",
- "pextrb",
- "pmovsxbw",
- "pmovzxbw",
- "pinsrq",
- "pinsrd",
- "pinsrb",
- "extractps",
- "insertps",
- "roundss",
- "roundsd",
- "roundps",
- "roundpd",
- "pmaxsb",
- "pmaxsd",
- "pmaxuw",
- "pmaxud",
- "pminsd",
- "pminsb",
- "pminud",
- "pminuw",
- "blendw",
- "pblendvb",
- "pblendw",
- "blendvps",
- "blendvpd",
- "blendps",
- "blendpd",
- "pmuldq",
- "movntdqa",
- "pmulld",
- "palignr",
- "psignw",
- "psignd",
- "psignb",
- "pshufb",
- "pmulhrsw",
- "pmaddubsw",
- "pabsd",
- "pabsw",
- "pabsb",
- "phsubsw",
- "phsubw",
- "phsubd",
- "phaddd",
- "phaddsw",
- "phaddw",
- "hsubpd",
- "haddpd",
- "sha1rnds4",
- "sha1nexte",
- "sha1msg1",
- "sha1msg2",
- "sha256rnds2",
- "sha256msg1",
- "sha256msg2",
- "lzcnt",
- "clgi",
- "stgi",
- "skinit",
- "vmload",
- "vmmcall",
- "vmsave",
- "vmrun",
- "invlpga",
- "invlpgb",
- "tlbsync",
- "movbe",
- "adcx",
- "adox",
- "prefetchw",
- "rdpid",
- "cmpxchg8b",
- "cmpxchg16b",
- "vmptrld",
- "vmptrst",
- "bzhi",
- "mulx",
- "shlx",
- "shrx",
- "sarx",
- "pdep",
- "pext",
- "rorx",
- "xrstors",
- "xrstors64",
- "xsavec",
- "xsavec64",
- "xsaves",
- "xsaves64",
- "rdfsbase",
- "rdgsbase",
- "wrfsbase",
- "wrgsbase",
- "crc32",
- "salc",
- "xlat",
-
- "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",
- "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",
- "fxtract",
- "fyl2x",
- "fyl2xp1",
- "loopnz",
- "loopz",
- "loop",
- "jcxz",
- "pusha",
- "popa",
- "bound",
- "arpl",
- "aas",
- "aaa",
- "das",
- "daa",
- "aam",
- "aad",
- "movdir64b",
- "movdiri",
- "aesdec128kl",
- "aesdec256kl",
- "aesdecwide128kl",
- "aesdecwide256kl",
- "aesenc128kl",
- "aesenc256kl",
- "aesencwide128kl",
- "aesencwide256kl",
- "encodekey128",
- "encodekey256",
- "loadiwkey",
-
- // unsure
- "hreset",
-
- // 3dnow
- "femms",
- "pi2fw",
- "pi2fd",
- "pi2iw",
- "pi2id",
- "pmulhrw",
- "pfcmpge",
- "pfmin",
- "pfrcp",
- "pfrsqrt",
- "pfsub",
- "pfadd",
- "pfcmpgt",
- "pfmax",
- "pfrcpit1",
- "pfrsqit1",
- "pfsubr",
- "pfacc",
- "pfcmpeq",
- "pfmul",
- "pfmulhrw",
- "pfrcpit2",
- "pfnacc",
- "pfpnacc",
- "pswapd",
- "pavgusb",
-
- // ENQCMD
- "enqcmd",
- "enqcmds",
-
- // INVPCID,
- "invept",
- "invvpid",
- "invpcid",
-
- // PTWRITE
- "ptwrite",
-
- // GFNI
- "gf2p8affineqb",
- "gf2p8affineinvqb",
- "gf2p8mulb",
-
- // CET
- "wruss",
- "wrss",
- "incssp",
- "saveprevssp",
- "setssbsy",
- "clrssbsy",
- "rstorssp",
- "endbr64",
- "endbr32",
-
- // TDX
- "tdcall",
- "seamret",
- "seamops",
- "seamcall",
-
- // WAITPKG
- "tpause",
- "umonitor",
- "umwait",
-
- // UINTR
- "uiret",
- "testui",
- "clui",
- "stui",
- "senduipi",
-
- // TSXLDTRK
- "xsusldtrk",
- "xresldtrk",
-
- // AVX512F
- "valignd",
- "valignq",
- "vblendmpd",
- "vblendmps",
- "vcompresspd",
- "vcompressps",
- "vcvtpd2udq",
- "vcvttpd2udq",
- "vcvtps2udq",
- "vcvttps2udq",
- "vcvtqq2pd",
- "vcvtqq2ps",
- "vcvtsd2usi",
- "vcvttsd2usi",
- "vcvtss2usi",
- "vcvttss2usi",
- "vcvtudq2pd",
- "vcvtudq2ps",
- "vcvtusi2usd",
- "vcvtusi2uss",
- "vexpandpd",
- "vexpandps",
- "vextractf32x4",
- "vextractf64x4",
- "vextracti32x4",
- "vextracti64x4",
- "vfixupimmpd",
- "vfixupimmps",
- "vfixupimmsd",
- "vfixupimmss",
- "vgetexppd",
- "vgetexpps",
- "vgetexpsd",
- "vgetexpss",
- "vgetmantpd",
- "vgetmantps",
- "vgetmantsd",
- "vgetmantss",
- "vinsertf32x4",
- "vinsertf64x4",
- "vinserti64x4",
- "vmovdqa32",
- "vmovdqa64",
- "vmovdqu32",
- "vmovdqu64",
- "vpblendmd",
- "vpblendmq",
- "vpcmpd",
- "vpcmpud",
- "vpcmpq",
- "vpcmpuq",
- "vpcompressq",
- "vpcompressd",
- "vpermi2d",
- "vpermi2q",
- "vpermi2pd",
- "vpermi2ps",
- "vpermt2d",
- "vpermt2q",
- "vpermt2pd",
- "vpermt2ps",
- "vpmaxsq",
- "vpmaxuq",
- "vpminsq",
- "vpminuq",
- "vpmovsqb",
- "vpmovusqb",
- "vpmovsqw",
- "vpmovusqw",
- "vpmovsqd",
- "vpmovusqd",
- "vpmovsdb",
- "vpmovusdb",
- "vpmovsdw",
- "vpmovusdw",
- "vprold",
- "vprolq",
- "vprolvd",
- "vprolvq",
- "vprord",
- "vprorq",
- "vprorrd",
- "vprorrq",
- "vpscatterdd",
- "vpscatterdq",
- "vpscatterqd",
- "vpscatterqq",
- "vpsraq",
- "vpsravq",
- "vptestnmd",
- "vptestnmq",
- "vpternlogd",
- "vpternlogq",
- "vptestmd",
- "vptestmq",
- "vrcp14pd",
- "vrcp14ps",
- "vrcp14sd",
- "vrcp14ss",
- "vrndscalepd",
- "vrndscaleps",
- "vrndscalesd",
- "vrndscaless",
- "vrsqrt14pd",
- "vrsqrt14ps",
- "vrsqrt14sd",
- "vrsqrt14ss",
- "vscaledpd",
- "vscaledps",
- "vscaledsd",
- "vscaledss",
- "vscatterdd",
- "vscatterdq",
- "vscatterqd",
- "vscatterqq",
- "vshuff32x4",
- "vshuff64x2",
- "vshufi32x4",
- "vshufi64x2",
-
- // AVX512DQ
- "vcvttpd2qq",
- "vcvtpd2qq",
- "vcvttpd2uqq",
- "vcvtpd2uqq",
- "vcvttps2qq",
- "vcvtps2qq",
- "vcvttps2uqq",
- "vcvtps2uqq",
- "vcvtuqq2pd",
- "vcvtuqq2ps",
- "vextractf64x2",
- "vextracti64x2",
- "vfpclasspd",
- "vfpclassps",
- "vfpclasssd",
- "vfpclassss",
- "vinsertf64x2",
- "vinserti64x2",
- "vpmovm2d",
- "vpmovm2q",
- "vpmovb2d",
- "vpmovq2m",
- "vrangepd",
- "vrangeps",
- "vrangesd",
- "vrangess",
- "vreducepd",
- "vreduceps",
- "vreducesd",
- "vreducess",
-
- // AVX512BW
- "vdbpsadbw",
- "vmovdqu8",
- "vmovdqu16",
- "vpblendmb",
- "vpblendmw",
- "vpcmpb",
- "vpcmpub",
- "vpcmpw",
- "vpcmpuw",
- "vpermw",
- "vpermi2b",
- "vpermi2w",
- "vpmovm2b",
- "vpmovm2w",
- "vpmovb2m",
- "vpmovw2m",
- "vpmovswb",
- "vpmovuswb",
- "vpsllvw",
- "vpsravw",
- "vpsrlvw",
- "vptestnmb",
- "vptestnmw",
- "vptestmb",
- "vptestmw",
-
- // AVX512CD
- "vpbroadcastm",
- "vpconflictd",
- "vpconflictq",
- "vplzcntd",
- "vplzcntq",
-
- "kunpckbw",
- "kunpckwd",
- "kunpckdq",
-
- "kaddb",
- "kandb",
- "kandnb",
- "kmovb",
- "knotb",
- "korb",
- "kortestb",
- "kshiftlb",
- "kshiftrb",
- "ktestb",
- "kxnorb",
- "kxorb",
- "kaddw",
- "kandw",
- "kandnw",
- "kmovw",
- "knotw",
- "korw",
- "kortestw",
- "kshiftlw",
- "kshiftrw",
- "ktestw",
- "kxnorw",
- "kxorw",
- "kaddd",
- "kandd",
- "kandnd",
- "kmovd",
- "knotd",
- "kord",
- "kortestd",
- "kshiftld",
- "kshiftrd",
- "ktestd",
- "kxnord",
- "kxord",
- "kaddq",
- "kandq",
- "kandnq",
- "kmovq",
- "knotq",
- "korq",
- "kortestq",
- "kshiftlq",
- "kshiftrq",
- "ktestq",
- "kxnorq",
- "kxorq",
-
- // AVX512ER
- "vexp2pd",
- "vexp2ps",
- "vexp2sd",
- "vexp2ss",
- "vrcp28pd",
- "vrcp28ps",
- "vrcp28sd",
- "vrcp28ss",
- "vrsqrt28pd",
- "vrsqrt28ps",
- "vrsqrt28sd",
- "vrsqrt28ss",
-
- // AVX512PF
- "vgatherpf0dpd",
- "vgatherpf0dps",
- "vgatherpf0qpd",
- "vgatherpf0qps",
- "vgatherpf1dpd",
- "vgatherpf1dps",
- "vgatherpf1qpd",
- "vgatherpf1qps",
- "vscatterpf0dpd",
- "vscatterpf0dps",
- "vscatterpf0qpd",
- "vscatterpf0qps",
- "vscatterpf1dpd",
- "vscatterpf1dps",
- "vscatterpf1qpd",
- "vscatterpf1qps",
-
- // MPX
- "bndmk",
- "bndcl",
- "bndcu",
- "bndcn",
- "bndmov",
- "bndldx",
- "bndstx",
-
-
-
- "vgf2p8affineqb",
- "vgf2p8affineinvqb",
- "vpshrdq",
- "vpshrdd",
- "vpshrdw",
- "vpshldq",
- "vpshldd",
- "vpshldw",
- "vbroadcastf32x8",
- "vbroadcastf64x4",
- "vbroadcastf32x4",
- "vbroadcastf64x2",
- "vbroadcastf32x2",
- "vbroadcasti32x8",
- "vbroadcasti64x4",
- "vbroadcasti32x4",
- "vbroadcasti64x2",
- "vbroadcasti32x2",
- "vextracti32x8",
- "vextractf32x8",
- "vinserti32x8",
- "vinsertf32x8",
- "vinserti32x4",
- "v4fnmaddss",
- "v4fnmaddps",
- "vcvtneps2bf16",
- "v4fmaddss",
- "v4fmaddps",
- "vcvtne2ps2bf16",
- "vp2intersectd",
- "vp2intersectq",
- "vp4dpwssds",
- "vp4dpwssd",
- "vpdpwssds",
- "vpdpwssd",
- "vpdpbusds",
- "vdpbf16ps",
- "vpbroadcastmw2d",
- "vpbroadcastmb2q",
- "vpmovd2m",
- "vpmovqd",
- "vpmovwb",
- "vpmovdb",
- "vpmovdw",
- "vpmovqb",
- "vpmovqw",
- "vgf2p8mulb",
- "vpmadd52huq",
- "vpmadd52luq",
- "vpshufbitqmb",
- "vpermb",
- "vpexpandd",
- "vpexpandq",
- "vpabsq",
- "vprorvd",
- "vprorvq",
- "vpmultishiftqb",
- "vpermt2b",
- "vpermt2w",
- "vpshrdvq",
- "vpshrdvd",
- "vpshrdvw",
- "vpshldvq",
- "vpshldvd",
- "vpshldvw",
- "vpcompressb",
- "vpcompressw",
- "vpexpandb",
- "vpexpandw",
- "vpopcntd",
- "vpopcntq",
- "vpopcntb",
- "vpopcntw",
- "vscalefss",
- "vscalefsd",
- "vscalefps",
- "vscalefpd",
- "vpdpbusd",
- "vcvtusi2sd",
- "vcvtusi2ss",
- "vpxord",
- "vpxorq",
- "vpord",
- "vporq",
- "vpandnd",
- "vpandnq",
- "vpandd",
- "vpandq",
- "psmash",
- "pvalidate",
- "rmpadjust",
- "rmpupdate",
-];
-
impl Opcode {
fn name(&self) -> &'static str {
unsafe {
- MNEMONICS.get_kinda_unchecked(*self as usize)
+ crate::generated::opcode::MNEMONICS.get_kinda_unchecked(*self as usize)
}
}
}
@@ -2523,6 +1053,10 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {
Opcode::VSCATTERDQ |
Opcode::VSCATTERQD |
Opcode::VSCATTERQQ |
+ Opcode::VSCATTERDPS |
+ Opcode::VSCATTERDPD |
+ Opcode::VSCATTERQPS |
+ Opcode::VSCATTERQPD |
Opcode::VPSCATTERDD |
Opcode::VPSCATTERDQ |
Opcode::VPSCATTERQD |
@@ -2711,6 +1245,8 @@ impl <T: fmt::Write, Y: YaxColors> Colorize<T, Y> for Opcode {
Opcode::VPINSRW |
Opcode::VPMASKMOVD |
Opcode::VPMASKMOVQ |
+ Opcode::VCOMPRESSD |
+ Opcode::VCOMPRESSQ |
Opcode::VCOMPRESSPD |
Opcode::VCOMPRESSPS |
Opcode::VPCOMPRESSQ |
diff --git a/src/real_mode/mod.rs b/src/real_mode/mod.rs
index cad9499..3181197 100644
--- a/src/real_mode/mod.rs
+++ b/src/real_mode/mod.rs
@@ -11,6 +11,7 @@ pub use self::display::{DisplayStyle, InstructionDisplayer};
use core::cmp::PartialEq;
use crate::safer_unchecked::unreachable_kinda_unchecked as unreachable_unchecked;
+pub use crate::generated::opcode::real_mode::Opcode as Opcode;
use yaxpeax_arch::{AddressDiff, Decoder, Reader, LengthedInstruction};
use yaxpeax_arch::annotation::{AnnotatingDecoder, DescriptionSink, NullSink};
@@ -997,1500 +998,6 @@ const XSAVE: [Opcode; 10] = [
Opcode::XSETBV,
];
-#[allow(non_camel_case_types)]
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[non_exhaustive]
-pub enum Opcode {
- Invalid,
- ADD,
- OR,
- ADC,
- SBB,
- AND,
- XOR,
- SUB,
- CMP,
- XADD,
- BT,
- BTS,
- BTC,
- BTR,
- BSF,
- BSR,
- TZCNT,
- MOVSS,
- ADDSS,
- SUBSS,
- MULSS,
- DIVSS,
- MINSS,
- MAXSS,
- SQRTSS,
- MOVSD,
- SQRTSD,
- ADDSD,
- SUBSD,
- MULSD,
- DIVSD,
- MINSD,
- MAXSD,
- MOVSLDUP,
- MOVSHDUP,
- MOVDDUP,
- HADDPS,
- HSUBPS,
- ADDSUBPD,
- ADDSUBPS,
- CVTSI2SS,
- CVTSI2SD,
- CVTTSD2SI,
- CVTTPS2DQ,
- CVTPD2DQ,
- CVTPD2PS,
- CVTPS2DQ,
- CVTSD2SI,
- CVTSD2SS,
- CVTTSS2SI,
- CVTSS2SI,
- CVTSS2SD,
- CVTDQ2PD,
- LDDQU,
- MOVZX,
- MOVSX,
- MOVSXD,
- SAR,
- SAL,
- SHR,
- SHRD,
- SHL,
- RCR,
- RCL,
- ROR,
- ROL,
- INC,
- DEC,
- HLT,
- CALL,
- CALLF,
- JMP,
- JMPF,
- PUSH,
- POP,
- LEA,
- NOP,
- PREFETCHNTA,
- PREFETCH0,
- PREFETCH1,
- PREFETCH2,
- XCHG,
- POPF,
- INT,
- INTO,
- IRET,
- IRETD,
- IRETQ,
- RETF,
- ENTER,
- LEAVE,
- MOV,
- RETURN,
- PUSHF,
- WAIT,
- CBW,
- CWDE,
- CDQE,
- CWD,
- CDQ,
- CQO,
- LODS,
- STOS,
- LAHF,
- SAHF,
- CMPS,
- SCAS,
- MOVS,
- TEST,
- INS,
- IN,
- OUTS,
- OUT,
- IMUL,
- JO,
- JNO,
- JB,
- JNB,
- JZ,
- JNZ,
- JA,
- JNA,
- JS,
- JNS,
- JP,
- JNP,
- JL,
- JGE,
- JLE,
- JG,
- CMOVA,
- CMOVB,
- CMOVG,
- CMOVGE,
- CMOVL,
- CMOVLE,
- CMOVNA,
- CMOVNB,
- CMOVNO,
- CMOVNP,
- CMOVNS,
- CMOVNZ,
- CMOVO,
- CMOVP,
- CMOVS,
- CMOVZ,
- DIV,
- IDIV,
- MUL,
- NEG,
- NOT,
- CMPXCHG,
- SETO,
- SETNO,
- SETB,
- SETAE,
- SETZ,
- SETNZ,
- SETBE,
- SETA,
- SETS,
- SETNS,
- SETP,
- SETNP,
- SETL,
- SETGE,
- SETLE,
- SETG,
- CPUID,
- UD0,
- UD1,
- UD2,
- WBINVD,
- INVD,
- SYSRET,
- CLTS,
- SYSCALL,
- LSL,
- LAR,
- LES,
- LDS,
- SGDT,
- SIDT,
- LGDT,
- LIDT,
- SMSW,
- LMSW,
- SWAPGS,
- RDTSCP,
- INVLPG,
- FXSAVE,
- FXRSTOR,
- LDMXCSR,
- STMXCSR,
- XSAVE,
- XRSTOR,
- XSAVEOPT,
- LFENCE,
- MFENCE,
- SFENCE,
- CLFLUSH,
- CLFLUSHOPT,
- CLWB,
- WRMSR,
- RDTSC,
- RDMSR,
- RDPMC,
- SLDT,
- STR,
- LLDT,
- LTR,
- VERR,
- VERW,
- CMC,
- CLC,
- STC,
- CLI,
- STI,
- CLD,
- STD,
- JMPE,
- POPCNT,
- MOVDQU,
- MOVDQA,
- MOVQ,
- CMPSS,
- CMPSD,
- UNPCKLPS,
- UNPCKLPD,
- UNPCKHPS,
- UNPCKHPD,
- PSHUFHW,
- PSHUFLW,
- MOVUPS,
- MOVQ2DQ,
- MOVDQ2Q,
- RSQRTSS,
- RCPSS,
-
- ANDN,
- BEXTR,
- BLSI,
- BLSMSK,
- BLSR,
- VMCLEAR,
- VMXON,
- VMCALL,
- VMLAUNCH,
- VMRESUME,
- VMXOFF,
- PCONFIG,
- MONITOR,
- MWAIT,
- MONITORX,
- MWAITX,
- CLAC,
- STAC,
- ENCLS,
- ENCLV,
- XGETBV,
- XSETBV,
- VMFUNC,
- XABORT,
- XBEGIN,
- XEND,
- XTEST,
- ENCLU,
- RDPKRU,
- WRPKRU,
-
- RDPRU,
- CLZERO,
-
- RDSEED,
- RDRAND,
-
- ADDPS,
- ADDPD,
- ANDNPS,
- ANDNPD,
- ANDPS,
- ANDPD,
- BSWAP,
- CMPPD,
- CMPPS,
- COMISD,
- COMISS,
- CVTDQ2PS,
- CVTPI2PS,
- CVTPI2PD,
- CVTPS2PD,
- CVTPS2PI,
- CVTPD2PI,
- CVTTPS2PI,
- CVTTPD2PI,
- CVTTPD2DQ,
- DIVPS,
- DIVPD,
- EMMS,
- GETSEC,
- LFS,
- LGS,
- LSS,
- MASKMOVQ,
- MASKMOVDQU,
- MAXPS,
- MAXPD,
- MINPS,
- MINPD,
- MOVAPS,
- MOVAPD,
- MOVD,
- MOVLPS,
- MOVLPD,
- MOVHPS,
- MOVHPD,
- MOVLHPS,
- MOVHLPS,
- MOVUPD,
- MOVMSKPS,
- MOVMSKPD,
- MOVNTI,
- MOVNTPS,
- MOVNTPD,
- EXTRQ,
- INSERTQ,
- MOVNTSS,
- MOVNTSD,
- MOVNTQ,
- MOVNTDQ,
- MULPS,
- MULPD,
- ORPS,
- ORPD,
- PACKSSDW,
- PACKSSWB,
- PACKUSWB,
- PADDB,
- PADDD,
- PADDQ,
- PADDSB,
- PADDSW,
- PADDUSB,
- PADDUSW,
- PADDW,
- PAND,
- PANDN,
- PAVGB,
- PAVGW,
- PCMPEQB,
- PCMPEQD,
- PCMPEQW,
- PCMPGTB,
- PCMPGTD,
- PCMPGTW,
- PINSRW,
- PMADDWD,
- PMAXSW,
- PMAXUB,
- PMINSW,
- PMINUB,
- PMOVMSKB,
- PMULHUW,
- PMULHW,
- PMULLW,
- PMULUDQ,
- POR,
- PSADBW,
- PSHUFW,
- PSHUFD,
- PSLLD,
- PSLLDQ,
- PSLLQ,
- PSLLW,
- PSRAD,
- PSRAW,
- PSRLD,
- PSRLDQ,
- PSRLQ,
- PSRLW,
- PSUBB,
- PSUBD,
- PSUBQ,
- PSUBSB,
- PSUBSW,
- PSUBUSB,
- PSUBUSW,
- PSUBW,
- PUNPCKHBW,
- PUNPCKHDQ,
- PUNPCKHWD,
- PUNPCKLBW,
- PUNPCKLDQ,
- PUNPCKLWD,
- PUNPCKLQDQ,
- PUNPCKHQDQ,
- PXOR,
- RCPPS,
- RSM,
- RSQRTPS,
- SHLD,
- SHUFPD,
- SHUFPS,
- SLHD,
- SQRTPS,
- SQRTPD,
- SUBPS,
- SUBPD,
- SYSENTER,
- SYSEXIT,
- UCOMISD,
- UCOMISS,
- VMREAD,
- VMWRITE,
- XORPS,
- XORPD,
-
- VMOVDDUP,
- VPSHUFLW,
- VPSHUFHW,
- VHADDPS,
- VHSUBPS,
- VADDSUBPS,
- VCVTPD2DQ,
- VLDDQU,
-
- VCOMISD,
- VCOMISS,
- VUCOMISD,
- VUCOMISS,
- VADDPD,
- VADDPS,
- VADDSD,
- VADDSS,
- VADDSUBPD,
- VAESDEC,
- VAESDECLAST,
- VAESENC,
- VAESENCLAST,
- VAESIMC,
- VAESKEYGENASSIST,
- VBLENDPD,
- VBLENDPS,
- VBLENDVPD,
- VBLENDVPS,
- VBROADCASTF128,
- VBROADCASTI128,
- VBROADCASTSD,
- VBROADCASTSS,
- VCMPSD,
- VCMPSS,
- VCMPPD,
- VCMPPS,
- VCVTDQ2PD,
- VCVTDQ2PS,
- VCVTPD2PS,
- VCVTPH2PS,
- VCVTPS2DQ,
- VCVTPS2PD,
- VCVTSS2SD,
- VCVTSI2SS,
- VCVTSI2SD,
- VCVTSD2SI,
- VCVTSD2SS,
- VCVTPS2PH,
- VCVTSS2SI,
- VCVTTPD2DQ,
- VCVTTPS2DQ,
- VCVTTSS2SI,
- VCVTTSD2SI,
- VDIVPD,
- VDIVPS,
- VDIVSD,
- VDIVSS,
- VDPPD,
- VDPPS,
- VEXTRACTF128,
- VEXTRACTI128,
- VEXTRACTPS,
- 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,
- VGATHERDPD,
- VGATHERDPS,
- VGATHERQPD,
- VGATHERQPS,
- VHADDPD,
- VHSUBPD,
- VINSERTF128,
- VINSERTI128,
- VINSERTPS,
- VMASKMOVDQU,
- VMASKMOVPD,
- VMASKMOVPS,
- VMAXPD,
- VMAXPS,
- VMAXSD,
- VMAXSS,
- VMINPD,
- VMINPS,
- VMINSD,
- VMINSS,
- VMOVAPD,
- VMOVAPS,
- VMOVD,
- VMOVDQA,
- VMOVDQU,
- VMOVHLPS,
- VMOVHPD,
- VMOVHPS,
- VMOVLHPS,
- VMOVLPD,
- VMOVLPS,
- VMOVMSKPD,
- VMOVMSKPS,
- VMOVNTDQ,
- VMOVNTDQA,
- VMOVNTPD,
- VMOVNTPS,
- VMOVQ,
- VMOVSS,
- VMOVSD,
- VMOVSHDUP,
- VMOVSLDUP,
- VMOVUPD,
- VMOVUPS,
- VMPSADBW,
- VMULPD,
- VMULPS,
- VMULSD,
- VMULSS,
- VPABSB,
- VPABSD,
- VPABSW,
- VPACKSSDW,
- VPACKUSDW,
- VPACKSSWB,
- VPACKUSWB,
- VPADDB,
- VPADDD,
- VPADDQ,
- VPADDSB,
- VPADDSW,
- VPADDUSB,
- VPADDUSW,
- VPADDW,
- VPALIGNR,
- VANDPD,
- VANDPS,
- VORPD,
- VORPS,
- VANDNPD,
- VANDNPS,
- VPAND,
- VPANDN,
- VPAVGB,
- VPAVGW,
- VPBLENDD,
- VPBLENDVB,
- VPBLENDW,
- VPBROADCASTB,
- VPBROADCASTD,
- VPBROADCASTQ,
- VPBROADCASTW,
- VPCLMULQDQ,
- VPCMPEQB,
- VPCMPEQD,
- VPCMPEQQ,
- VPCMPEQW,
- VPCMPGTB,
- VPCMPGTD,
- VPCMPGTQ,
- VPCMPGTW,
- VPCMPESTRI,
- VPCMPESTRM,
- VPCMPISTRI,
- VPCMPISTRM,
- VPERM2F128,
- VPERM2I128,
- VPERMD,
- VPERMILPD,
- VPERMILPS,
- VPERMPD,
- VPERMPS,
- VPERMQ,
- VPEXTRB,
- VPEXTRD,
- VPEXTRQ,
- VPEXTRW,
- VPGATHERDD,
- VPGATHERDQ,
- VPGATHERQD,
- VPGATHERQQ,
- VPHADDD,
- VPHADDSW,
- VPHADDW,
- VPMADDUBSW,
- VPHMINPOSUW,
- VPHSUBD,
- VPHSUBSW,
- VPHSUBW,
- VPINSRB,
- VPINSRD,
- VPINSRQ,
- VPINSRW,
- VPMADDWD,
- VPMASKMOVD,
- VPMASKMOVQ,
- VPMAXSB,
- VPMAXSD,
- VPMAXSW,
- VPMAXUB,
- VPMAXUW,
- VPMAXUD,
- VPMINSB,
- VPMINSW,
- VPMINSD,
- VPMINUB,
- VPMINUW,
- VPMINUD,
- VPMOVMSKB,
- VPMOVSXBD,
- VPMOVSXBQ,
- VPMOVSXBW,
- VPMOVSXDQ,
- VPMOVSXWD,
- VPMOVSXWQ,
- VPMOVZXBD,
- VPMOVZXBQ,
- VPMOVZXBW,
- VPMOVZXDQ,
- VPMOVZXWD,
- VPMOVZXWQ,
- VPMULDQ,
- VPMULHRSW,
- VPMULHUW,
- VPMULHW,
- VPMULLQ,
- VPMULLD,
- VPMULLW,
- VPMULUDQ,
- VPOR,
- VPSADBW,
- VPSHUFB,
- VPSHUFD,
- VPSIGNB,
- VPSIGND,
- VPSIGNW,
- VPSLLD,
- VPSLLDQ,
- VPSLLQ,
- VPSLLVD,
- VPSLLVQ,
- VPSLLW,
- VPSRAD,
- VPSRAVD,
- VPSRAW,
- VPSRLD,
- VPSRLDQ,
- VPSRLQ,
- VPSRLVD,
- VPSRLVQ,
- VPSRLW,
- VPSUBB,
- VPSUBD,
- VPSUBQ,
- VPSUBSB,
- VPSUBSW,
- VPSUBUSB,
- VPSUBUSW,
- VPSUBW,
- VPTEST,
- VPUNPCKHBW,
- VPUNPCKHDQ,
- VPUNPCKHQDQ,
- VPUNPCKHWD,
- VPUNPCKLBW,
- VPUNPCKLDQ,
- VPUNPCKLQDQ,
- VPUNPCKLWD,
- VPXOR,
- VRCPPS,
- VROUNDPD,
- VROUNDPS,
- VROUNDSD,
- VROUNDSS,
- VRSQRTPS,
- VRSQRTSS,
- VRCPSS,
- VSHUFPD,
- VSHUFPS,
- VSQRTPD,
- VSQRTPS,
- VSQRTSS,
- VSQRTSD,
- VSUBPD,
- VSUBPS,
- VSUBSD,
- VSUBSS,
- VTESTPD,
- VTESTPS,
- VUNPCKHPD,
- VUNPCKHPS,
- VUNPCKLPD,
- VUNPCKLPS,
- VXORPD,
- VXORPS,
- VZEROUPPER,
- VZEROALL,
- VLDMXCSR,
- VSTMXCSR,
-
- PCLMULQDQ,
- AESKEYGENASSIST,
- AESIMC,
- AESENC,
- AESENCLAST,
- AESDEC,
- AESDECLAST,
- PCMPGTQ,
- PCMPISTRM,
- PCMPISTRI,
- PCMPESTRI,
- PACKUSDW,
- PCMPESTRM,
- PCMPEQQ,
- PTEST,
- PHMINPOSUW,
- DPPS,
- DPPD,
- MPSADBW,
- PMOVZXDQ,
- PMOVSXDQ,
- PMOVZXBD,
- PMOVSXBD,
- PMOVZXWQ,
- PMOVSXWQ,
- PMOVZXBQ,
- PMOVSXBQ,
- PMOVSXWD,
- PMOVZXWD,
- PEXTRQ,
- PEXTRD,
- PEXTRW,
- PEXTRB,
- PMOVSXBW,
- PMOVZXBW,
- PINSRQ,
- PINSRD,
- PINSRB,
- EXTRACTPS,
- INSERTPS,
- ROUNDSS,
- ROUNDSD,
- ROUNDPS,
- ROUNDPD,
- PMAXSB,
- PMAXSD,
- PMAXUW,
- PMAXUD,
- PMINSD,
- PMINSB,
- PMINUD,
- PMINUW,
- BLENDW,
- PBLENDVB,
- PBLENDW,
- BLENDVPS,
- BLENDVPD,
- BLENDPS,
- BLENDPD,
- PMULDQ,
- MOVNTDQA,
- PMULLD,
- PALIGNR,
- PSIGNW,
- PSIGND,
- PSIGNB,
- PSHUFB,
- PMULHRSW,
- PMADDUBSW,
- PABSD,
- PABSW,
- PABSB,
- PHSUBSW,
- PHSUBW,
- PHSUBD,
- PHADDD,
- PHADDSW,
- PHADDW,
- HSUBPD,
- HADDPD,
-
- SHA1RNDS4,
- SHA1NEXTE,
- SHA1MSG1,
- SHA1MSG2,
- SHA256RNDS2,
- SHA256MSG1,
- SHA256MSG2,
-
- LZCNT,
- CLGI,
- STGI,
- SKINIT,
- VMLOAD,
- VMMCALL,
- VMSAVE,
- VMRUN,
- INVLPGA,
- INVLPGB,
- TLBSYNC,
-
- MOVBE,
-
- ADCX,
- ADOX,
-
- PREFETCHW,
-
- RDPID,
- CMPXCHG8B,
- CMPXCHG16B,
- VMPTRLD,
- VMPTRST,
-
- BZHI,
- MULX,
- SHLX,
- SHRX,
- SARX,
- PDEP,
- PEXT,
- RORX,
- XRSTORS,
- XRSTORS64,
- XSAVEC,
- XSAVEC64,
- XSAVES,
- XSAVES64,
-
- RDFSBASE,
- RDGSBASE,
- WRFSBASE,
- WRGSBASE,
-
- CRC32,
- SALC,
- XLAT,
-
- 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,
- 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,
- FXTRACT,
- FYL2X,
- FYL2XP1,
-
- LOOPNZ,
- LOOPZ,
- LOOP,
- JCXZ,
-
- PUSHA,
- POPA,
- BOUND,
- ARPL,
- AAS,
- AAA,
- DAS,
- DAA,
- AAM,
- AAD,
-
- // started shipping in Tremont, 2020 sept 23
- MOVDIR64B,
- MOVDIRI,
-
- // started shipping in Tiger Lake, 2020 sept 2
- AESDEC128KL,
- AESDEC256KL,
- AESDECWIDE128KL,
- AESDECWIDE256KL,
- AESENC128KL,
- AESENC256KL,
- AESENCWIDE128KL,
- AESENCWIDE256KL,
- ENCODEKEY128,
- ENCODEKEY256,
- LOADIWKEY,
-
- // unsure
- HRESET,
-
- // 3dnow
- FEMMS,
- PI2FW,
- PI2FD,
- PF2IW,
- PF2ID,
- PMULHRW,
- PFCMPGE,
- PFMIN,
- PFRCP,
- PFRSQRT,
- PFSUB,
- PFADD,
- PFCMPGT,
- PFMAX,
- PFRCPIT1,
- PFRSQIT1,
- PFSUBR,
- PFACC,
- PFCMPEQ,
- PFMUL,
- PFMULHRW,
- PFRCPIT2,
- PFNACC,
- PFPNACC,
- PSWAPD,
- PAVGUSB,
-
- // ENQCMD
- ENQCMD,
- ENQCMDS,
-
- // INVPCID
- INVEPT,
- INVVPID,
- INVPCID,
-
- // PTWRITE
- PTWRITE,
-
- // GFNI
- GF2P8AFFINEQB,
- GF2P8AFFINEINVQB,
- GF2P8MULB,
-
- // CET
- WRUSS,
- WRSS,
- INCSSP,
- SAVEPREVSSP,
- SETSSBSY,
- CLRSSBSY,
- RSTORSSP,
- ENDBR64,
- ENDBR32,
-
- // TDX
- TDCALL,
- SEAMRET,
- SEAMOPS,
- SEAMCALL,
-
- // WAITPKG
- TPAUSE,
- UMONITOR,
- UMWAIT,
-
- // UINTR
- UIRET,
- TESTUI,
- CLUI,
- STUI,
- SENDUIPI,
-
- // TSXLDTRK
- XSUSLDTRK,
- XRESLDTRK,
-
- // AVX512F
- VALIGND,
- VALIGNQ,
- VBLENDMPD,
- VBLENDMPS,
- VCOMPRESSPD,
- VCOMPRESSPS,
- VCVTPD2UDQ,
- VCVTTPD2UDQ,
- VCVTPS2UDQ,
- VCVTTPS2UDQ,
- VCVTQQ2PD,
- VCVTQQ2PS,
- VCVTSD2USI,
- VCVTTSD2USI,
- VCVTSS2USI,
- VCVTTSS2USI,
- VCVTUDQ2PD,
- VCVTUDQ2PS,
- VCVTUSI2USD,
- VCVTUSI2USS,
- VEXPANDPD,
- VEXPANDPS,
- VEXTRACTF32X4,
- VEXTRACTF64X4,
- VEXTRACTI32X4,
- VEXTRACTI64X4,
- VFIXUPIMMPD,
- VFIXUPIMMPS,
- VFIXUPIMMSD,
- VFIXUPIMMSS,
- VGETEXPPD,
- VGETEXPPS,
- VGETEXPSD,
- VGETEXPSS,
- VGETMANTPD,
- VGETMANTPS,
- VGETMANTSD,
- VGETMANTSS,
- VINSERTF32X4,
- VINSERTF64X4,
- VINSERTI64X4,
- VMOVDQA32,
- VMOVDQA64,
- VMOVDQU32,
- VMOVDQU64,
- VPBLENDMD,
- VPBLENDMQ,
- VPCMPD,
- VPCMPUD,
- VPCMPQ,
- VPCMPUQ,
- VPCOMPRESSQ,
- VPCOMPRESSD,
- VPERMI2D,
- VPERMI2Q,
- VPERMI2PD,
- VPERMI2PS,
- VPERMT2D,
- VPERMT2Q,
- VPERMT2PD,
- VPERMT2PS,
- VPMAXSQ,
- VPMAXUQ,
- VPMINSQ,
- VPMINUQ,
- VPMOVSQB,
- VPMOVUSQB,
- VPMOVSQW,
- VPMOVUSQW,
- VPMOVSQD,
- VPMOVUSQD,
- VPMOVSDB,
- VPMOVUSDB,
- VPMOVSDW,
- VPMOVUSDW,
- VPROLD,
- VPROLQ,
- VPROLVD,
- VPROLVQ,
- VPRORD,
- VPRORQ,
- VPRORRD,
- VPRORRQ,
- VPSCATTERDD,
- VPSCATTERDQ,
- VPSCATTERQD,
- VPSCATTERQQ,
- VPSRAQ,
- VPSRAVQ,
- VPTESTNMD,
- VPTESTNMQ,
- VPTERNLOGD,
- VPTERNLOGQ,
- VPTESTMD,
- VPTESTMQ,
- VRCP14PD,
- VRCP14PS,
- VRCP14SD,
- VRCP14SS,
- VRNDSCALEPD,
- VRNDSCALEPS,
- VRNDSCALESD,
- VRNDSCALESS,
- VRSQRT14PD,
- VRSQRT14PS,
- VRSQRT14SD,
- VRSQRT14SS,
- VSCALEDPD,
- VSCALEDPS,
- VSCALEDSD,
- VSCALEDSS,
- VSCATTERDD,
- VSCATTERDQ,
- VSCATTERQD,
- VSCATTERQQ,
- VSHUFF32X4,
- VSHUFF64X2,
- VSHUFI32X4,
- VSHUFI64X2,
-
- // AVX512DQ
- VCVTTPD2QQ,
- VCVTPD2QQ,
- VCVTTPD2UQQ,
- VCVTPD2UQQ,
- VCVTTPS2QQ,
- VCVTPS2QQ,
- VCVTTPS2UQQ,
- VCVTPS2UQQ,
- VCVTUQQ2PD,
- VCVTUQQ2PS,
- VEXTRACTF64X2,
- VEXTRACTI64X2,
- VFPCLASSPD,
- VFPCLASSPS,
- VFPCLASSSD,
- VFPCLASSSS,
- VINSERTF64X2,
- VINSERTI64X2,
- VPMOVM2D,
- VPMOVM2Q,
- VPMOVB2D,
- VPMOVQ2M,
- VRANGEPD,
- VRANGEPS,
- VRANGESD,
- VRANGESS,
- VREDUCEPD,
- VREDUCEPS,
- VREDUCESD,
- VREDUCESS,
-
- // AVX512BW
- VDBPSADBW,
- VMOVDQU8,
- VMOVDQU16,
- VPBLENDMB,
- VPBLENDMW,
- VPCMPB,
- VPCMPUB,
- VPCMPW,
- VPCMPUW,
- VPERMW,
- VPERMI2B,
- VPERMI2W,
- VPMOVM2B,
- VPMOVM2W,
- VPMOVB2M,
- VPMOVW2M,
- VPMOVSWB,
- VPMOVUSWB,
- VPSLLVW,
- VPSRAVW,
- VPSRLVW,
- VPTESTNMB,
- VPTESTNMW,
- VPTESTMB,
- VPTESTMW,
-
- // AVX512CD
- VPBROADCASTM,
- VPCONFLICTD,
- VPCONFLICTQ,
- VPLZCNTD,
- VPLZCNTQ,
-
- KUNPCKBW,
- KUNPCKWD,
- KUNPCKDQ,
-
- KADDB,
- KANDB,
- KANDNB,
- KMOVB,
- KNOTB,
- KORB,
- KORTESTB,
- KSHIFTLB,
- KSHIFTRB,
- KTESTB,
- KXNORB,
- KXORB,
- KADDW,
- KANDW,
- KANDNW,
- KMOVW,
- KNOTW,
- KORW,
- KORTESTW,
- KSHIFTLW,
- KSHIFTRW,
- KTESTW,
- KXNORW,
- KXORW,
- KADDD,
- KANDD,
- KANDND,
- KMOVD,
- KNOTD,
- KORD,
- KORTESTD,
- KSHIFTLD,
- KSHIFTRD,
- KTESTD,
- KXNORD,
- KXORD,
- KADDQ,
- KANDQ,
- KANDNQ,
- KMOVQ,
- KNOTQ,
- KORQ,
- KORTESTQ,
- KSHIFTLQ,
- KSHIFTRQ,
- KTESTQ,
- KXNORQ,
- KXORQ,
-
- // AVX512ER
- VEXP2PD,
- VEXP2PS,
- VEXP2SD,
- VEXP2SS,
- VRCP28PD,
- VRCP28PS,
- VRCP28SD,
- VRCP28SS,
- VRSQRT28PD,
- VRSQRT28PS,
- VRSQRT28SD,
- VRSQRT28SS,
-
- // AVX512PF
- VGATHERPF0DPD,
- VGATHERPF0DPS,
- VGATHERPF0QPD,
- VGATHERPF0QPS,
- VGATHERPF1DPD,
- VGATHERPF1DPS,
- VGATHERPF1QPD,
- VGATHERPF1QPS,
- VSCATTERPF0DPD,
- VSCATTERPF0DPS,
- VSCATTERPF0QPD,
- VSCATTERPF0QPS,
- VSCATTERPF1DPD,
- VSCATTERPF1DPS,
- VSCATTERPF1QPD,
- VSCATTERPF1QPS,
-
- // MPX
- BNDMK,
- BNDCL,
- BNDCU,
- BNDCN,
- BNDMOV,
- BNDLDX,
- BNDSTX,
-
- VGF2P8AFFINEQB,
- VGF2P8AFFINEINVQB,
- VPSHRDQ,
- VPSHRDD,
- VPSHRDW,
- VPSHLDQ,
- VPSHLDD,
- VPSHLDW,
- VBROADCASTF32X8,
- VBROADCASTF64X4,
- VBROADCASTF32X4,
- VBROADCASTF64X2,
- VBROADCASTF32X2,
- VBROADCASTI32X8,
- VBROADCASTI64X4,
- VBROADCASTI32X4,
- VBROADCASTI64X2,
- VBROADCASTI32X2,
- VEXTRACTI32X8,
- VEXTRACTF32X8,
- VINSERTI32X8,
- VINSERTF32X8,
- VINSERTI32X4,
- V4FNMADDSS,
- V4FNMADDPS,
- VCVTNEPS2BF16,
- V4FMADDSS,
- V4FMADDPS,
- VCVTNE2PS2BF16,
- VP2INTERSECTD,
- VP2INTERSECTQ,
- VP4DPWSSDS,
- VP4DPWSSD,
- VPDPWSSDS,
- VPDPWSSD,
- VPDPBUSDS,
- VDPBF16PS,
- VPBROADCASTMW2D,
- VPBROADCASTMB2Q,
- VPMOVD2M,
- VPMOVQD,
- VPMOVWB,
- VPMOVDB,
- VPMOVDW,
- VPMOVQB,
- VPMOVQW,
- VGF2P8MULB,
- VPMADD52HUQ,
- VPMADD52LUQ,
- VPSHUFBITQMB,
- VPERMB,
- VPEXPANDD,
- VPEXPANDQ,
- VPABSQ,
- VPRORVD,
- VPRORVQ,
- VPMULTISHIFTQB,
- VPERMT2B,
- VPERMT2W,
- VPSHRDVQ,
- VPSHRDVD,
- VPSHRDVW,
- VPSHLDVQ,
- VPSHLDVD,
- VPSHLDVW,
- VPCOMPRESSB,
- VPCOMPRESSW,
- VPEXPANDB,
- VPEXPANDW,
- VPOPCNTD,
- VPOPCNTQ,
- VPOPCNTB,
- VPOPCNTW,
- VSCALEFSS,
- VSCALEFSD,
- VSCALEFPS,
- VSCALEFPD,
- VPDPBUSD,
- VCVTUSI2SD,
- VCVTUSI2SS,
- VPXORD,
- VPXORQ,
- VPORD,
- VPORQ,
- VPANDND,
- VPANDNQ,
- VPANDD,
- VPANDQ,
-
- PSMASH,
- PVALIDATE,
- RMPADJUST,
- RMPUPDATE,
-}
-
impl PartialEq for Instruction {
fn eq(&self, other: &Self) -> bool {
if self.prefixes != other.prefixes {
@@ -2544,7 +1051,7 @@ pub struct Instruction {
operands: [OperandSpec; 4],
imm: u32,
disp: u32,
- opcode: Opcode,
+ pub(crate) opcode: Opcode,
mem_size: u8,
}
@@ -3431,666 +1938,6 @@ impl InstDecoder {
self.flags |= 1 << 63;
self
}
-
- /// Optionally reject or reinterpret instruction according to the decoder's
- /// declared extensions.
- fn revise_instruction(&self, inst: &mut Instruction) -> Result<(), DecodeError> {
- if inst.prefixes.evex().is_some() {
- if !self.avx512() {
- return Err(DecodeError::InvalidOpcode);
- } else {
- return Ok(());
- }
- }
- match inst.opcode {
- Opcode::TZCNT => {
- if !self.bmi1() {
- // tzcnt is only supported if bmi1 is enabled. without bmi1, this decodes as
- // bsf.
- inst.opcode = Opcode::BSF;
- }
- }
- Opcode::LDDQU |
- Opcode::ADDSUBPS |
- Opcode::ADDSUBPD |
- Opcode::HADDPS |
- Opcode::HSUBPS |
- Opcode::HADDPD |
- Opcode::HSUBPD |
- Opcode::MOVSHDUP |
- Opcode::MOVSLDUP |
- Opcode::MOVDDUP |
- Opcode::MONITOR |
- Opcode::MWAIT => {
- // via Intel section 5.7, SSE3 Instructions
- if !self.sse3() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PHADDW |
- Opcode::PHADDSW |
- Opcode::PHADDD |
- Opcode::PHSUBW |
- Opcode::PHSUBSW |
- Opcode::PHSUBD |
- Opcode::PABSB |
- Opcode::PABSW |
- Opcode::PABSD |
- Opcode::PMADDUBSW |
- Opcode::PMULHRSW |
- Opcode::PSHUFB |
- Opcode::PSIGNB |
- Opcode::PSIGNW |
- Opcode::PSIGND |
- Opcode::PALIGNR => {
- // via Intel section 5.8, SSSE3 Instructions
- if !self.ssse3() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PMULLD |
- Opcode::PMULDQ |
- Opcode::MOVNTDQA |
- Opcode::BLENDPD |
- Opcode::BLENDPS |
- Opcode::BLENDVPD |
- Opcode::BLENDVPS |
- Opcode::PBLENDVB |
- Opcode::BLENDW |
- Opcode::PMINUW |
- Opcode::PMINUD |
- Opcode::PMINSB |
- Opcode::PMINSD |
- Opcode::PMAXUW |
- Opcode::PMAXUD |
- Opcode::PMAXSB |
- Opcode::PMAXSD |
- Opcode::ROUNDPS |
- Opcode::ROUNDPD |
- Opcode::ROUNDSS |
- Opcode::ROUNDSD |
- Opcode::PBLENDW |
- Opcode::EXTRACTPS |
- Opcode::INSERTPS |
- Opcode::PINSRB |
- Opcode::PINSRD |
- Opcode::PINSRQ |
- Opcode::PMOVSXBW |
- Opcode::PMOVZXBW |
- Opcode::PMOVSXBD |
- Opcode::PMOVZXBD |
- Opcode::PMOVSXWD |
- Opcode::PMOVZXWD |
- Opcode::PMOVSXBQ |
- Opcode::PMOVZXBQ |
- Opcode::PMOVSXWQ |
- Opcode::PMOVZXWQ |
- Opcode::PMOVSXDQ |
- Opcode::PMOVZXDQ |
- Opcode::DPPS |
- Opcode::DPPD |
- Opcode::MPSADBW |
- Opcode::PHMINPOSUW |
- Opcode::PTEST |
- Opcode::PCMPEQQ |
- Opcode::PEXTRB |
- Opcode::PEXTRW |
- Opcode::PEXTRD |
- Opcode::PEXTRQ |
- Opcode::PACKUSDW => {
- // via Intel section 5.10, SSE4.1 Instructions
- if !self.sse4_1() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::EXTRQ |
- Opcode::INSERTQ |
- Opcode::MOVNTSS |
- Opcode::MOVNTSD => {
- if !self.sse4a() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::CRC32 |
- Opcode::PCMPESTRI |
- Opcode::PCMPESTRM |
- Opcode::PCMPISTRI |
- Opcode::PCMPISTRM |
- Opcode::PCMPGTQ => {
- // via Intel section 5.11, SSE4.2 Instructions
- if !self.sse4_2() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::AESDEC |
- Opcode::AESDECLAST |
- Opcode::AESENC |
- Opcode::AESENCLAST |
- Opcode::AESIMC |
- Opcode::AESKEYGENASSIST => {
- // via Intel section 5.12. AESNI AND PCLMULQDQ
- if !self.aesni() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::PCLMULQDQ => {
- // via Intel section 5.12. AESNI AND PCLMULQDQ
- if !self.pclmulqdq() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::XABORT |
- Opcode::XBEGIN |
- Opcode::XEND |
- Opcode::XTEST => {
- if !self.tsx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::SHA1MSG1 |
- Opcode::SHA1MSG2 |
- Opcode::SHA1NEXTE |
- Opcode::SHA1RNDS4 |
- Opcode::SHA256MSG1 |
- Opcode::SHA256MSG2 |
- Opcode::SHA256RNDS2 => {
- if !self.sha() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::ENCLV |
- Opcode::ENCLS |
- Opcode::ENCLU => {
- if !self.sgx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- // AVX...
- Opcode::VMOVDDUP |
- Opcode::VPSHUFLW |
- Opcode::VPSHUFHW |
- Opcode::VHADDPS |
- Opcode::VHSUBPS |
- Opcode::VADDSUBPS |
- Opcode::VCVTPD2DQ |
- Opcode::VLDDQU |
- Opcode::VCOMISD |
- Opcode::VCOMISS |
- Opcode::VUCOMISD |
- Opcode::VUCOMISS |
- Opcode::VADDPD |
- Opcode::VADDPS |
- Opcode::VADDSD |
- Opcode::VADDSS |
- Opcode::VADDSUBPD |
- Opcode::VBLENDPD |
- Opcode::VBLENDPS |
- Opcode::VBLENDVPD |
- Opcode::VBLENDVPS |
- Opcode::VBROADCASTF128 |
- Opcode::VBROADCASTI128 |
- Opcode::VBROADCASTSD |
- Opcode::VBROADCASTSS |
- Opcode::VCMPSD |
- Opcode::VCMPSS |
- Opcode::VCMPPD |
- Opcode::VCMPPS |
- Opcode::VCVTDQ2PD |
- Opcode::VCVTDQ2PS |
- Opcode::VCVTPD2PS |
- Opcode::VCVTPS2DQ |
- Opcode::VCVTPS2PD |
- Opcode::VCVTSS2SD |
- Opcode::VCVTSI2SS |
- Opcode::VCVTSI2SD |
- Opcode::VCVTSD2SI |
- Opcode::VCVTSD2SS |
- Opcode::VCVTSS2SI |
- Opcode::VCVTTPD2DQ |
- Opcode::VCVTTPS2DQ |
- Opcode::VCVTTSS2SI |
- Opcode::VCVTTSD2SI |
- Opcode::VDIVPD |
- Opcode::VDIVPS |
- Opcode::VDIVSD |
- Opcode::VDIVSS |
- Opcode::VDPPD |
- Opcode::VDPPS |
- Opcode::VEXTRACTF128 |
- Opcode::VEXTRACTI128 |
- Opcode::VEXTRACTPS |
- 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 |
- Opcode::VGATHERDPD |
- Opcode::VGATHERDPS |
- Opcode::VGATHERQPD |
- Opcode::VGATHERQPS |
- Opcode::VHADDPD |
- Opcode::VHSUBPD |
- Opcode::VINSERTF128 |
- Opcode::VINSERTI128 |
- Opcode::VINSERTPS |
- Opcode::VMASKMOVDQU |
- Opcode::VMASKMOVPD |
- Opcode::VMASKMOVPS |
- Opcode::VMAXPD |
- Opcode::VMAXPS |
- Opcode::VMAXSD |
- Opcode::VMAXSS |
- Opcode::VMINPD |
- Opcode::VMINPS |
- Opcode::VMINSD |
- Opcode::VMINSS |
- Opcode::VMOVAPD |
- Opcode::VMOVAPS |
- Opcode::VMOVD |
- Opcode::VMOVDQA |
- Opcode::VMOVDQU |
- Opcode::VMOVHLPS |
- Opcode::VMOVHPD |
- Opcode::VMOVHPS |
- Opcode::VMOVLHPS |
- Opcode::VMOVLPD |
- Opcode::VMOVLPS |
- Opcode::VMOVMSKPD |
- Opcode::VMOVMSKPS |
- Opcode::VMOVNTDQ |
- Opcode::VMOVNTDQA |
- Opcode::VMOVNTPD |
- Opcode::VMOVNTPS |
- Opcode::VMOVQ |
- Opcode::VMOVSS |
- Opcode::VMOVSD |
- Opcode::VMOVSHDUP |
- Opcode::VMOVSLDUP |
- Opcode::VMOVUPD |
- Opcode::VMOVUPS |
- Opcode::VMPSADBW |
- Opcode::VMULPD |
- Opcode::VMULPS |
- Opcode::VMULSD |
- Opcode::VMULSS |
- Opcode::VPABSB |
- Opcode::VPABSD |
- Opcode::VPABSW |
- Opcode::VPACKSSDW |
- Opcode::VPACKUSDW |
- Opcode::VPACKSSWB |
- Opcode::VPACKUSWB |
- Opcode::VPADDB |
- Opcode::VPADDD |
- Opcode::VPADDQ |
- Opcode::VPADDSB |
- Opcode::VPADDSW |
- Opcode::VPADDUSB |
- Opcode::VPADDUSW |
- Opcode::VPADDW |
- Opcode::VPALIGNR |
- Opcode::VPAND |
- Opcode::VANDPD |
- Opcode::VANDPS |
- Opcode::VANDNPD |
- Opcode::VANDNPS |
- Opcode::VORPD |
- Opcode::VORPS |
- Opcode::VPANDN |
- Opcode::VPAVGB |
- Opcode::VPAVGW |
- Opcode::VPBLENDD |
- Opcode::VPBLENDVB |
- Opcode::VPBLENDW |
- Opcode::VPBROADCASTB |
- Opcode::VPBROADCASTD |
- Opcode::VPBROADCASTQ |
- Opcode::VPBROADCASTW |
- Opcode::VPCLMULQDQ |
- Opcode::VPCMPEQB |
- Opcode::VPCMPEQD |
- Opcode::VPCMPEQQ |
- Opcode::VPCMPEQW |
- Opcode::VPCMPGTB |
- Opcode::VPCMPGTD |
- Opcode::VPCMPGTQ |
- Opcode::VPCMPGTW |
- Opcode::VPCMPESTRI |
- Opcode::VPCMPESTRM |
- Opcode::VPCMPISTRI |
- Opcode::VPCMPISTRM |
- Opcode::VPERM2F128 |
- Opcode::VPERM2I128 |
- Opcode::VPERMD |
- Opcode::VPERMILPD |
- Opcode::VPERMILPS |
- Opcode::VPERMPD |
- Opcode::VPERMPS |
- Opcode::VPERMQ |
- Opcode::VPEXTRB |
- Opcode::VPEXTRD |
- Opcode::VPEXTRQ |
- Opcode::VPEXTRW |
- Opcode::VPGATHERDD |
- Opcode::VPGATHERDQ |
- Opcode::VPGATHERQD |
- Opcode::VPGATHERQQ |
- Opcode::VPHADDD |
- Opcode::VPHADDSW |
- Opcode::VPHADDW |
- Opcode::VPMADDUBSW |
- Opcode::VPHMINPOSUW |
- Opcode::VPHSUBD |
- Opcode::VPHSUBSW |
- Opcode::VPHSUBW |
- Opcode::VPINSRB |
- Opcode::VPINSRD |
- Opcode::VPINSRQ |
- Opcode::VPINSRW |
- Opcode::VPMADDWD |
- Opcode::VPMASKMOVD |
- Opcode::VPMASKMOVQ |
- Opcode::VPMAXSB |
- Opcode::VPMAXSD |
- Opcode::VPMAXSW |
- Opcode::VPMAXUB |
- Opcode::VPMAXUW |
- Opcode::VPMAXUD |
- Opcode::VPMINSB |
- Opcode::VPMINSW |
- Opcode::VPMINSD |
- Opcode::VPMINUB |
- Opcode::VPMINUW |
- Opcode::VPMINUD |
- Opcode::VPMOVMSKB |
- 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::VPMULHRSW |
- Opcode::VPMULHUW |
- Opcode::VPMULHW |
- Opcode::VPMULLQ |
- Opcode::VPMULLD |
- Opcode::VPMULLW |
- Opcode::VPMULUDQ |
- Opcode::VPOR |
- Opcode::VPSADBW |
- Opcode::VPSHUFB |
- Opcode::VPSHUFD |
- Opcode::VPSIGNB |
- Opcode::VPSIGND |
- Opcode::VPSIGNW |
- Opcode::VPSLLD |
- Opcode::VPSLLDQ |
- Opcode::VPSLLQ |
- Opcode::VPSLLVD |
- Opcode::VPSLLVQ |
- Opcode::VPSLLW |
- Opcode::VPSRAD |
- Opcode::VPSRAVD |
- Opcode::VPSRAW |
- Opcode::VPSRLD |
- Opcode::VPSRLDQ |
- Opcode::VPSRLQ |
- Opcode::VPSRLVD |
- Opcode::VPSRLVQ |
- Opcode::VPSRLW |
- Opcode::VPSUBB |
- Opcode::VPSUBD |
- Opcode::VPSUBQ |
- Opcode::VPSUBSB |
- Opcode::VPSUBSW |
- Opcode::VPSUBUSB |
- Opcode::VPSUBUSW |
- Opcode::VPSUBW |
- Opcode::VPTEST |
- Opcode::VPUNPCKHBW |
- Opcode::VPUNPCKHDQ |
- Opcode::VPUNPCKHQDQ |
- Opcode::VPUNPCKHWD |
- Opcode::VPUNPCKLBW |
- Opcode::VPUNPCKLDQ |
- Opcode::VPUNPCKLQDQ |
- Opcode::VPUNPCKLWD |
- Opcode::VPXOR |
- Opcode::VRCPPS |
- Opcode::VROUNDPD |
- Opcode::VROUNDPS |
- Opcode::VROUNDSD |
- Opcode::VROUNDSS |
- Opcode::VRSQRTPS |
- Opcode::VRSQRTSS |
- Opcode::VRCPSS |
- Opcode::VSHUFPD |
- Opcode::VSHUFPS |
- Opcode::VSQRTPD |
- Opcode::VSQRTPS |
- Opcode::VSQRTSS |
- Opcode::VSQRTSD |
- Opcode::VSUBPD |
- Opcode::VSUBPS |
- Opcode::VSUBSD |
- Opcode::VSUBSS |
- Opcode::VTESTPD |
- Opcode::VTESTPS |
- Opcode::VUNPCKHPD |
- Opcode::VUNPCKHPS |
- Opcode::VUNPCKLPD |
- Opcode::VUNPCKLPS |
- Opcode::VXORPD |
- Opcode::VXORPS |
- Opcode::VZEROUPPER |
- Opcode::VZEROALL |
- Opcode::VLDMXCSR |
- Opcode::VSTMXCSR => {
- // TODO: check a table for these
- if !self.avx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VAESDEC |
- Opcode::VAESDECLAST |
- Opcode::VAESENC |
- Opcode::VAESENCLAST |
- Opcode::VAESIMC |
- Opcode::VAESKEYGENASSIST => {
- // TODO: check a table for these
- if !self.avx() || !self.aesni() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::MOVBE => {
- if !self.movbe() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::POPCNT => {
- /*
- * from the intel SDM:
- * ```
- * Before an application attempts to use the POPCNT instruction, it must check that
- * the processor supports SSE4.2 (if CPUID.01H:ECX.SSE4_2[bit 20] = 1) and POPCNT
- * (if CPUID.01H:ECX.POPCNT[bit 23] = 1).
- * ```
- */
- if self.intel_quirks() && (self.sse4_2() || self.popcnt()) {
- return Ok(());
- } else if !self.popcnt() {
- /*
- * elsewhere from the amd APM:
- * `Instruction Subsets and CPUID Feature Flags` on page 507 indicates that
- * popcnt is present when the popcnt bit is reported by cpuid. this seems to be
- * the less quirky default, so `intel_quirks` is considered the outlier, and
- * before this default.
- * */
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::LZCNT => {
- /*
- * amd APM, `LZCNT` page 212:
- * LZCNT is an Advanced Bit Manipulation (ABM) instruction. Support for the LZCNT
- * instruction is indicated by CPUID Fn8000_0001_ECX[ABM] = 1.
- *
- * meanwhile the intel SDM simply states:
- * ```
- * CPUID.EAX=80000001H:ECX.LZCNT[bit 5]: if 1 indicates the processor supports the
- * LZCNT instruction.
- * ```
- *
- * so that's considered the less-quirky (default) case here.
- * */
- if self.amd_quirks() && !self.abm() {
- return Err(DecodeError::InvalidOpcode);
- } else if !self.lzcnt() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::ADCX |
- Opcode::ADOX => {
- if !self.adx() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VMRUN |
- Opcode::VMLOAD |
- Opcode::VMSAVE |
- Opcode::CLGI |
- Opcode::VMMCALL |
- Opcode::INVLPGA => {
- if !self.svm() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::STGI |
- Opcode::SKINIT => {
- if !self.svm() || !self.skinit() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::LAHF |
- Opcode::SAHF => {
- if !self.lahfsahf() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::VCVTPS2PH |
- Opcode::VCVTPH2PS => {
- /*
- * from intel SDM:
- * ```
- * 14.4.1 Detection of F16C Instructions Application using float 16 instruction
- * must follow a detection sequence similar to AVX to ensure: • The OS has
- * enabled YMM state management support, • The processor support AVX as
- * indicated by the CPUID feature flag, i.e. CPUID.01H:ECX.AVX[bit 28] = 1. •
- * The processor support 16-bit floating-point conversion instructions via a
- * CPUID feature flag (CPUID.01H:ECX.F16C[bit 29] = 1).
- * ```
- *
- * TODO: only the VEX-coded variant of this instruction should be gated on `f16c`.
- * the EVEX-coded variant should be gated on `avx512f` or `avx512vl` if not
- * EVEX.512-coded.
- */
- if !self.avx() || !self.f16c() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::RDRAND => {
- if !self.rdrand() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::RDSEED => {
- if !self.rdseed() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- Opcode::MONITORX | Opcode::MWAITX | // these are gated on the `monitorx` and `mwaitx` cpuid bits, but are AMD-only.
- Opcode::CLZERO | Opcode::RDPRU => { // again, gated on specific cpuid bits, but AMD-only.
- if !self.amd_quirks() {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- other => {
- if !self.bmi1() {
- if BMI1.contains(&other) {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- if !self.bmi2() {
- if BMI2.contains(&other) {
- return Err(DecodeError::InvalidOpcode);
- }
- }
- }
- }
- Ok(())
- }
}
impl Default for InstDecoder {
@@ -4116,7 +1963,7 @@ impl Decoder<Arch> for InstDecoder {
}
if self != &InstDecoder::default() {
- self.revise_instruction(&mut instr)?;
+ crate::generated::real_mode::revise_instruction(self, &mut instr)?;
}
Ok(instr)
@@ -4141,7 +1988,7 @@ impl AnnotatingDecoder<Arch> for InstDecoder {
}
if self != &InstDecoder::default() {
- self.revise_instruction(instr)?;
+ crate::generated::real_mode::revise_instruction(self, instr)?;
}
Ok(())
@@ -7680,7 +5527,7 @@ fn unlikely_operands<
vex::three_byte_vex(words, modrm, instruction, sink)?;
if decoder != &InstDecoder::default() {
- decoder.revise_instruction(instruction)?;
+ crate::generated::real_mode::revise_instruction(decoder, instruction)?;
}
return Ok(());
}
@@ -7713,7 +5560,7 @@ fn unlikely_operands<
vex::two_byte_vex(words, modrm, instruction, sink)?;
if decoder != &InstDecoder::default() {
- decoder.revise_instruction(instruction)?;
+ crate::generated::real_mode::revise_instruction(decoder, instruction)?;
}
return Ok(());
}