1 // Capstone Disassembly Engine
2 // By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015
3 // k8: see licenses in original capstone package, i'm too lazy to copy 'em.
4 module iv
.capstone
.x86
/*is aliced*/;
7 // Calculate relative address for X86-64, given cs_insn structure
8 //#define X86_REL_ADDR(insn) (insn.address + insn.size + insn.detail->x86.disp)
12 enum /*x86_reg*/ : uint {
14 X86_REG_AH
, X86_REG_AL
, X86_REG_AX
, X86_REG_BH
, X86_REG_BL
,
15 X86_REG_BP
, X86_REG_BPL
, X86_REG_BX
, X86_REG_CH
, X86_REG_CL
,
16 X86_REG_CS
, X86_REG_CX
, X86_REG_DH
, X86_REG_DI
, X86_REG_DIL
,
17 X86_REG_DL
, X86_REG_DS
, X86_REG_DX
, X86_REG_EAX
, X86_REG_EBP
,
18 X86_REG_EBX
, X86_REG_ECX
, X86_REG_EDI
, X86_REG_EDX
, X86_REG_EFLAGS
,
19 X86_REG_EIP
, X86_REG_EIZ
, X86_REG_ES
, X86_REG_ESI
, X86_REG_ESP
,
20 X86_REG_FPSW
, X86_REG_FS
, X86_REG_GS
, X86_REG_IP
, X86_REG_RAX
,
21 X86_REG_RBP
, X86_REG_RBX
, X86_REG_RCX
, X86_REG_RDI
, X86_REG_RDX
,
22 X86_REG_RIP
, X86_REG_RIZ
, X86_REG_RSI
, X86_REG_RSP
, X86_REG_SI
,
23 X86_REG_SIL
, X86_REG_SP
, X86_REG_SPL
, X86_REG_SS
, X86_REG_CR0
,
24 X86_REG_CR1
, X86_REG_CR2
, X86_REG_CR3
, X86_REG_CR4
, X86_REG_CR5
,
25 X86_REG_CR6
, X86_REG_CR7
, X86_REG_CR8
, X86_REG_CR9
, X86_REG_CR10
,
26 X86_REG_CR11
, X86_REG_CR12
, X86_REG_CR13
, X86_REG_CR14
, X86_REG_CR15
,
27 X86_REG_DR0
, X86_REG_DR1
, X86_REG_DR2
, X86_REG_DR3
, X86_REG_DR4
,
28 X86_REG_DR5
, X86_REG_DR6
, X86_REG_DR7
, X86_REG_DR8
, X86_REG_DR9
,
29 X86_REG_DR10
, X86_REG_DR11
, X86_REG_DR12
, X86_REG_DR13
, X86_REG_DR14
,
30 X86_REG_DR15
, X86_REG_FP0
, X86_REG_FP1
, X86_REG_FP2
, X86_REG_FP3
,
31 X86_REG_FP4
, X86_REG_FP5
, X86_REG_FP6
, X86_REG_FP7
,
32 X86_REG_K0
, X86_REG_K1
, X86_REG_K2
, X86_REG_K3
, X86_REG_K4
,
33 X86_REG_K5
, X86_REG_K6
, X86_REG_K7
, X86_REG_MM0
, X86_REG_MM1
,
34 X86_REG_MM2
, X86_REG_MM3
, X86_REG_MM4
, X86_REG_MM5
, X86_REG_MM6
,
35 X86_REG_MM7
, X86_REG_R8
, X86_REG_R9
, X86_REG_R10
, X86_REG_R11
,
36 X86_REG_R12
, X86_REG_R13
, X86_REG_R14
, X86_REG_R15
,
37 X86_REG_ST0
, X86_REG_ST1
, X86_REG_ST2
, X86_REG_ST3
,
38 X86_REG_ST4
, X86_REG_ST5
, X86_REG_ST6
, X86_REG_ST7
,
39 X86_REG_XMM0
, X86_REG_XMM1
, X86_REG_XMM2
, X86_REG_XMM3
, X86_REG_XMM4
,
40 X86_REG_XMM5
, X86_REG_XMM6
, X86_REG_XMM7
, X86_REG_XMM8
, X86_REG_XMM9
,
41 X86_REG_XMM10
, X86_REG_XMM11
, X86_REG_XMM12
, X86_REG_XMM13
, X86_REG_XMM14
,
42 X86_REG_XMM15
, X86_REG_XMM16
, X86_REG_XMM17
, X86_REG_XMM18
, X86_REG_XMM19
,
43 X86_REG_XMM20
, X86_REG_XMM21
, X86_REG_XMM22
, X86_REG_XMM23
, X86_REG_XMM24
,
44 X86_REG_XMM25
, X86_REG_XMM26
, X86_REG_XMM27
, X86_REG_XMM28
, X86_REG_XMM29
,
45 X86_REG_XMM30
, X86_REG_XMM31
, X86_REG_YMM0
, X86_REG_YMM1
, X86_REG_YMM2
,
46 X86_REG_YMM3
, X86_REG_YMM4
, X86_REG_YMM5
, X86_REG_YMM6
, X86_REG_YMM7
,
47 X86_REG_YMM8
, X86_REG_YMM9
, X86_REG_YMM10
, X86_REG_YMM11
, X86_REG_YMM12
,
48 X86_REG_YMM13
, X86_REG_YMM14
, X86_REG_YMM15
, X86_REG_YMM16
, X86_REG_YMM17
,
49 X86_REG_YMM18
, X86_REG_YMM19
, X86_REG_YMM20
, X86_REG_YMM21
, X86_REG_YMM22
,
50 X86_REG_YMM23
, X86_REG_YMM24
, X86_REG_YMM25
, X86_REG_YMM26
, X86_REG_YMM27
,
51 X86_REG_YMM28
, X86_REG_YMM29
, X86_REG_YMM30
, X86_REG_YMM31
, X86_REG_ZMM0
,
52 X86_REG_ZMM1
, X86_REG_ZMM2
, X86_REG_ZMM3
, X86_REG_ZMM4
, X86_REG_ZMM5
,
53 X86_REG_ZMM6
, X86_REG_ZMM7
, X86_REG_ZMM8
, X86_REG_ZMM9
, X86_REG_ZMM10
,
54 X86_REG_ZMM11
, X86_REG_ZMM12
, X86_REG_ZMM13
, X86_REG_ZMM14
, X86_REG_ZMM15
,
55 X86_REG_ZMM16
, X86_REG_ZMM17
, X86_REG_ZMM18
, X86_REG_ZMM19
, X86_REG_ZMM20
,
56 X86_REG_ZMM21
, X86_REG_ZMM22
, X86_REG_ZMM23
, X86_REG_ZMM24
, X86_REG_ZMM25
,
57 X86_REG_ZMM26
, X86_REG_ZMM27
, X86_REG_ZMM28
, X86_REG_ZMM29
, X86_REG_ZMM30
,
58 X86_REG_ZMM31
, X86_REG_R8B
, X86_REG_R9B
, X86_REG_R10B
, X86_REG_R11B
,
59 X86_REG_R12B
, X86_REG_R13B
, X86_REG_R14B
, X86_REG_R15B
, X86_REG_R8D
,
60 X86_REG_R9D
, X86_REG_R10D
, X86_REG_R11D
, X86_REG_R12D
, X86_REG_R13D
,
61 X86_REG_R14D
, X86_REG_R15D
, X86_REG_R8W
, X86_REG_R9W
, X86_REG_R10W
,
62 X86_REG_R11W
, X86_REG_R12W
, X86_REG_R13W
, X86_REG_R14W
, X86_REG_R15W
,
64 X86_REG_ENDING
// <-- mark the end of the list of registers
67 // Sub-flags of EFLAGS
68 enum X86_EFLAGS_MODIFY_AF
= (1UL << 0);
69 enum X86_EFLAGS_MODIFY_CF
= (1UL << 1);
70 enum X86_EFLAGS_MODIFY_SF
= (1UL << 2);
71 enum X86_EFLAGS_MODIFY_ZF
= (1UL << 3);
72 enum X86_EFLAGS_MODIFY_PF
= (1UL << 4);
73 enum X86_EFLAGS_MODIFY_OF
= (1UL << 5);
74 enum X86_EFLAGS_MODIFY_TF
= (1UL << 6);
75 enum X86_EFLAGS_MODIFY_IF
= (1UL << 7);
76 enum X86_EFLAGS_MODIFY_DF
= (1UL << 8);
77 enum X86_EFLAGS_MODIFY_NT
= (1UL << 9);
78 enum X86_EFLAGS_MODIFY_RF
= (1UL << 10);
79 enum X86_EFLAGS_PRIOR_OF
= (1UL << 11);
80 enum X86_EFLAGS_PRIOR_SF
= (1UL << 12);
81 enum X86_EFLAGS_PRIOR_ZF
= (1UL << 13);
82 enum X86_EFLAGS_PRIOR_AF
= (1UL << 14);
83 enum X86_EFLAGS_PRIOR_PF
= (1UL << 15);
84 enum X86_EFLAGS_PRIOR_CF
= (1UL << 16);
85 enum X86_EFLAGS_PRIOR_TF
= (1UL << 17);
86 enum X86_EFLAGS_PRIOR_IF
= (1UL << 18);
87 enum X86_EFLAGS_PRIOR_DF
= (1UL << 19);
88 enum X86_EFLAGS_PRIOR_NT
= (1UL << 20);
89 enum X86_EFLAGS_RESET_OF
= (1UL << 21);
90 enum X86_EFLAGS_RESET_CF
= (1UL << 22);
91 enum X86_EFLAGS_RESET_DF
= (1UL << 23);
92 enum X86_EFLAGS_RESET_IF
= (1UL << 24);
93 enum X86_EFLAGS_RESET_SF
= (1UL << 25);
94 enum X86_EFLAGS_RESET_AF
= (1UL << 26);
95 enum X86_EFLAGS_RESET_TF
= (1UL << 27);
96 enum X86_EFLAGS_RESET_NT
= (1UL << 28);
97 enum X86_EFLAGS_RESET_PF
= (1UL << 29);
98 enum X86_EFLAGS_SET_CF
= (1UL << 30);
99 enum X86_EFLAGS_SET_DF
= (1UL << 31);
100 enum X86_EFLAGS_SET_IF
= (1UL << 32);
101 enum X86_EFLAGS_TEST_OF
= (1UL << 33);
102 enum X86_EFLAGS_TEST_SF
= (1UL << 34);
103 enum X86_EFLAGS_TEST_ZF
= (1UL << 35);
104 enum X86_EFLAGS_TEST_PF
= (1UL << 36);
105 enum X86_EFLAGS_TEST_CF
= (1UL << 37);
106 enum X86_EFLAGS_TEST_NT
= (1UL << 38);
107 enum X86_EFLAGS_TEST_DF
= (1UL << 39);
108 enum X86_EFLAGS_UNDEFINED_OF
= (1UL << 40);
109 enum X86_EFLAGS_UNDEFINED_SF
= (1UL << 41);
110 enum X86_EFLAGS_UNDEFINED_ZF
= (1UL << 42);
111 enum X86_EFLAGS_UNDEFINED_PF
= (1UL << 43);
112 enum X86_EFLAGS_UNDEFINED_AF
= (1UL << 44);
113 enum X86_EFLAGS_UNDEFINED_CF
= (1UL << 45);
115 // Operand type for instruction's operands
116 alias x86_op_type
= uint;
117 enum /*x86_op_type*/ : uint {
118 X86_OP_INVALID
= 0, // = CS_OP_INVALID (Uninitialized).
119 X86_OP_REG
, // = CS_OP_REG (Register operand).
120 X86_OP_IMM
, // = CS_OP_IMM (Immediate operand).
121 X86_OP_MEM
, // = CS_OP_MEM (Memory operand).
124 // XOP Code Condition type
125 alias x86_xop_cc
= uint;
126 enum /*x86_xop_cc*/ : uint {
127 X86_XOP_CC_INVALID
= 0, // Uninitialized.
138 // AVX broadcast type
139 alias x86_avx_bcast
= uint;
140 enum /*x86_avx_bcast*/ : uint {
141 X86_AVX_BCAST_INVALID
= 0, // Uninitialized.
142 X86_AVX_BCAST_2
, // AVX512 broadcast type {1to2}
143 X86_AVX_BCAST_4
, // AVX512 broadcast type {1to4}
144 X86_AVX_BCAST_8
, // AVX512 broadcast type {1to8}
145 X86_AVX_BCAST_16
, // AVX512 broadcast type {1to16}
148 // SSE Code Condition type
149 alias x86_sse_cc
= uint;
150 enum /*x86_sse_cc*/ : uint {
151 X86_SSE_CC_INVALID
= 0, // Uninitialized.
162 // AVX Code Condition type
163 alias x86_avx_cc
= uint;
164 enum /*x86_avx_cc*/ : uint {
165 X86_AVX_CC_INVALID
= 0, // Uninitialized.
200 // AVX static rounding mode type
201 alias x86_avx_rm
= uint;
202 enum /*x86_avx_rm*/ : uint {
203 X86_AVX_RM_INVALID
= 0, // Uninitialized.
204 X86_AVX_RM_RN
, // Round to nearest
205 X86_AVX_RM_RD
, // Round down
206 X86_AVX_RM_RU
, // Round up
207 X86_AVX_RM_RZ
, // Round toward zero
210 // Instruction prefixes - to be used in cs_x86.prefix[]
211 alias x86_prefix
= ubyte;
212 enum /*x86_prefix*/ : uint {
213 X86_PREFIX_LOCK
= 0xf0, // lock (cs_x86.prefix[0]
214 X86_PREFIX_REP
= 0xf3, // rep (cs_x86.prefix[0]
215 X86_PREFIX_REPE
= 0xf3, // repe/repz (cs_x86.prefix[0]
216 X86_PREFIX_REPNE
= 0xf2, // repne/repnz (cs_x86.prefix[0]
218 X86_PREFIX_CS
= 0x2e, // segment override CS (cs_x86.prefix[1]
219 X86_PREFIX_SS
= 0x36, // segment override SS (cs_x86.prefix[1]
220 X86_PREFIX_DS
= 0x3e, // segment override DS (cs_x86.prefix[1]
221 X86_PREFIX_ES
= 0x26, // segment override ES (cs_x86.prefix[1]
222 X86_PREFIX_FS
= 0x64, // segment override FS (cs_x86.prefix[1]
223 X86_PREFIX_GS
= 0x65, // segment override GS (cs_x86.prefix[1]
225 X86_PREFIX_OPSIZE
= 0x66, // operand-size override (cs_x86.prefix[2]
226 X86_PREFIX_ADDRSIZE
= 0x67, // address-size override (cs_x86.prefix[3]
229 // Instruction's operand referring to memory
230 // This is associated with X86_OP_MEM operand type above
232 x86_reg segment
; // segment register (or X86_REG_INVALID if irrelevant)
233 x86_reg base
; // base register (or X86_REG_INVALID if irrelevant)
234 x86_reg index
; // index register (or X86_REG_INVALID if irrelevant)
235 int scale
; // scale for index register
236 long disp
; // displacement value
239 // Instruction operand
241 x86_op_type type
; // operand type
243 x86_reg reg
; // register value for REG operand
244 long imm
; // immediate value for IMM operand
245 x86_op_mem mem
; // base/index/scale/disp value for MEM operand
248 // size of this operand (in bytes).
251 // How is this operand accessed? (READ, WRITE or READ|WRITE)
252 // This field is combined of cs_ac_type.
253 // NOTE: this field is irrelevant if engine is compiled in DIET mode.
256 // AVX broadcast type, or 0 if irrelevant
257 x86_avx_bcast avx_bcast
;
259 // AVX zero opmask {z}
260 bool avx_zero_opmask
;
263 // Instruction structure
265 // Instruction prefix, which can be up to 4 bytes.
266 // A prefix byte gets value 0 when irrelevant.
267 // prefix[0] indicates REP/REPNE/LOCK prefix (See X86_PREFIX_REP/REPNE/LOCK above)
268 // prefix[1] indicates segment override (irrelevant for x86_64):
269 // See X86_PREFIX_CS/SS/DS/ES/FS/GS above.
270 // prefix[2] indicates operand-size override (X86_PREFIX_OPSIZE)
271 // prefix[3] indicates address-size override (X86_PREFIX_ADDRSIZE)
274 // Instruction opcode, wich can be from 1 to 4 bytes in size.
275 // This contains VEX opcode as well.
276 // An trailing opcode byte gets value 0 when irrelevant.
279 // REX prefix: only a non-zero value is relavant for x86_64
282 // Address size, which can be overrided with above prefix[5].
288 // SIB value, or 0 when irrelevant.
291 // Displacement value, or 0 when irrelevant.
295 // SIB index register, or X86_REG_INVALID when irrelevant.
297 // SIB scale. only applicable if sib_index is relavant.
299 // SIB base register, or X86_REG_INVALID when irrelevant.
302 // XOP Code Condition
305 // SSE Code Condition
308 // AVX Code Condition
311 // AVX Suppress all Exception
314 // AVX static rounding mode
317 // EFLAGS updated by this instruction.
318 // This can be formed from OR combination of X86_EFLAGS_* symbols in x86.h
321 // Number of operands of this instruction,
322 // or 0 when instruction has no operand.
325 cs_x86_op
[8] operands
; // operands for this instruction.
329 alias x86_insn
= uint;
330 enum /*x86_insn*/ : uint {
356 X86_INS_AESKEYGENASSIST
,
1053 X86_INS_VAESDECLAST
,
1055 X86_INS_VAESENCLAST
,
1058 X86_INS_VAESKEYGENASSIST
,
1071 X86_INS_VBROADCASTF128
,
1072 X86_INS_VBROADCASTI32X4
,
1073 X86_INS_VBROADCASTI64X4
,
1074 X86_INS_VBROADCASTSD
,
1075 X86_INS_VBROADCASTSS
,
1076 X86_INS_VCOMPRESSPD
,
1077 X86_INS_VCOMPRESSPS
,
1094 X86_INS_VCVTTPD2DQX
,
1096 X86_INS_VCVTTPD2UDQ
,
1098 X86_INS_VCVTTPS2UDQ
,
1113 X86_INS_VEXTRACTF128
,
1114 X86_INS_VEXTRACTF32X4
,
1115 X86_INS_VEXTRACTF64X4
,
1116 X86_INS_VEXTRACTI128
,
1117 X86_INS_VEXTRACTI32X4
,
1118 X86_INS_VEXTRACTI64X4
,
1120 X86_INS_VFMADD132PD
,
1121 X86_INS_VFMADD132PS
,
1123 X86_INS_VFMADD213PD
,
1124 X86_INS_VFMADD231PD
,
1126 X86_INS_VFMADD213PS
,
1127 X86_INS_VFMADD231PS
,
1129 X86_INS_VFMADD213SD
,
1130 X86_INS_VFMADD132SD
,
1131 X86_INS_VFMADD231SD
,
1133 X86_INS_VFMADD213SS
,
1134 X86_INS_VFMADD132SS
,
1135 X86_INS_VFMADD231SS
,
1136 X86_INS_VFMADDSUB132PD
,
1137 X86_INS_VFMADDSUB132PS
,
1138 X86_INS_VFMADDSUBPD
,
1139 X86_INS_VFMADDSUB213PD
,
1140 X86_INS_VFMADDSUB231PD
,
1141 X86_INS_VFMADDSUBPS
,
1142 X86_INS_VFMADDSUB213PS
,
1143 X86_INS_VFMADDSUB231PS
,
1144 X86_INS_VFMSUB132PD
,
1145 X86_INS_VFMSUB132PS
,
1146 X86_INS_VFMSUBADD132PD
,
1147 X86_INS_VFMSUBADD132PS
,
1148 X86_INS_VFMSUBADDPD
,
1149 X86_INS_VFMSUBADD213PD
,
1150 X86_INS_VFMSUBADD231PD
,
1151 X86_INS_VFMSUBADDPS
,
1152 X86_INS_VFMSUBADD213PS
,
1153 X86_INS_VFMSUBADD231PS
,
1155 X86_INS_VFMSUB213PD
,
1156 X86_INS_VFMSUB231PD
,
1158 X86_INS_VFMSUB213PS
,
1159 X86_INS_VFMSUB231PS
,
1161 X86_INS_VFMSUB213SD
,
1162 X86_INS_VFMSUB132SD
,
1163 X86_INS_VFMSUB231SD
,
1165 X86_INS_VFMSUB213SS
,
1166 X86_INS_VFMSUB132SS
,
1167 X86_INS_VFMSUB231SS
,
1168 X86_INS_VFNMADD132PD
,
1169 X86_INS_VFNMADD132PS
,
1171 X86_INS_VFNMADD213PD
,
1172 X86_INS_VFNMADD231PD
,
1174 X86_INS_VFNMADD213PS
,
1175 X86_INS_VFNMADD231PS
,
1177 X86_INS_VFNMADD213SD
,
1178 X86_INS_VFNMADD132SD
,
1179 X86_INS_VFNMADD231SD
,
1181 X86_INS_VFNMADD213SS
,
1182 X86_INS_VFNMADD132SS
,
1183 X86_INS_VFNMADD231SS
,
1184 X86_INS_VFNMSUB132PD
,
1185 X86_INS_VFNMSUB132PS
,
1187 X86_INS_VFNMSUB213PD
,
1188 X86_INS_VFNMSUB231PD
,
1190 X86_INS_VFNMSUB213PS
,
1191 X86_INS_VFNMSUB231PS
,
1193 X86_INS_VFNMSUB213SD
,
1194 X86_INS_VFNMSUB132SD
,
1195 X86_INS_VFNMSUB231SD
,
1197 X86_INS_VFNMSUB213SS
,
1198 X86_INS_VFNMSUB132SS
,
1199 X86_INS_VFNMSUB231SS
,
1210 X86_INS_VGATHERPF0DPD
,
1211 X86_INS_VGATHERPF0DPS
,
1212 X86_INS_VGATHERPF0QPD
,
1213 X86_INS_VGATHERPF0QPS
,
1214 X86_INS_VGATHERPF1DPD
,
1215 X86_INS_VGATHERPF1DPS
,
1216 X86_INS_VGATHERPF1QPD
,
1217 X86_INS_VGATHERPF1QPS
,
1224 X86_INS_VINSERTF128
,
1225 X86_INS_VINSERTF32X4
,
1226 X86_INS_VINSERTF32X8
,
1227 X86_INS_VINSERTF64X2
,
1228 X86_INS_VINSERTF64X4
,
1229 X86_INS_VINSERTI128
,
1230 X86_INS_VINSERTI32X4
,
1231 X86_INS_VINSERTI32X8
,
1232 X86_INS_VINSERTI64X2
,
1233 X86_INS_VINSERTI64X4
,
1237 X86_INS_VMASKMOVDQU
,
1329 X86_INS_VPBROADCASTB
,
1330 X86_INS_VPBROADCASTD
,
1331 X86_INS_VPBROADCASTMB2Q
,
1332 X86_INS_VPBROADCASTMW2D
,
1333 X86_INS_VPBROADCASTQ
,
1334 X86_INS_VPBROADCASTW
,
1359 X86_INS_VPCOMPRESSD
,
1360 X86_INS_VPCOMPRESSQ
,
1367 X86_INS_VPCONFLICTD
,
1368 X86_INS_VPCONFLICTQ
,
1412 X86_INS_VPHMINPOSUW
,
1506 X86_INS_VPSCATTERDD
,
1507 X86_INS_VPSCATTERDQ
,
1508 X86_INS_VPSCATTERQD
,
1509 X86_INS_VPSCATTERQQ
,
1557 X86_INS_VPUNPCKHQDQ
,
1561 X86_INS_VPUNPCKLQDQ
,
1576 X86_INS_VRNDSCALEPD
,
1577 X86_INS_VRNDSCALEPS
,
1578 X86_INS_VRNDSCALESD
,
1579 X86_INS_VRNDSCALESS
,
1594 X86_INS_VSCATTERDPD
,
1595 X86_INS_VSCATTERDPS
,
1596 X86_INS_VSCATTERPF0DPD
,
1597 X86_INS_VSCATTERPF0DPS
,
1598 X86_INS_VSCATTERPF0QPD
,
1599 X86_INS_VSCATTERPF0QPS
,
1600 X86_INS_VSCATTERPF1DPD
,
1601 X86_INS_VSCATTERPF1DPS
,
1602 X86_INS_VSCATTERPF1QPD
,
1603 X86_INS_VSCATTERPF1QPS
,
1604 X86_INS_VSCATTERQPD
,
1605 X86_INS_VSCATTERQPS
,
1660 X86_INS_FDISI8087_NOP
,
1661 X86_INS_FENI8087_NOP
,
1663 // pseudo instructions
1708 X86_INS_VCMPUNORDSS
,
1713 X86_INS_VCMPEQ_UQSS
,
1716 X86_INS_VCMPFALSESS
,
1717 X86_INS_VCMPNEQ_OQSS
,
1721 X86_INS_VCMPEQ_OSSS
,
1722 X86_INS_VCMPLT_OQSS
,
1723 X86_INS_VCMPLE_OQSS
,
1724 X86_INS_VCMPUNORD_SSS
,
1725 X86_INS_VCMPNEQ_USSS
,
1726 X86_INS_VCMPNLT_UQSS
,
1727 X86_INS_VCMPNLE_UQSS
,
1728 X86_INS_VCMPORD_SSS
,
1729 X86_INS_VCMPEQ_USSS
,
1730 X86_INS_VCMPNGE_UQSS
,
1731 X86_INS_VCMPNGT_UQSS
,
1732 X86_INS_VCMPFALSE_OSSS
,
1733 X86_INS_VCMPNEQ_OSSS
,
1734 X86_INS_VCMPGE_OQSS
,
1735 X86_INS_VCMPGT_OQSS
,
1736 X86_INS_VCMPTRUE_USSS
,
1742 X86_INS_VCMPUNORDSD
,
1747 X86_INS_VCMPEQ_UQSD
,
1750 X86_INS_VCMPFALSESD
,
1751 X86_INS_VCMPNEQ_OQSD
,
1755 X86_INS_VCMPEQ_OSSD
,
1756 X86_INS_VCMPLT_OQSD
,
1757 X86_INS_VCMPLE_OQSD
,
1758 X86_INS_VCMPUNORD_SSD
,
1759 X86_INS_VCMPNEQ_USSD
,
1760 X86_INS_VCMPNLT_UQSD
,
1761 X86_INS_VCMPNLE_UQSD
,
1762 X86_INS_VCMPORD_SSD
,
1763 X86_INS_VCMPEQ_USSD
,
1764 X86_INS_VCMPNGE_UQSD
,
1765 X86_INS_VCMPNGT_UQSD
,
1766 X86_INS_VCMPFALSE_OSSD
,
1767 X86_INS_VCMPNEQ_OSSD
,
1768 X86_INS_VCMPGE_OQSD
,
1769 X86_INS_VCMPGT_OQSD
,
1770 X86_INS_VCMPTRUE_USSD
,
1776 X86_INS_VCMPUNORDPS
,
1781 X86_INS_VCMPEQ_UQPS
,
1784 X86_INS_VCMPFALSEPS
,
1785 X86_INS_VCMPNEQ_OQPS
,
1789 X86_INS_VCMPEQ_OSPS
,
1790 X86_INS_VCMPLT_OQPS
,
1791 X86_INS_VCMPLE_OQPS
,
1792 X86_INS_VCMPUNORD_SPS
,
1793 X86_INS_VCMPNEQ_USPS
,
1794 X86_INS_VCMPNLT_UQPS
,
1795 X86_INS_VCMPNLE_UQPS
,
1796 X86_INS_VCMPORD_SPS
,
1797 X86_INS_VCMPEQ_USPS
,
1798 X86_INS_VCMPNGE_UQPS
,
1799 X86_INS_VCMPNGT_UQPS
,
1800 X86_INS_VCMPFALSE_OSPS
,
1801 X86_INS_VCMPNEQ_OSPS
,
1802 X86_INS_VCMPGE_OQPS
,
1803 X86_INS_VCMPGT_OQPS
,
1804 X86_INS_VCMPTRUE_USPS
,
1810 X86_INS_VCMPUNORDPD
,
1815 X86_INS_VCMPEQ_UQPD
,
1818 X86_INS_VCMPFALSEPD
,
1819 X86_INS_VCMPNEQ_OQPD
,
1823 X86_INS_VCMPEQ_OSPD
,
1824 X86_INS_VCMPLT_OQPD
,
1825 X86_INS_VCMPLE_OQPD
,
1826 X86_INS_VCMPUNORD_SPD
,
1827 X86_INS_VCMPNEQ_USPD
,
1828 X86_INS_VCMPNLT_UQPD
,
1829 X86_INS_VCMPNLE_UQPD
,
1830 X86_INS_VCMPORD_SPD
,
1831 X86_INS_VCMPEQ_USPD
,
1832 X86_INS_VCMPNGE_UQPD
,
1833 X86_INS_VCMPNGT_UQPD
,
1834 X86_INS_VCMPFALSE_OSPD
,
1835 X86_INS_VCMPNEQ_OSPD
,
1836 X86_INS_VCMPGE_OQPD
,
1837 X86_INS_VCMPGT_OQPD
,
1838 X86_INS_VCMPTRUE_USPD
,
1840 X86_INS_ENDING
, // mark the end of the list of insn
1843 // Group of X86 instructions
1844 alias x86_insn_group
= uint;
1845 enum /*x86_insn_group*/ : uint {
1846 X86_GRP_INVALID
= 0, // = CS_GRP_INVALID
1849 // all jump instructions (conditional+direct+indirect jumps)
1850 X86_GRP_JUMP
, // = CS_GRP_JUMP
1851 // all call instructions
1852 X86_GRP_CALL
, // = CS_GRP_CALL
1853 // all return instructions
1854 X86_GRP_RET
, // = CS_GRP_RET
1855 // all interrupt instructions (int+syscall)
1856 X86_GRP_INT
, // = CS_GRP_INT
1857 // all interrupt return instructions
1858 X86_GRP_IRET
, // = CS_GRP_IRET
1859 // all privileged instructions
1860 X86_GRP_PRIVILEGE
, // = CS_GRP_PRIVILEGE
1862 //> Architecture-specific groups
1863 X86_GRP_VM
= 128, // all virtualization instructions (VT-x + AMD-V)
1896 X86_GRP_NOT64BITMODE
,