1use super::generated::{cs_x86, cs_x86_encoding, cs_x86_op, x86_op_mem};
2use core::marker::PhantomData;
3
4#[repr(transparent)]
5#[derive(Clone, Copy)]
6pub struct Details<'c> {
7 inner: cs_x86,
8 _phantom: PhantomData<&'c ()>,
9}
10
11impl<'c> Details<'c> {
12 pub fn has_prefix(&self, mut prefix: Prefix) -> bool {
14 if prefix == Prefix::RepE {
15 prefix = Prefix::Rep
16 }
17
18 let idx = match prefix {
19 Prefix::Lock | Prefix::Rep | Prefix::RepNE | Prefix::RepE => 0,
20 Prefix::CS | Prefix::SS | Prefix::DS | Prefix::ES | Prefix::FS | Prefix::GS => 1,
21 Prefix::OpSize => 2,
22 Prefix::AddrSize => 3,
23 };
24
25 self.inner.prefix[idx] == prefix.to_primitive()
26 }
27
28 pub fn opcode(&self) -> &[u8] {
31 let len = self.inner.opcode.iter().position(|&b| b == 0).unwrap_or(0);
32 &self.inner.opcode[..len]
33 }
34
35 pub fn rex(&self) -> u8 {
38 self.inner.rex
39 }
40
41 pub fn addr_size(&self) -> u8 {
43 self.inner.addr_size
44 }
45
46 pub fn modrm(&self) -> u8 {
48 self.inner.modrm
49 }
50
51 pub fn sib(&self) -> u8 {
53 self.inner.sib
54 }
55
56 pub fn disp(&self) -> i64 {
59 self.inner.disp
60 }
61
62 pub fn sib_index(&self) -> Reg {
64 Reg::from_c(self.inner.sib_index).unwrap_or(Reg::Invalid)
65 }
66
67 pub fn sib_scale(&self) -> i8 {
69 self.inner.sib_scale
70 }
71
72 pub fn sib_base(&self) -> Reg {
74 Reg::from_c(self.inner.sib_base).unwrap_or(Reg::Invalid)
75 }
76
77 pub fn xop_cc(&self) -> XopCC {
79 XopCC::from_c(self.inner.xop_cc).unwrap_or(XopCC::Invalid)
80 }
81
82 pub fn sse_cc(&self) -> SseCC {
84 SseCC::from_c(self.inner.sse_cc).unwrap_or(SseCC::Invalid)
85 }
86
87 pub fn avx_cc(&self) -> AvxCC {
89 AvxCC::from_c(self.inner.avx_cc).unwrap_or(AvxCC::Invalid)
90 }
91
92 pub fn avx_sae(&self) -> bool {
94 self.inner.avx_sae
95 }
96
97 pub fn avx_rm(&self) -> AvxRm {
99 AvxRm::from_c(self.inner.avx_rm).unwrap_or(AvxRm::Invalid)
100 }
101
102 pub fn op_count(&self) -> usize {
106 self.inner.op_count as usize
107 }
108
109 pub fn operands(&self) -> &[Op] {
113 unsafe {
114 &*(&self.inner.operands[..self.inner.op_count as usize] as *const [cs_x86_op]
115 as *const [Op])
116 }
117 }
118
119 pub fn encoding(&self) -> &Encoding {
121 unsafe { &*(&self.inner.encoding as *const cs_x86_encoding as *const Encoding) }
122 }
123
124 pub fn eflags(&self) -> EFlags {
128 EFlags::from_bits_truncate(unsafe { self.inner.__bindgen_anon_1.eflags })
129 }
130
131 pub fn fpu_flags(&self) -> FpuFlags {
135 FpuFlags::from_bits_truncate(unsafe { self.inner.__bindgen_anon_1.fpu_flags })
136 }
137}
138
139#[repr(transparent)]
140#[derive(Clone, Copy)]
141pub struct Op {
142 inner: cs_x86_op,
143}
144
145impl Op {
146 pub fn op_type(&self) -> OpType {
148 OpType::from_c(self.inner.type_).unwrap_or(OpType::Invalid)
149 }
150
151 pub fn value(&self) -> OpValue {
153 match self.op_type() {
154 OpType::Invalid => OpValue::Imm(0),
155 OpType::Reg => OpValue::Reg(
156 Reg::from_c(unsafe { self.inner.__bindgen_anon_1.reg }).unwrap_or(Reg::Invalid),
157 ),
158 OpType::Imm => OpValue::Imm(unsafe { self.inner.__bindgen_anon_1.imm }),
159 OpType::Mem => OpValue::Mem(unsafe {
160 OpMem {
161 inner: self.inner.__bindgen_anon_1.mem,
162 }
163 }),
164 }
165 }
166
167 pub fn size(&self) -> usize {
169 self.inner.size as usize
170 }
171
172 pub fn access(&self) -> super::Access {
174 super::Access::from_bits_truncate(self.inner.access)
175 }
176
177 pub fn avx_bcast(&self) -> AvxBroadcast {
179 AvxBroadcast::from_c(self.inner.avx_bcast).unwrap_or(AvxBroadcast::Invalid)
180 }
181
182 pub fn avx_zero_opmask(&self) -> bool {
184 self.inner.avx_zero_opmask
185 }
186}
187
188pub enum OpValue {
189 Reg(Reg),
190 Imm(i64),
191 Mem(OpMem),
192}
193
194#[repr(transparent)]
195#[derive(Clone, Copy)]
196pub struct Encoding {
197 inner: cs_x86_encoding,
198}
199
200impl Encoding {
201 pub fn modrm_offset(&self) -> u8 {
203 self.inner.modrm_offset
204 }
205
206 pub fn disp_offset(&self) -> u8 {
208 self.inner.disp_offset
209 }
210
211 pub fn disp_size(&self) -> u8 {
213 self.inner.disp_size
214 }
215
216 pub fn imm_offset(&self) -> u8 {
218 self.inner.imm_offset
219 }
220
221 pub fn imm_size(&self) -> u8 {
223 self.inner.imm_size
224 }
225}
226
227#[repr(C)]
228#[derive(Clone, Copy)]
229pub struct OpMem {
230 inner: x86_op_mem,
231}
232
233impl OpMem {
234 pub fn segment(&self) -> Reg {
236 Reg::from_c(self.inner.segment).unwrap_or(Reg::Invalid)
237 }
238
239 pub fn base(&self) -> Reg {
241 Reg::from_c(self.inner.base).unwrap_or(Reg::Invalid)
242 }
243
244 pub fn index(&self) -> Reg {
246 Reg::from_c(self.inner.index).unwrap_or(Reg::Invalid)
247 }
248
249 pub fn scale(&self) -> i32 {
251 self.inner.scale as i32
252 }
253
254 pub fn disp(&self) -> i64 {
256 self.inner.disp
257 }
258}
259
260c_enum! {
261 #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
263 pub enum Prefix: u8 {
264 Lock = 0xf0,
266 Rep = 0xf3,
268
269 RepE = 0x03,
273
274 RepNE = 0xf2,
276
277 CS = 0x2e,
279 SS = 0x36,
281 DS = 0x3e,
283 ES = 0x26,
285 FS = 0x64,
287 GS = 0x65,
289
290 OpSize = 0x66,
292
293 AddrSize = 0x67,
295 }
296}
297
298c_enum! {
299 #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
301 pub enum OpType: u8 {
302 Invalid = 0,
304 Reg,
306 Imm,
308 Mem,
310 }
311}
312
313c_enum! {
314 #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
316 pub enum XopCC: u8 {
317 Invalid = 0,
319 Lt,
320 Le,
321 Get,
322 Ge,
323 Eq,
324 Neq,
325 False,
326 True,
327 }
328}
329
330c_enum! {
331 #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
333 pub enum AvxBroadcast: u8 {
334 Invalid = 0,
335 To2,
337 To4,
339 To8,
341 To16,
343 }
344}
345
346c_enum! {
347 #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
349 pub enum SseCC: u8 {
350 Invalid = 0,
351 Eq,
352 Lt,
353 Le,
354 Unord,
355 Neq,
356 Nlt,
357 Nle,
358 Ord
359 }
360}
361
362c_enum! {
363 #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
365 pub enum AvxCC: u8 {
366 Invalid = 0,
367 Eq,
368 Lt,
369 Le,
370 Unord,
371 Neq,
372 Nlt,
373 Nle,
374 Ord,
375 EqUq,
376 Nge,
377 Ngt,
378 False,
379 NeqOq,
380 Ge,
381 Gt,
382 True,
383 EqOs,
384 LtOq,
385 LeOq,
386 UnordS,
387 NeqUs,
388 NltUq,
389 NleUq,
390 OrdS,
391 EqUs,
392 NgeUq,
393 NgtUq,
394 FalseOs,
395 NeqOs,
396 GeOq,
397 GtOq,
398 TrueUs,
399 }
400}
401
402c_enum! {
403 #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)]
405 pub enum AvxRm: u8 {
406 Invalid = 0,
407 Rn,
409 Rd,
411 Ru,
413 Rz
415 }
416}
417
418bitflags::bitflags! {
419 pub struct EFlags: u64 {
420 const MODIFY_AF = 1 << 0;
421 const MODIFY_CF = 1 << 1;
422 const MODIFY_SF = 1 << 2;
423 const MODIFY_ZF = 1 << 3;
424 const MODIFY_PF = 1 << 4;
425 const MODIFY_OF = 1 << 5;
426 const MODIFY_TF = 1 << 6;
427 const MODIFY_IF = 1 << 7;
428 const MODIFY_DF = 1 << 8;
429 const MODIFY_NT = 1 << 9;
430 const MODIFY_RF = 1 << 10;
431 const PRIOR_OF = 1 << 11;
432 const PRIOR_SF = 1 << 12;
433 const PRIOR_ZF = 1 << 13;
434 const PRIOR_AF = 1 << 14;
435 const PRIOR_PF = 1 << 15;
436 const PRIOR_CF = 1 << 16;
437 const PRIOR_TF = 1 << 17;
438 const PRIOR_IF = 1 << 18;
439 const PRIOR_DF = 1 << 19;
440 const PRIOR_NT = 1 << 20;
441 const RESET_OF = 1 << 21;
442 const RESET_CF = 1 << 22;
443 const RESET_DF = 1 << 23;
444 const RESET_IF = 1 << 24;
445 const RESET_SF = 1 << 25;
446 const RESET_AF = 1 << 26;
447 const RESET_TF = 1 << 27;
448 const RESET_NT = 1 << 28;
449 const RESET_PF = 1 << 29;
450 const SET_CF = 1 << 30;
451 const SET_DF = 1 << 31;
452 const SET_IF = 1 << 32;
453 const TEST_OF = 1 << 33;
454 const TEST_SF = 1 << 34;
455 const TEST_ZF = 1 << 35;
456 const TEST_PF = 1 << 36;
457 const TEST_CF = 1 << 37;
458 const TEST_NT = 1 << 38;
459 const TEST_DF = 1 << 39;
460 const UNDEFINED_OF = 1 << 40;
461 const UNDEFINED_SF = 1 << 41;
462 const UNDEFINED_ZF = 1 << 42;
463 const UNDEFINED_PF = 1 << 43;
464 const UNDEFINED_AF = 1 << 44;
465 const UNDEFINED_CF = 1 << 45;
466 const RESET_RF = 1 << 46;
467 const TEST_RF = 1 << 47;
468 const TEST_IF = 1 << 48;
469 const TEST_TF = 1 << 49;
470 const TEST_AF = 1 << 50;
471 const RESET_ZF = 1 << 51;
472 const SET_OF = 1 << 52;
473 const SET_SF = 1 << 53;
474 const SET_ZF = 1 << 54;
475 const SET_AF = 1 << 55;
476 const SET_PF = 1 << 56;
477 const RESET_0F = 1 << 57;
478 const RESET_AC = 1 << 58;
479 }
480}
481
482bitflags::bitflags! {
483 pub struct FpuFlags: u64 {
484 const MODIFY_C0 = 1 << 0;
485 const MODIFY_C1 = 1 << 1;
486 const MODIFY_C2 = 1 << 2;
487 const MODIFY_C3 = 1 << 3;
488 const RESET_C0 = 1 << 4;
489 const RESET_C1 = 1 << 5;
490 const RESET_C2 = 1 << 6;
491 const RESET_C3 = 1 << 7;
492 const SET_C0 = 1 << 8;
493 const SET_C1 = 1 << 9;
494 const SET_C2 = 1 << 10;
495 const SET_C3 = 1 << 11;
496 const UNDEFINED_C0 = 1 << 12;
497 const UNDEFINED_C1 = 1 << 13;
498 const UNDEFINED_C2 = 1 << 14;
499 const UNDEFINED_C3 = 1 << 15;
500 const TEST_C0 = 1 << 16;
501 const TEST_C1 = 1 << 17;
502 const TEST_C2 = 1 << 18;
503 const TEST_C3 = 1 << 19;
504 }
505}
506
507#[repr(C)]
508#[derive(Clone, Copy)]
509union X86EFlagsOrFpuFlags {
510 eflags: u64,
513 fpu_flags: u64,
516}
517
518c_enum_big! {
519 #[non_exhaustive]
520 #[derive(Copy, Clone, PartialEq, Eq, Hash)]
521 pub enum Reg: u8 {
522 @Start = Invalid,
523 @End = Ending,
524
525 Invalid = 0,
526 Ah,
527 Al,
528 Ax,
529 Bh,
530 Bl,
531 Bp,
532 Bpl,
533 Bx,
534 Ch,
535 Cl,
536 Cs,
537 Cx,
538 Dh,
539 Di,
540 Dil,
541 Dl,
542 Ds,
543 Dx,
544 Eax,
545 Ebp,
546 Ebx,
547 Ecx,
548 Edi,
549 Edx,
550 Eflags,
551 Eip,
552 Eiz,
553 Es,
554 Esi,
555 Esp,
556 Fpsw,
557 Fs,
558 Gs,
559 Ip,
560 Rax,
561 Rbp,
562 Rbx,
563 Rcx,
564 Rdi,
565 Rdx,
566 Rip,
567 Riz,
568 Rsi,
569 Rsp,
570 Si,
571 Sil,
572 Sp,
573 Spl,
574 Ss,
575 Cr0,
576 Cr1,
577 Cr2,
578 Cr3,
579 Cr4,
580 Cr5,
581 Cr6,
582 Cr7,
583 Cr8,
584 Cr9,
585 Cr10,
586 Cr11,
587 Cr12,
588 Cr13,
589 Cr14,
590 Cr15,
591 Dr0,
592 Dr1,
593 Dr2,
594 Dr3,
595 Dr4,
596 Dr5,
597 Dr6,
598 Dr7,
599 Dr8,
600 Dr9,
601 Dr10,
602 Dr11,
603 Dr12,
604 Dr13,
605 Dr14,
606 Dr15,
607 Fp0,
608 Fp1,
609 Fp2,
610 Fp3,
611 Fp4,
612 Fp5,
613 Fp6,
614 Fp7,
615 K0,
616 K1,
617 K2,
618 K3,
619 K4,
620 K5,
621 K6,
622 K7,
623 Mm0,
624 Mm1,
625 Mm2,
626 Mm3,
627 Mm4,
628 Mm5,
629 Mm6,
630 Mm7,
631 R8,
632 R9,
633 R10,
634 R11,
635 R12,
636 R13,
637 R14,
638 R15,
639 St0,
640 St1,
641 St2,
642 St3,
643 St4,
644 St5,
645 St6,
646 St7,
647 Xmm0,
648 Xmm1,
649 Xmm2,
650 Xmm3,
651 Xmm4,
652 Xmm5,
653 Xmm6,
654 Xmm7,
655 Xmm8,
656 Xmm9,
657 Xmm10,
658 Xmm11,
659 Xmm12,
660 Xmm13,
661 Xmm14,
662 Xmm15,
663 Xmm16,
664 Xmm17,
665 Xmm18,
666 Xmm19,
667 Xmm20,
668 Xmm21,
669 Xmm22,
670 Xmm23,
671 Xmm24,
672 Xmm25,
673 Xmm26,
674 Xmm27,
675 Xmm28,
676 Xmm29,
677 Xmm30,
678 Xmm31,
679 Ymm0,
680 Ymm1,
681 Ymm2,
682 Ymm3,
683 Ymm4,
684 Ymm5,
685 Ymm6,
686 Ymm7,
687 Ymm8,
688 Ymm9,
689 Ymm10,
690 Ymm11,
691 Ymm12,
692 Ymm13,
693 Ymm14,
694 Ymm15,
695 Ymm16,
696 Ymm17,
697 Ymm18,
698 Ymm19,
699 Ymm20,
700 Ymm21,
701 Ymm22,
702 Ymm23,
703 Ymm24,
704 Ymm25,
705 Ymm26,
706 Ymm27,
707 Ymm28,
708 Ymm29,
709 Ymm30,
710 Ymm31,
711 Zmm0,
712 Zmm1,
713 Zmm2,
714 Zmm3,
715 Zmm4,
716 Zmm5,
717 Zmm6,
718 Zmm7,
719 Zmm8,
720 Zmm9,
721 Zmm10,
722 Zmm11,
723 Zmm12,
724 Zmm13,
725 Zmm14,
726 Zmm15,
727 Zmm16,
728 Zmm17,
729 Zmm18,
730 Zmm19,
731 Zmm20,
732 Zmm21,
733 Zmm22,
734 Zmm23,
735 Zmm24,
736 Zmm25,
737 Zmm26,
738 Zmm27,
739 Zmm28,
740 Zmm29,
741 Zmm30,
742 Zmm31,
743 R8b,
744 R9b,
745 R10b,
746 R11b,
747 R12b,
748 R13b,
749 R14b,
750 R15b,
751 R8d,
752 R9d,
753 R10d,
754 R11d,
755 R12d,
756 R13d,
757 R14d,
758 R15d,
759 R8w,
760 R9w,
761 R10w,
762 R11w,
763 R12w,
764 R13w,
765 R14w,
766 R15w,
767
768 #[doc(hidden)]
769 Ending,
770 }
771}
772
773c_enum_big! {
774 #[non_exhaustive]
775 #[derive(Copy, Clone, PartialEq, Eq, Hash)]
776 pub enum InsnId: u16 {
777 @Start = Invalid,
778 @End = Ending,
779
780 Invalid = 0,
781
782 Aaa,
783 Aad,
784 Aam,
785 Aas,
786 Fabs,
787 Adc,
788 Adcx,
789 Add,
790 Addpd,
791 Addps,
792 Addsd,
793 Addss,
794 Addsubpd,
795 Addsubps,
796 Fadd,
797 Fiadd,
798 Faddp,
799 Adox,
800 Aesdeclast,
801 Aesdec,
802 Aesenclast,
803 Aesenc,
804 Aesimc,
805 Aeskeygenassist,
806 And,
807 Andn,
808 Andnpd,
809 Andnps,
810 Andpd,
811 Andps,
812 Arpl,
813 Bextr,
814 Blcfill,
815 Blci,
816 Blcic,
817 Blcmsk,
818 Blcs,
819 Blendpd,
820 Blendps,
821 Blendvpd,
822 Blendvps,
823 Blsfill,
824 Blsi,
825 Blsic,
826 Blsmsk,
827 Blsr,
828 Bound,
829 Bsf,
830 Bsr,
831 Bswap,
832 Bt,
833 Btc,
834 Btr,
835 Bts,
836 Bzhi,
837 Call,
838 Cbw,
839 Cdq,
840 Cdqe,
841 Fchs,
842 Clac,
843 Clc,
844 Cld,
845 Clflush,
846 Clflushopt,
847 Clgi,
848 Cli,
849 Clts,
850 Clwb,
851 Cmc,
852 Cmova,
853 Cmovae,
854 Cmovb,
855 Cmovbe,
856 Fcmovbe,
857 Fcmovb,
858 Cmove,
859 Fcmove,
860 Cmovg,
861 Cmovge,
862 Cmovl,
863 Cmovle,
864 Fcmovnbe,
865 Fcmovnb,
866 Cmovne,
867 Fcmovne,
868 Cmovno,
869 Cmovnp,
870 Fcmovnu,
871 Cmovns,
872 Cmovo,
873 Cmovp,
874 Fcmovu,
875 Cmovs,
876 Cmp,
877 Cmpsb,
878 Cmpsq,
879 Cmpsw,
880 Cmpxchg16b,
881 Cmpxchg,
882 Cmpxchg8b,
883 Comisd,
884 Comiss,
885 Fcomp,
886 Fcomip,
887 Fcomi,
888 Fcom,
889 Fcos,
890 Cpuid,
891 Cqo,
892 Crc32,
893 Cvtdq2pd,
894 Cvtdq2ps,
895 Cvtpd2dq,
896 Cvtpd2ps,
897 Cvtps2dq,
898 Cvtps2pd,
899 Cvtsd2si,
900 Cvtsd2ss,
901 Cvtsi2sd,
902 Cvtsi2ss,
903 Cvtss2sd,
904 Cvtss2si,
905 Cvttpd2dq,
906 Cvttps2dq,
907 Cvttsd2si,
908 Cvttss2si,
909 Cwd,
910 Cwde,
911 Daa,
912 Das,
913 Data16,
914 Dec,
915 Div,
916 Divpd,
917 Divps,
918 Fdivr,
919 Fidivr,
920 Fdivrp,
921 Divsd,
922 Divss,
923 Fdiv,
924 Fidiv,
925 Fdivp,
926 Dppd,
927 Dpps,
928 Ret,
929 Encls,
930 Enclu,
931 Enter,
932 Extractps,
933 Extrq,
934 F2xm1,
935 Lcall,
936 Ljmp,
937 Fbld,
938 Fbstp,
939 Fcompp,
940 Fdecstp,
941 Femms,
942 Ffree,
943 Ficom,
944 Ficomp,
945 Fincstp,
946 Fldcw,
947 Fldenv,
948 Fldl2e,
949 Fldl2t,
950 Fldlg2,
951 Fldln2,
952 Fldpi,
953 Fnclex,
954 Fninit,
955 Fnop,
956 Fnstcw,
957 Fnstsw,
958 Fpatan,
959 Fprem,
960 Fprem1,
961 Fptan,
962 Ffreep,
963 Frndint,
964 Frstor,
965 Fnsave,
966 Fscale,
967 Fsetpm,
968 Fsincos,
969 Fnstenv,
970 Fxam,
971 Fxrstor,
972 Fxrstor64,
973 Fxsave,
974 Fxsave64,
975 Fxtract,
976 Fyl2x,
977 Fyl2xp1,
978 Movapd,
979 Movaps,
980 Orpd,
981 Orps,
982 Vmovapd,
983 Vmovaps,
984 Xorpd,
985 Xorps,
986 Getsec,
987 Haddpd,
988 Haddps,
989 Hlt,
990 Hsubpd,
991 Hsubps,
992 Idiv,
993 Fild,
994 Imul,
995 In,
996 Inc,
997 Insb,
998 Insertps,
999 Insertq,
1000 Insd,
1001 Insw,
1002 Int,
1003 Int1,
1004 Int3,
1005 Into,
1006 Invd,
1007 Invept,
1008 Invlpg,
1009 Invlpga,
1010 Invpcid,
1011 Invvpid,
1012 Iret,
1013 Iretd,
1014 Iretq,
1015 Fisttp,
1016 Fist,
1017 Fistp,
1018 Ucomisd,
1019 Ucomiss,
1020 Vcomisd,
1021 Vcomiss,
1022 Vcvtsd2ss,
1023 Vcvtsi2sd,
1024 Vcvtsi2ss,
1025 Vcvtss2sd,
1026 Vcvttsd2si,
1027 Vcvttsd2usi,
1028 Vcvttss2si,
1029 Vcvttss2usi,
1030 Vcvtusi2sd,
1031 Vcvtusi2ss,
1032 Vucomisd,
1033 Vucomiss,
1034 Jae,
1035 Ja,
1036 Jbe,
1037 Jb,
1038 Jcxz,
1039 Jecxz,
1040 Je,
1041 Jge,
1042 Jg,
1043 Jle,
1044 Jl,
1045 Jmp,
1046 Jne,
1047 Jno,
1048 Jnp,
1049 Jns,
1050 Jo,
1051 Jp,
1052 Jrcxz,
1053 Js,
1054 Kandb,
1055 Kandd,
1056 Kandnb,
1057 Kandnd,
1058 Kandnq,
1059 Kandnw,
1060 Kandq,
1061 Kandw,
1062 Kmovb,
1063 Kmovd,
1064 Kmovq,
1065 Kmovw,
1066 Knotb,
1067 Knotd,
1068 Knotq,
1069 Knotw,
1070 Korb,
1071 Kord,
1072 Korq,
1073 Kortestb,
1074 Kortestd,
1075 Kortestq,
1076 Kortestw,
1077 Korw,
1078 Kshiftlb,
1079 Kshiftld,
1080 Kshiftlq,
1081 Kshiftlw,
1082 Kshiftrb,
1083 Kshiftrd,
1084 Kshiftrq,
1085 Kshiftrw,
1086 Kunpckbw,
1087 Kxnorb,
1088 Kxnord,
1089 Kxnorq,
1090 Kxnorw,
1091 Kxorb,
1092 Kxord,
1093 Kxorq,
1094 Kxorw,
1095 Lahf,
1096 Lar,
1097 Lddqu,
1098 Ldmxcsr,
1099 Lds,
1100 Fldz,
1101 Fld1,
1102 Fld,
1103 Lea,
1104 Leave,
1105 Les,
1106 Lfence,
1107 Lfs,
1108 Lgdt,
1109 Lgs,
1110 Lidt,
1111 Lldt,
1112 Lmsw,
1113 Or,
1114 Sub,
1115 Xor,
1116 Lodsb,
1117 Lodsd,
1118 Lodsq,
1119 Lodsw,
1120 Loop,
1121 Loope,
1122 Loopne,
1123 Retf,
1124 Retfq,
1125 Lsl,
1126 Lss,
1127 Ltr,
1128 Xadd,
1129 Lzcnt,
1130 Maskmovdqu,
1131 Maxpd,
1132 Maxps,
1133 Maxsd,
1134 Maxss,
1135 Mfence,
1136 Minpd,
1137 Minps,
1138 Minsd,
1139 Minss,
1140 Cvtpd2pi,
1141 Cvtpi2pd,
1142 Cvtpi2ps,
1143 Cvtps2pi,
1144 Cvttpd2pi,
1145 Cvttps2pi,
1146 Emms,
1147 Maskmovq,
1148 Movd,
1149 Movdq2q,
1150 Movntq,
1151 Movq2dq,
1152 Movq,
1153 Pabsb,
1154 Pabsd,
1155 Pabsw,
1156 Packssdw,
1157 Packsswb,
1158 Packuswb,
1159 Paddb,
1160 Paddd,
1161 Paddq,
1162 Paddsb,
1163 Paddsw,
1164 Paddusb,
1165 Paddusw,
1166 Paddw,
1167 Palignr,
1168 Pandn,
1169 Pand,
1170 Pavgb,
1171 Pavgw,
1172 Pcmpeqb,
1173 Pcmpeqd,
1174 Pcmpeqw,
1175 Pcmpgtb,
1176 Pcmpgtd,
1177 Pcmpgtw,
1178 Pextrw,
1179 Phaddsw,
1180 Phaddw,
1181 Phaddd,
1182 Phsubd,
1183 Phsubsw,
1184 Phsubw,
1185 Pinsrw,
1186 Pmaddubsw,
1187 Pmaddwd,
1188 Pmaxsw,
1189 Pmaxub,
1190 Pminsw,
1191 Pminub,
1192 Pmovmskb,
1193 Pmulhrsw,
1194 Pmulhuw,
1195 Pmulhw,
1196 Pmullw,
1197 Pmuludq,
1198 Por,
1199 Psadbw,
1200 Pshufb,
1201 Pshufw,
1202 Psignb,
1203 Psignd,
1204 Psignw,
1205 Pslld,
1206 Psllq,
1207 Psllw,
1208 Psrad,
1209 Psraw,
1210 Psrld,
1211 Psrlq,
1212 Psrlw,
1213 Psubb,
1214 Psubd,
1215 Psubq,
1216 Psubsb,
1217 Psubsw,
1218 Psubusb,
1219 Psubusw,
1220 Psubw,
1221 Punpckhbw,
1222 Punpckhdq,
1223 Punpckhwd,
1224 Punpcklbw,
1225 Punpckldq,
1226 Punpcklwd,
1227 Pxor,
1228 Monitor,
1229 Montmul,
1230 Mov,
1231 Movabs,
1232 Movbe,
1233 Movddup,
1234 Movdqa,
1235 Movdqu,
1236 Movhlps,
1237 Movhpd,
1238 Movhps,
1239 Movlhps,
1240 Movlpd,
1241 Movlps,
1242 Movmskpd,
1243 Movmskps,
1244 Movntdqa,
1245 Movntdq,
1246 Movnti,
1247 Movntpd,
1248 Movntps,
1249 Movntsd,
1250 Movntss,
1251 Movsb,
1252 Movsd,
1253 Movshdup,
1254 Movsldup,
1255 Movsq,
1256 Movss,
1257 Movsw,
1258 Movsx,
1259 Movsxd,
1260 Movupd,
1261 Movups,
1262 Movzx,
1263 Mpsadbw,
1264 Mul,
1265 Mulpd,
1266 Mulps,
1267 Mulsd,
1268 Mulss,
1269 Mulx,
1270 Fmul,
1271 Fimul,
1272 Fmulp,
1273 Mwait,
1274 Neg,
1275 Nop,
1276 Not,
1277 Out,
1278 Outsb,
1279 Outsd,
1280 Outsw,
1281 Packusdw,
1282 Pause,
1283 Pavgusb,
1284 Pblendvb,
1285 Pblendw,
1286 Pclmulqdq,
1287 Pcmpeqq,
1288 Pcmpestri,
1289 Pcmpestrm,
1290 Pcmpgtq,
1291 Pcmpistri,
1292 Pcmpistrm,
1293 Pcommit,
1294 Pdep,
1295 Pext,
1296 Pextrb,
1297 Pextrd,
1298 Pextrq,
1299 Pf2id,
1300 Pf2iw,
1301 Pfacc,
1302 Pfadd,
1303 Pfcmpeq,
1304 Pfcmpge,
1305 Pfcmpgt,
1306 Pfmax,
1307 Pfmin,
1308 Pfmul,
1309 Pfnacc,
1310 Pfpnacc,
1311 Pfrcpit1,
1312 Pfrcpit2,
1313 Pfrcp,
1314 Pfrsqit1,
1315 Pfrsqrt,
1316 Pfsubr,
1317 Pfsub,
1318 Phminposuw,
1319 Pi2fd,
1320 Pi2fw,
1321 Pinsrb,
1322 Pinsrd,
1323 Pinsrq,
1324 Pmaxsb,
1325 Pmaxsd,
1326 Pmaxud,
1327 Pmaxuw,
1328 Pminsb,
1329 Pminsd,
1330 Pminud,
1331 Pminuw,
1332 Pmovsxbd,
1333 Pmovsxbq,
1334 Pmovsxbw,
1335 Pmovsxdq,
1336 Pmovsxwd,
1337 Pmovsxwq,
1338 Pmovzxbd,
1339 Pmovzxbq,
1340 Pmovzxbw,
1341 Pmovzxdq,
1342 Pmovzxwd,
1343 Pmovzxwq,
1344 Pmuldq,
1345 Pmulhrw,
1346 Pmulld,
1347 Pop,
1348 Popaw,
1349 Popal,
1350 Popcnt,
1351 Popf,
1352 Popfd,
1353 Popfq,
1354 Prefetch,
1355 Prefetchnta,
1356 Prefetcht0,
1357 Prefetcht1,
1358 Prefetcht2,
1359 Prefetchw,
1360 Pshufd,
1361 Pshufhw,
1362 Pshuflw,
1363 Pslldq,
1364 Psrldq,
1365 Pswapd,
1366 Ptest,
1367 Punpckhqdq,
1368 Punpcklqdq,
1369 Push,
1370 Pushaw,
1371 Pushal,
1372 Pushf,
1373 Pushfd,
1374 Pushfq,
1375 Rcl,
1376 Rcpps,
1377 Rcpss,
1378 Rcr,
1379 Rdfsbase,
1380 Rdgsbase,
1381 Rdmsr,
1382 Rdpmc,
1383 Rdrand,
1384 Rdseed,
1385 Rdtsc,
1386 Rdtscp,
1387 Rol,
1388 Ror,
1389 Rorx,
1390 Roundpd,
1391 Roundps,
1392 Roundsd,
1393 Roundss,
1394 Rsm,
1395 Rsqrtps,
1396 Rsqrtss,
1397 Sahf,
1398 Sal,
1399 Salc,
1400 Sar,
1401 Sarx,
1402 Sbb,
1403 Scasb,
1404 Scasd,
1405 Scasq,
1406 Scasw,
1407 Setae,
1408 Seta,
1409 Setbe,
1410 Setb,
1411 Sete,
1412 Setge,
1413 Setg,
1414 Setle,
1415 Setl,
1416 Setne,
1417 Setno,
1418 Setnp,
1419 Setns,
1420 Seto,
1421 Setp,
1422 Sets,
1423 Sfence,
1424 Sgdt,
1425 Sha1msg1,
1426 Sha1msg2,
1427 Sha1nexte,
1428 Sha1rnds4,
1429 Sha256msg1,
1430 Sha256msg2,
1431 Sha256rnds2,
1432 Shl,
1433 Shld,
1434 Shlx,
1435 Shr,
1436 Shrd,
1437 Shrx,
1438 Shufpd,
1439 Shufps,
1440 Sidt,
1441 Fsin,
1442 Skinit,
1443 Sldt,
1444 Smsw,
1445 Sqrtpd,
1446 Sqrtps,
1447 Sqrtsd,
1448 Sqrtss,
1449 Fsqrt,
1450 Stac,
1451 Stc,
1452 Std,
1453 Stgi,
1454 Sti,
1455 Stmxcsr,
1456 Stosb,
1457 Stosd,
1458 Stosq,
1459 Stosw,
1460 Str,
1461 Fst,
1462 Fstp,
1463 Fstpnce,
1464 Fxch,
1465 Subpd,
1466 Subps,
1467 Fsubr,
1468 Fisubr,
1469 Fsubrp,
1470 Subsd,
1471 Subss,
1472 Fsub,
1473 Fisub,
1474 Fsubp,
1475 Swapgs,
1476 Syscall,
1477 Sysenter,
1478 Sysexit,
1479 Sysret,
1480 T1mskc,
1481 Test,
1482 Ud2,
1483 Ftst,
1484 Tzcnt,
1485 Tzmsk,
1486 Fucomip,
1487 Fucomi,
1488 Fucompp,
1489 Fucomp,
1490 Fucom,
1491 Ud2b,
1492 Unpckhpd,
1493 Unpckhps,
1494 Unpcklpd,
1495 Unpcklps,
1496 Vaddpd,
1497 Vaddps,
1498 Vaddsd,
1499 Vaddss,
1500 Vaddsubpd,
1501 Vaddsubps,
1502 Vaesdeclast,
1503 Vaesdec,
1504 Vaesenclast,
1505 Vaesenc,
1506 Vaesimc,
1507 Vaeskeygenassist,
1508 Valignd,
1509 Valignq,
1510 Vandnpd,
1511 Vandnps,
1512 Vandpd,
1513 Vandps,
1514 Vblendmpd,
1515 Vblendmps,
1516 Vblendpd,
1517 Vblendps,
1518 Vblendvpd,
1519 Vblendvps,
1520 Vbroadcastf128,
1521 Vbroadcasti32x4,
1522 Vbroadcasti64x4,
1523 Vbroadcastsd,
1524 Vbroadcastss,
1525 Vcompresspd,
1526 Vcompressps,
1527 Vcvtdq2pd,
1528 Vcvtdq2ps,
1529 Vcvtpd2dqx,
1530 Vcvtpd2dq,
1531 Vcvtpd2psx,
1532 Vcvtpd2ps,
1533 Vcvtpd2udq,
1534 Vcvtph2ps,
1535 Vcvtps2dq,
1536 Vcvtps2pd,
1537 Vcvtps2ph,
1538 Vcvtps2udq,
1539 Vcvtsd2si,
1540 Vcvtsd2usi,
1541 Vcvtss2si,
1542 Vcvtss2usi,
1543 Vcvttpd2dqx,
1544 Vcvttpd2dq,
1545 Vcvttpd2udq,
1546 Vcvttps2dq,
1547 Vcvttps2udq,
1548 Vcvtudq2pd,
1549 Vcvtudq2ps,
1550 Vdivpd,
1551 Vdivps,
1552 Vdivsd,
1553 Vdivss,
1554 Vdppd,
1555 Vdpps,
1556 Verr,
1557 Verw,
1558 Vexp2pd,
1559 Vexp2ps,
1560 Vexpandpd,
1561 Vexpandps,
1562 Vextractf128,
1563 Vextractf32x4,
1564 Vextractf64x4,
1565 Vextracti128,
1566 Vextracti32x4,
1567 Vextracti64x4,
1568 Vextractps,
1569 Vfmadd132pd,
1570 Vfmadd132ps,
1571 Vfmaddpd,
1572 Vfmadd213pd,
1573 Vfmadd231pd,
1574 Vfmaddps,
1575 Vfmadd213ps,
1576 Vfmadd231ps,
1577 Vfmaddsd,
1578 Vfmadd213sd,
1579 Vfmadd132sd,
1580 Vfmadd231sd,
1581 Vfmaddss,
1582 Vfmadd213ss,
1583 Vfmadd132ss,
1584 Vfmadd231ss,
1585 Vfmaddsub132pd,
1586 Vfmaddsub132ps,
1587 Vfmaddsubpd,
1588 Vfmaddsub213pd,
1589 Vfmaddsub231pd,
1590 Vfmaddsubps,
1591 Vfmaddsub213ps,
1592 Vfmaddsub231ps,
1593 Vfmsub132pd,
1594 Vfmsub132ps,
1595 Vfmsubadd132pd,
1596 Vfmsubadd132ps,
1597 Vfmsubaddpd,
1598 Vfmsubadd213pd,
1599 Vfmsubadd231pd,
1600 Vfmsubaddps,
1601 Vfmsubadd213ps,
1602 Vfmsubadd231ps,
1603 Vfmsubpd,
1604 Vfmsub213pd,
1605 Vfmsub231pd,
1606 Vfmsubps,
1607 Vfmsub213ps,
1608 Vfmsub231ps,
1609 Vfmsubsd,
1610 Vfmsub213sd,
1611 Vfmsub132sd,
1612 Vfmsub231sd,
1613 Vfmsubss,
1614 Vfmsub213ss,
1615 Vfmsub132ss,
1616 Vfmsub231ss,
1617 Vfnmadd132pd,
1618 Vfnmadd132ps,
1619 Vfnmaddpd,
1620 Vfnmadd213pd,
1621 Vfnmadd231pd,
1622 Vfnmaddps,
1623 Vfnmadd213ps,
1624 Vfnmadd231ps,
1625 Vfnmaddsd,
1626 Vfnmadd213sd,
1627 Vfnmadd132sd,
1628 Vfnmadd231sd,
1629 Vfnmaddss,
1630 Vfnmadd213ss,
1631 Vfnmadd132ss,
1632 Vfnmadd231ss,
1633 Vfnmsub132pd,
1634 Vfnmsub132ps,
1635 Vfnmsubpd,
1636 Vfnmsub213pd,
1637 Vfnmsub231pd,
1638 Vfnmsubps,
1639 Vfnmsub213ps,
1640 Vfnmsub231ps,
1641 Vfnmsubsd,
1642 Vfnmsub213sd,
1643 Vfnmsub132sd,
1644 Vfnmsub231sd,
1645 Vfnmsubss,
1646 Vfnmsub213ss,
1647 Vfnmsub132ss,
1648 Vfnmsub231ss,
1649 Vfrczpd,
1650 Vfrczps,
1651 Vfrczsd,
1652 Vfrczss,
1653 Vorpd,
1654 Vorps,
1655 Vxorpd,
1656 Vxorps,
1657 Vgatherdpd,
1658 Vgatherdps,
1659 Vgatherpf0dpd,
1660 Vgatherpf0dps,
1661 Vgatherpf0qpd,
1662 Vgatherpf0qps,
1663 Vgatherpf1dpd,
1664 Vgatherpf1dps,
1665 Vgatherpf1qpd,
1666 Vgatherpf1qps,
1667 Vgatherqpd,
1668 Vgatherqps,
1669 Vhaddpd,
1670 Vhaddps,
1671 Vhsubpd,
1672 Vhsubps,
1673 Vinsertf128,
1674 Vinsertf32x4,
1675 Vinsertf32x8,
1676 Vinsertf64x2,
1677 Vinsertf64x4,
1678 Vinserti128,
1679 Vinserti32x4,
1680 Vinserti32x8,
1681 Vinserti64x2,
1682 Vinserti64x4,
1683 Vinsertps,
1684 Vlddqu,
1685 Vldmxcsr,
1686 Vmaskmovdqu,
1687 Vmaskmovpd,
1688 Vmaskmovps,
1689 Vmaxpd,
1690 Vmaxps,
1691 Vmaxsd,
1692 Vmaxss,
1693 Vmcall,
1694 Vmclear,
1695 Vmfunc,
1696 Vminpd,
1697 Vminps,
1698 Vminsd,
1699 Vminss,
1700 Vmlaunch,
1701 Vmload,
1702 Vmmcall,
1703 Vmovq,
1704 Vmovddup,
1705 Vmovd,
1706 Vmovdqa32,
1707 Vmovdqa64,
1708 Vmovdqa,
1709 Vmovdqu16,
1710 Vmovdqu32,
1711 Vmovdqu64,
1712 Vmovdqu8,
1713 Vmovdqu,
1714 Vmovhlps,
1715 Vmovhpd,
1716 Vmovhps,
1717 Vmovlhps,
1718 Vmovlpd,
1719 Vmovlps,
1720 Vmovmskpd,
1721 Vmovmskps,
1722 Vmovntdqa,
1723 Vmovntdq,
1724 Vmovntpd,
1725 Vmovntps,
1726 Vmovsd,
1727 Vmovshdup,
1728 Vmovsldup,
1729 Vmovss,
1730 Vmovupd,
1731 Vmovups,
1732 Vmpsadbw,
1733 Vmptrld,
1734 Vmptrst,
1735 Vmread,
1736 Vmresume,
1737 Vmrun,
1738 Vmsave,
1739 Vmulpd,
1740 Vmulps,
1741 Vmulsd,
1742 Vmulss,
1743 Vmwrite,
1744 Vmxoff,
1745 Vmxon,
1746 Vpabsb,
1747 Vpabsd,
1748 Vpabsq,
1749 Vpabsw,
1750 Vpackssdw,
1751 Vpacksswb,
1752 Vpackusdw,
1753 Vpackuswb,
1754 Vpaddb,
1755 Vpaddd,
1756 Vpaddq,
1757 Vpaddsb,
1758 Vpaddsw,
1759 Vpaddusb,
1760 Vpaddusw,
1761 Vpaddw,
1762 Vpalignr,
1763 Vpandd,
1764 Vpandnd,
1765 Vpandnq,
1766 Vpandn,
1767 Vpandq,
1768 Vpand,
1769 Vpavgb,
1770 Vpavgw,
1771 Vpblendd,
1772 Vpblendmb,
1773 Vpblendmd,
1774 Vpblendmq,
1775 Vpblendmw,
1776 Vpblendvb,
1777 Vpblendw,
1778 Vpbroadcastb,
1779 Vpbroadcastd,
1780 Vpbroadcastmb2q,
1781 Vpbroadcastmw2d,
1782 Vpbroadcastq,
1783 Vpbroadcastw,
1784 Vpclmulqdq,
1785 Vpcmov,
1786 Vpcmpb,
1787 Vpcmpd,
1788 Vpcmpeqb,
1789 Vpcmpeqd,
1790 Vpcmpeqq,
1791 Vpcmpeqw,
1792 Vpcmpestri,
1793 Vpcmpestrm,
1794 Vpcmpgtb,
1795 Vpcmpgtd,
1796 Vpcmpgtq,
1797 Vpcmpgtw,
1798 Vpcmpistri,
1799 Vpcmpistrm,
1800 Vpcmpq,
1801 Vpcmpub,
1802 Vpcmpud,
1803 Vpcmpuq,
1804 Vpcmpuw,
1805 Vpcmpw,
1806 Vpcomb,
1807 Vpcomd,
1808 Vpcompressd,
1809 Vpcompressq,
1810 Vpcomq,
1811 Vpcomub,
1812 Vpcomud,
1813 Vpcomuq,
1814 Vpcomuw,
1815 Vpcomw,
1816 Vpconflictd,
1817 Vpconflictq,
1818 Vperm2f128,
1819 Vperm2i128,
1820 Vpermd,
1821 Vpermi2d,
1822 Vpermi2pd,
1823 Vpermi2ps,
1824 Vpermi2q,
1825 Vpermil2pd,
1826 Vpermil2ps,
1827 Vpermilpd,
1828 Vpermilps,
1829 Vpermpd,
1830 Vpermps,
1831 Vpermq,
1832 Vpermt2d,
1833 Vpermt2pd,
1834 Vpermt2ps,
1835 Vpermt2q,
1836 Vpexpandd,
1837 Vpexpandq,
1838 Vpextrb,
1839 Vpextrd,
1840 Vpextrq,
1841 Vpextrw,
1842 Vpgatherdd,
1843 Vpgatherdq,
1844 Vpgatherqd,
1845 Vpgatherqq,
1846 Vphaddbd,
1847 Vphaddbq,
1848 Vphaddbw,
1849 Vphadddq,
1850 Vphaddd,
1851 Vphaddsw,
1852 Vphaddubd,
1853 Vphaddubq,
1854 Vphaddubw,
1855 Vphaddudq,
1856 Vphadduwd,
1857 Vphadduwq,
1858 Vphaddwd,
1859 Vphaddwq,
1860 Vphaddw,
1861 Vphminposuw,
1862 Vphsubbw,
1863 Vphsubdq,
1864 Vphsubd,
1865 Vphsubsw,
1866 Vphsubwd,
1867 Vphsubw,
1868 Vpinsrb,
1869 Vpinsrd,
1870 Vpinsrq,
1871 Vpinsrw,
1872 Vplzcntd,
1873 Vplzcntq,
1874 Vpmacsdd,
1875 Vpmacsdqh,
1876 Vpmacsdql,
1877 Vpmacssdd,
1878 Vpmacssdqh,
1879 Vpmacssdql,
1880 Vpmacsswd,
1881 Vpmacssww,
1882 Vpmacswd,
1883 Vpmacsww,
1884 Vpmadcsswd,
1885 Vpmadcswd,
1886 Vpmaddubsw,
1887 Vpmaddwd,
1888 Vpmaskmovd,
1889 Vpmaskmovq,
1890 Vpmaxsb,
1891 Vpmaxsd,
1892 Vpmaxsq,
1893 Vpmaxsw,
1894 Vpmaxub,
1895 Vpmaxud,
1896 Vpmaxuq,
1897 Vpmaxuw,
1898 Vpminsb,
1899 Vpminsd,
1900 Vpminsq,
1901 Vpminsw,
1902 Vpminub,
1903 Vpminud,
1904 Vpminuq,
1905 Vpminuw,
1906 Vpmovdb,
1907 Vpmovdw,
1908 Vpmovm2b,
1909 Vpmovm2d,
1910 Vpmovm2q,
1911 Vpmovm2w,
1912 Vpmovmskb,
1913 Vpmovqb,
1914 Vpmovqd,
1915 Vpmovqw,
1916 Vpmovsdb,
1917 Vpmovsdw,
1918 Vpmovsqb,
1919 Vpmovsqd,
1920 Vpmovsqw,
1921 Vpmovsxbd,
1922 Vpmovsxbq,
1923 Vpmovsxbw,
1924 Vpmovsxdq,
1925 Vpmovsxwd,
1926 Vpmovsxwq,
1927 Vpmovusdb,
1928 Vpmovusdw,
1929 Vpmovusqb,
1930 Vpmovusqd,
1931 Vpmovusqw,
1932 Vpmovzxbd,
1933 Vpmovzxbq,
1934 Vpmovzxbw,
1935 Vpmovzxdq,
1936 Vpmovzxwd,
1937 Vpmovzxwq,
1938 Vpmuldq,
1939 Vpmulhrsw,
1940 Vpmulhuw,
1941 Vpmulhw,
1942 Vpmulld,
1943 Vpmullq,
1944 Vpmullw,
1945 Vpmuludq,
1946 Vpord,
1947 Vporq,
1948 Vpor,
1949 Vpperm,
1950 Vprotb,
1951 Vprotd,
1952 Vprotq,
1953 Vprotw,
1954 Vpsadbw,
1955 Vpscatterdd,
1956 Vpscatterdq,
1957 Vpscatterqd,
1958 Vpscatterqq,
1959 Vpshab,
1960 Vpshad,
1961 Vpshaq,
1962 Vpshaw,
1963 Vpshlb,
1964 Vpshld,
1965 Vpshlq,
1966 Vpshlw,
1967 Vpshufb,
1968 Vpshufd,
1969 Vpshufhw,
1970 Vpshuflw,
1971 Vpsignb,
1972 Vpsignd,
1973 Vpsignw,
1974 Vpslldq,
1975 Vpslld,
1976 Vpsllq,
1977 Vpsllvd,
1978 Vpsllvq,
1979 Vpsllw,
1980 Vpsrad,
1981 Vpsraq,
1982 Vpsravd,
1983 Vpsravq,
1984 Vpsraw,
1985 Vpsrldq,
1986 Vpsrld,
1987 Vpsrlq,
1988 Vpsrlvd,
1989 Vpsrlvq,
1990 Vpsrlw,
1991 Vpsubb,
1992 Vpsubd,
1993 Vpsubq,
1994 Vpsubsb,
1995 Vpsubsw,
1996 Vpsubusb,
1997 Vpsubusw,
1998 Vpsubw,
1999 Vptestmd,
2000 Vptestmq,
2001 Vptestnmd,
2002 Vptestnmq,
2003 Vptest,
2004 Vpunpckhbw,
2005 Vpunpckhdq,
2006 Vpunpckhqdq,
2007 Vpunpckhwd,
2008 Vpunpcklbw,
2009 Vpunpckldq,
2010 Vpunpcklqdq,
2011 Vpunpcklwd,
2012 Vpxord,
2013 Vpxorq,
2014 Vpxor,
2015 Vrcp14pd,
2016 Vrcp14ps,
2017 Vrcp14sd,
2018 Vrcp14ss,
2019 Vrcp28pd,
2020 Vrcp28ps,
2021 Vrcp28sd,
2022 Vrcp28ss,
2023 Vrcpps,
2024 Vrcpss,
2025 Vrndscalepd,
2026 Vrndscaleps,
2027 Vrndscalesd,
2028 Vrndscaless,
2029 Vroundpd,
2030 Vroundps,
2031 Vroundsd,
2032 Vroundss,
2033 Vrsqrt14pd,
2034 Vrsqrt14ps,
2035 Vrsqrt14sd,
2036 Vrsqrt14ss,
2037 Vrsqrt28pd,
2038 Vrsqrt28ps,
2039 Vrsqrt28sd,
2040 Vrsqrt28ss,
2041 Vrsqrtps,
2042 Vrsqrtss,
2043 Vscatterdpd,
2044 Vscatterdps,
2045 Vscatterpf0dpd,
2046 Vscatterpf0dps,
2047 Vscatterpf0qpd,
2048 Vscatterpf0qps,
2049 Vscatterpf1dpd,
2050 Vscatterpf1dps,
2051 Vscatterpf1qpd,
2052 Vscatterpf1qps,
2053 Vscatterqpd,
2054 Vscatterqps,
2055 Vshufpd,
2056 Vshufps,
2057 Vsqrtpd,
2058 Vsqrtps,
2059 Vsqrtsd,
2060 Vsqrtss,
2061 Vstmxcsr,
2062 Vsubpd,
2063 Vsubps,
2064 Vsubsd,
2065 Vsubss,
2066 Vtestpd,
2067 Vtestps,
2068 Vunpckhpd,
2069 Vunpckhps,
2070 Vunpcklpd,
2071 Vunpcklps,
2072 Vzeroall,
2073 Vzeroupper,
2074 Wait,
2075 Wbinvd,
2076 Wrfsbase,
2077 Wrgsbase,
2078 Wrmsr,
2079 Xabort,
2080 Xacquire,
2081 Xbegin,
2082 Xchg,
2083 Xcryptcbc,
2084 Xcryptcfb,
2085 Xcryptctr,
2086 Xcryptecb,
2087 Xcryptofb,
2088 Xend,
2089 Xgetbv,
2090 Xlatb,
2091 Xrelease,
2092 Xrstor,
2093 Xrstor64,
2094 Xrstors,
2095 Xrstors64,
2096 Xsave,
2097 Xsave64,
2098 Xsavec,
2099 Xsavec64,
2100 Xsaveopt,
2101 Xsaveopt64,
2102 Xsaves,
2103 Xsaves64,
2104 Xsetbv,
2105 Xsha1,
2106 Xsha256,
2107 Xstore,
2108 Xtest,
2109 Fdisi8087Nop,
2110 Feni8087Nop,
2111
2112 Cmpss,
2114 Cmpeqss,
2115 Cmpltss,
2116 Cmpless,
2117 Cmpunordss,
2118 Cmpneqss,
2119 Cmpnltss,
2120 Cmpnless,
2121 Cmpordss,
2122
2123 Cmpsd,
2124 Cmpeqsd,
2125 Cmpltsd,
2126 Cmplesd,
2127 Cmpunordsd,
2128 Cmpneqsd,
2129 Cmpnltsd,
2130 Cmpnlesd,
2131 Cmpordsd,
2132
2133 Cmpps,
2134 Cmpeqps,
2135 Cmpltps,
2136 Cmpleps,
2137 Cmpunordps,
2138 Cmpneqps,
2139 Cmpnltps,
2140 Cmpnleps,
2141 Cmpordps,
2142
2143 Cmppd,
2144 Cmpeqpd,
2145 Cmpltpd,
2146 Cmplepd,
2147 Cmpunordpd,
2148 Cmpneqpd,
2149 Cmpnltpd,
2150 Cmpnlepd,
2151 Cmpordpd,
2152
2153 Vcmpss,
2154 Vcmpeqss,
2155 Vcmpltss,
2156 Vcmpless,
2157 Vcmpunordss,
2158 Vcmpneqss,
2159 Vcmpnltss,
2160 Vcmpnless,
2161 Vcmpordss,
2162 VcmpeqUqss,
2163 Vcmpngess,
2164 Vcmpngtss,
2165 Vcmpfalsess,
2166 VcmpneqOqss,
2167 Vcmpgess,
2168 Vcmpgtss,
2169 Vcmptruess,
2170 VcmpeqOsss,
2171 VcmpltOqss,
2172 VcmpleOqss,
2173 VcmpunordSss,
2174 VcmpneqUsss,
2175 VcmpnltUqss,
2176 VcmpnleUqss,
2177 VcmpordSss,
2178 VcmpeqUsss,
2179 VcmpngeUqss,
2180 VcmpngtUqss,
2181 VcmpfalseOsss,
2182 VcmpneqOsss,
2183 VcmpgeOqss,
2184 VcmpgtOqss,
2185 VcmptrueUsss,
2186
2187 Vcmpsd,
2188 Vcmpeqsd,
2189 Vcmpltsd,
2190 Vcmplesd,
2191 Vcmpunordsd,
2192 Vcmpneqsd,
2193 Vcmpnltsd,
2194 Vcmpnlesd,
2195 Vcmpordsd,
2196 VcmpeqUqsd,
2197 Vcmpngesd,
2198 Vcmpngtsd,
2199 Vcmpfalsesd,
2200 VcmpneqOqsd,
2201 Vcmpgesd,
2202 Vcmpgtsd,
2203 Vcmptruesd,
2204 VcmpeqOssd,
2205 VcmpltOqsd,
2206 VcmpleOqsd,
2207 VcmpunordSsd,
2208 VcmpneqUssd,
2209 VcmpnltUqsd,
2210 VcmpnleUqsd,
2211 VcmpordSsd,
2212 VcmpeqUssd,
2213 VcmpngeUqsd,
2214 VcmpngtUqsd,
2215 VcmpfalseOssd,
2216 VcmpneqOssd,
2217 VcmpgeOqsd,
2218 VcmpgtOqsd,
2219 VcmptrueUssd,
2220
2221 Vcmpps,
2222 Vcmpeqps,
2223 Vcmpltps,
2224 Vcmpleps,
2225 Vcmpunordps,
2226 Vcmpneqps,
2227 Vcmpnltps,
2228 Vcmpnleps,
2229 Vcmpordps,
2230 VcmpeqUqps,
2231 Vcmpngeps,
2232 Vcmpngtps,
2233 Vcmpfalseps,
2234 VcmpneqOqps,
2235 Vcmpgeps,
2236 Vcmpgtps,
2237 Vcmptrueps,
2238 VcmpeqOsps,
2239 VcmpltOqps,
2240 VcmpleOqps,
2241 VcmpunordSps,
2242 VcmpneqUsps,
2243 VcmpnltUqps,
2244 VcmpnleUqps,
2245 VcmpordSps,
2246 VcmpeqUsps,
2247 VcmpngeUqps,
2248 VcmpngtUqps,
2249 VcmpfalseOsps,
2250 VcmpneqOsps,
2251 VcmpgeOqps,
2252 VcmpgtOqps,
2253 VcmptrueUsps,
2254
2255 Vcmppd,
2256 Vcmpeqpd,
2257 Vcmpltpd,
2258 Vcmplepd,
2259 Vcmpunordpd,
2260 Vcmpneqpd,
2261 Vcmpnltpd,
2262 Vcmpnlepd,
2263 Vcmpordpd,
2264 VcmpeqUqpd,
2265 Vcmpngepd,
2266 Vcmpngtpd,
2267 Vcmpfalsepd,
2268 VcmpneqOqpd,
2269 Vcmpgepd,
2270 Vcmpgtpd,
2271 Vcmptruepd,
2272 VcmpeqOspd,
2273 VcmpltOqpd,
2274 VcmpleOqpd,
2275 VcmpunordSpd,
2276 VcmpneqUspd,
2277 VcmpnltUqpd,
2278 VcmpnleUqpd,
2279 VcmpordSpd,
2280 VcmpeqUspd,
2281 VcmpngeUqpd,
2282 VcmpngtUqpd,
2283 VcmpfalseOspd,
2284 VcmpneqOspd,
2285 VcmpgeOqpd,
2286 VcmpgtOqpd,
2287 VcmptrueUspd,
2288
2289 Ud0,
2290 Endbr32,
2291 Endbr64,
2292
2293 #[doc(hidden)]
2294 Ending,
2295 }
2296}
2297
2298c_enum_big! {
2299 #[non_exhaustive]
2300 #[derive(Copy, Clone, PartialEq, Eq, Hash)]
2301 pub enum InsnGroup: u8 {
2302 @Start = Invalid,
2303 @End = Ending,
2304
2305 Invalid = 0,
2306
2307 Jump,
2310 Call,
2312 Ret,
2314 Int,
2316 Iret,
2318 Privilege,
2320 BranchRelative,
2322
2323 VM = 128,
2326 _3dnow,
2327 Aes,
2328 Adx,
2329 Avx,
2330 Avx2,
2331 Avx512,
2332 Bmi,
2333 Bmi2,
2334 Cmov,
2335 F16c,
2336 Fma,
2337 Fma4,
2338 Fsgsbase,
2339 Hle,
2340 Mmx,
2341 Mode32,
2342 Mode64,
2343 Rtm,
2344 Sha,
2345 Sse1,
2346 Sse2,
2347 Sse3,
2348 Sse41,
2349 Sse42,
2350 Sse4a,
2351 Ssse3,
2352 Pclmul,
2353 Xop,
2354 Cdi,
2355 Eri,
2356 Tbm,
2357 _16bitmode,
2358 Not64bitmode,
2359 Sgx,
2360 Dqi,
2361 Bwi,
2362 Pfi,
2363 Vlx,
2364 Smap,
2365 Novlx,
2366 Fpu,
2367
2368 Ending,
2369 }
2370}
2371
2372#[cfg(test)]
2373mod test {
2374 use super::*;
2375 use crate::sys;
2376
2377 #[test]
2378 fn x86_size_and_alignment() {
2379 assert_eq!(
2380 core::mem::size_of::<Details>(),
2381 sys::get_test_val("sizeof(cs_x86)")
2382 );
2383
2384 assert_eq!(
2385 core::mem::align_of::<Details>(),
2386 sys::get_test_val("alignof(cs_x86)")
2387 );
2388 }
2389
2390 #[test]
2391 fn x86_enum_size() {
2392 assert_eq!(Reg::Ending.to_c(), sys::get_test_val("X86_REG_ENDING") as _);
2393 assert_eq!(
2394 InsnId::Ending.to_c(),
2395 sys::get_test_val("X86_INS_ENDING") as _
2396 );
2397 assert_eq!(
2398 InsnGroup::Ending.to_c(),
2399 sys::get_test_val("X86_GRP_ENDING") as _
2400 );
2401 }
2402}