1#![allow(dead_code)]
2#![allow(unused_variables)]
3#![allow(non_camel_case_types)]
4
5use disasm_core::{insn::Insn, utils::zextract};
6
7pub mod opcode {
8 use disasm_core::{insn::Opcode, macros::define_opcodes};
9
10 pub const INVALID: Opcode = Opcode::INVALID;
11
12 pub(super) const BASE_OPCODE: u32 = 4096;
13
14 define_opcodes! {
15 CMPEQPS = "cmpeqps",
16 CMPLTPS = "cmpltps",
17 CMPLEPS = "cmpleps",
18 CMPUNORDPS = "cmpunordps",
19 CMPNEQPS = "cmpneqps",
20 CMPNLTPS = "cmpnltps",
21 CMPNLEPS = "cmpnleps",
22 CMPORDPS = "cmpordps",
23 CMPEQSS = "cmpeqss",
24 CMPLTSS = "cmpltss",
25 CMPLESS = "cmpless",
26 CMPUNORDSS = "cmpunordss",
27 CMPNEQSS = "cmpneqss",
28 CMPNLTSS = "cmpnltss",
29 CMPNLESS = "cmpnless",
30 CMPORDSS = "cmpordss",
31 CMPEQPD = "cmpeqpd",
32 CMPLTPD = "cmpltpd",
33 CMPLEPD = "cmplepd",
34 CMPUNORDPD = "cmpunordpd",
35 CMPNEQPD = "cmpneqpd",
36 CMPNLTPD = "cmpnltpd",
37 CMPNLEPD = "cmpnlepd",
38 CMPORDPD = "cmpordpd",
39 CMPEQSD = "cmpeqsd",
40 CMPLTSD = "cmpltsd",
41 CMPLESD = "cmplesd",
42 CMPUNORDSD = "cmpunordsd",
43 CMPNEQSD = "cmpneqsd",
44 CMPNLTSD = "cmpnltsd",
45 CMPNLESD = "cmpnlesd",
46 CMPORDSD = "cmpordsd",
47
48 PCLMULLQLQDQ = "pclmullqlqdq",
49 PCLMULHQLQDQ = "pclmulhqlqdq",
50 PCLMULLQHQDQ = "pclmullqhqdq",
51 PCLMULHQHQDQ = "pclmulhqhqdq",
52 VPCLMULLQLQDQ = "vpclmullqlqdq",
53 VPCLMULHQLQDQ = "vpclmulhqlqdq",
54 VPCLMULLQHQDQ = "vpclmullqhqdq",
55 VPCLMULHQHQDQ = "vpclmulhqhqdq",
56
57 VCMPEQSS = "vcmpeqss",
58 VCMPLTSS = "vcmpltss",
59 VCMPLESS = "vcmpless",
60 VCMPUNORDSS = "vcmpunordss",
61 VCMPNEQSS = "vcmpneqss",
62 VCMPNLTSS = "vcmpnltss",
63 VCMPNLESS = "vcmpnless",
64 VCMPORDSS = "vcmpordss",
65 VCMPEQ_UQSS = "vcmpeq_uqss",
66 VCMPNGESS = "vcmpngess",
67 VCMPNGTSS = "vcmpngtss",
68 VCMPFALSESS = "vcmpfalsess",
69 VCMPNEQ_OQSS = "vcmpneq_oqss",
70 VCMPGESS = "vcmpgess",
71 VCMPGTSS = "vcmpgtss",
72 VCMPTRUESS = "vcmptruess",
73 VCMPEQ_OSSS = "vcmpeq_osss",
74 VCMPLT_OQSS = "vcmplt_oqss",
75 VCMPLE_OQSS = "vcmple_oqss",
76 VCMPUNORD_SSS = "vcmpunord_sss",
77 VCMPNEQ_USSS = "vcmpneq_usss",
78 VCMPNLT_UQSS = "vcmpnlt_uqss",
79 VCMPNLE_UQSS = "vcmpnle_uqss",
80 VCMPORD_SSS = "vcmpord_sss",
81 VCMPEQ_USSS = "vcmpeq_usss",
82 VCMPNGE_UQSS = "vcmpnge_uqss",
83 VCMPNGT_UQSS = "vcmpngt_uqss",
84 VCMPFALSE_OSSS = "vcmpfalse_osss",
85 VCMPNEQ_OSSS = "vcmpneq_osss",
86 VCMPGE_OQSS = "vcmpge_oqss",
87 VCMPGT_OQSS = "vcmpgt_oqss",
88 VCMPTRUE_USSS = "vcmptrue_usss",
89 VCMPEQSD = "vcmpeqsd",
90 VCMPLTSD = "vcmpltsd",
91 VCMPLESD = "vcmplesd",
92 VCMPUNORDSD = "vcmpunordsd",
93 VCMPNEQSD = "vcmpneqsd",
94 VCMPNLTSD = "vcmpnltsd",
95 VCMPNLESD = "vcmpnlesd",
96 VCMPORDSD = "vcmpordsd",
97 VCMPEQ_UQSD = "vcmpeq_uqsd",
98 VCMPNGESD = "vcmpngesd",
99 VCMPNGTSD = "vcmpngtsd",
100 VCMPFALSESD = "vcmpfalsesd",
101 VCMPNEQ_OQSD = "vcmpneq_oqsd",
102 VCMPGESD = "vcmpgesd",
103 VCMPGTSD = "vcmpgtsd",
104 VCMPTRUESD = "vcmptruesd",
105 VCMPEQ_OSSD = "vcmpeq_ossd",
106 VCMPLT_OQSD = "vcmplt_oqsd",
107 VCMPLE_OQSD = "vcmple_oqsd",
108 VCMPUNORD_SSD = "vcmpunord_ssd",
109 VCMPNEQ_USSD = "vcmpneq_ussd",
110 VCMPNLT_UQSD = "vcmpnlt_uqsd",
111 VCMPNLE_UQSD = "vcmpnle_uqsd",
112 VCMPORD_SSD = "vcmpord_ssd",
113 VCMPEQ_USSD = "vcmpeq_ussd",
114 VCMPNGE_UQSD = "vcmpnge_uqsd",
115 VCMPNGT_UQSD = "vcmpngt_uqsd",
116 VCMPFALSE_OSSD = "vcmpfalse_ossd",
117 VCMPNEQ_OSSD = "vcmpneq_ossd",
118 VCMPGE_OQSD = "vcmpge_oqsd",
119 VCMPGT_OQSD = "vcmpgt_oqsd",
120 VCMPTRUE_USSD = "vcmptrue_ussd",
121 VCMPEQPS = "vcmpeqps",
122 VCMPLTPS = "vcmpltps",
123 VCMPLEPS = "vcmpleps",
124 VCMPUNORDPS = "vcmpunordps",
125 VCMPNEQPS = "vcmpneqps",
126 VCMPNLTPS = "vcmpnltps",
127 VCMPNLEPS = "vcmpnleps",
128 VCMPORDPS = "vcmpordps",
129 VCMPEQ_UQPS = "vcmpeq_uqps",
130 VCMPNGEPS = "vcmpngeps",
131 VCMPNGTPS = "vcmpngtps",
132 VCMPFALSEPS = "vcmpfalseps",
133 VCMPNEQ_OQPS = "vcmpneq_oqps",
134 VCMPGEPS = "vcmpgeps",
135 VCMPGTPS = "vcmpgtps",
136 VCMPTRUEPS = "vcmptrueps",
137 VCMPEQ_OSPS = "vcmpeq_osps",
138 VCMPLT_OQPS = "vcmplt_oqps",
139 VCMPLE_OQPS = "vcmple_oqps",
140 VCMPUNORD_SPS = "vcmpunord_sps",
141 VCMPNEQ_USPS = "vcmpneq_usps",
142 VCMPNLT_UQPS = "vcmpnlt_uqps",
143 VCMPNLE_UQPS = "vcmpnle_uqps",
144 VCMPORD_SPS = "vcmpord_sps",
145 VCMPEQ_USPS = "vcmpeq_usps",
146 VCMPNGE_UQPS = "vcmpnge_uqps",
147 VCMPNGT_UQPS = "vcmpngt_uqps",
148 VCMPFALSE_OSPS = "vcmpfalse_osps",
149 VCMPNEQ_OSPS = "vcmpneq_osps",
150 VCMPGE_OQPS = "vcmpge_oqps",
151 VCMPGT_OQPS = "vcmpgt_oqps",
152 VCMPTRUE_USPS = "vcmptrue_usps",
153 VCMPEQPD = "vcmpeqpd",
154 VCMPLTPD = "vcmpltpd",
155 VCMPLEPD = "vcmplepd",
156 VCMPUNORDPD = "vcmpunordpd",
157 VCMPNEQPD = "vcmpneqpd",
158 VCMPNLTPD = "vcmpnltpd",
159 VCMPNLEPD = "vcmpnlepd",
160 VCMPORDPD = "vcmpordpd",
161 VCMPEQ_UQPD = "vcmpeq_uqpd",
162 VCMPNGEPD = "vcmpngepd",
163 VCMPNGTPD = "vcmpngtpd",
164 VCMPFALSEPD = "vcmpfalsepd",
165 VCMPNEQ_OQPD = "vcmpneq_oqpd",
166 VCMPGEPD = "vcmpgepd",
167 VCMPGTPD = "vcmpgtpd",
168 VCMPTRUEPD = "vcmptruepd",
169 VCMPEQ_OSPD = "vcmpeq_ospd",
170 VCMPLT_OQPD = "vcmplt_oqpd",
171 VCMPLE_OQPD = "vcmple_oqpd",
172 VCMPUNORD_SPD = "vcmpunord_spd",
173 VCMPNEQ_USPD = "vcmpneq_uspd",
174 VCMPNLT_UQPD = "vcmpnlt_uqpd",
175 VCMPNLE_UQPD = "vcmpnle_uqpd",
176 VCMPORD_SPD = "vcmpord_spd",
177 VCMPEQ_USPD = "vcmpeq_uspd",
178 VCMPNGE_UQPD = "vcmpnge_uqpd",
179 VCMPNGT_UQPD = "vcmpngt_uqpd",
180 VCMPFALSE_OSPD = "vcmpfalse_ospd",
181 VCMPNEQ_OSPD = "vcmpneq_ospd",
182 VCMPGE_OQPD = "vcmpge_oqpd",
183 VCMPGT_OQPD = "vcmpgt_oqpd",
184 VCMPTRUE_USPD = "vcmptrue_uspd",
185
186 VPCMPEQUD = "vpcmpequd",
187 VPCMPLTUD = "vpcmpltud",
188 VPCMPLEUD = "vpcmpleud",
189 VPCMPNEQUD = "vpcmpnequd",
190 VPCMPNLTUD = "vpcmpnltud",
191 VPCMPNLEUD = "vpcmpnleud",
192 VPCMPLTD = "vpcmpltd",
193 VPCMPLED = "vpcmpled",
194 VPCMPNEQD = "vpcmpneqd",
195 VPCMPNLTD = "vpcmpnltd",
196 VPCMPNLED = "vpcmpnled",
197 VPCMPEQUB = "vpcmpequb",
198 VPCMPLTUB = "vpcmpltub",
199 VPCMPLEUB = "vpcmpleub",
200 VPCMPNEQUB = "vpcmpnequb",
201 VPCMPNLTUB = "vpcmpnltub",
202 VPCMPNLEUB = "vpcmpnleub",
203 VPCMPLTB = "vpcmpltb",
204 VPCMPLEB = "vpcmpleb",
205 VPCMPNEQB = "vpcmpneqb",
206 VPCMPNLTB = "vpcmpnltb",
207 VPCMPNLEB = "vpcmpnleb",
208 VPCMPEQUQ = "vpcmpequq",
209 VPCMPLTUQ = "vpcmpltuq",
210 VPCMPLEUQ = "vpcmpleuq",
211 VPCMPNEQUQ = "vpcmpnequq",
212 VPCMPNLTUQ = "vpcmpnltuq",
213 VPCMPNLEUQ = "vpcmpnleuq",
214 VPCMPLTQ = "vpcmpltq",
215 VPCMPLEQ = "vpcmpleq",
216 VPCMPNEQQ = "vpcmpneqq",
217 VPCMPNLTQ = "vpcmpnltq",
218 VPCMPNLEQ = "vpcmpnleq",
219 VPCMPEQUW = "vpcmpequw",
220 VPCMPLTUW = "vpcmpltuw",
221 VPCMPLEUW = "vpcmpleuw",
222 VPCMPNEQUW = "vpcmpnequw",
223 VPCMPNLTUW = "vpcmpnltuw",
224 VPCMPNLEUW = "vpcmpnleuw",
225 VPCMPLTW = "vpcmpltw",
226 VPCMPLEW = "vpcmplew",
227 VPCMPNEQW = "vpcmpneqw",
228 VPCMPNLTW = "vpcmpnltw",
229 VPCMPNLEW = "vpcmpnlew",
230 VCMPEQPH = "vcmpeqph",
231 VCMPLTPH = "vcmpltph",
232 VCMPLEPH = "vcmpleph",
233 VCMPUNORDPH = "vcmpunordph",
234 VCMPNEQPH = "vcmpneqph",
235 VCMPNLTPH = "vcmpnltph",
236 VCMPNLEPH = "vcmpnleph",
237 VCMPORDPH = "vcmpordph",
238 VCMPEQ_UQPH = "vcmpeq_uqph",
239 VCMPNGEPH = "vcmpngeph",
240 VCMPNGTPH = "vcmpngtph",
241 VCMPFALSEPH = "vcmpfalseph",
242 VCMPNEQ_OQPH = "vcmpneq_oqph",
243 VCMPGEPH = "vcmpgeph",
244 VCMPGTPH = "vcmpgtph",
245 VCMPTRUEPH = "vcmptrueph",
246 VCMPEQ_OSPH = "vcmpeq_osph",
247 VCMPLT_OQPH = "vcmplt_oqph",
248 VCMPLE_OQPH = "vcmple_oqph",
249 VCMPUNORD_SPH = "vcmpunord_sph",
250 VCMPNEQ_USPH = "vcmpneq_usph",
251 VCMPNLT_UQPH = "vcmpnlt_uqph",
252 VCMPNLE_UQPH = "vcmpnle_uqph",
253 VCMPORD_SPH = "vcmpord_sph",
254 VCMPEQ_USPH = "vcmpeq_usph",
255 VCMPNGE_UQPH = "vcmpnge_uqph",
256 VCMPNGT_UQPH = "vcmpngt_uqph",
257 VCMPFALSE_OSPH = "vcmpfalse_osph",
258 VCMPNEQ_OSPH = "vcmpneq_osph",
259 VCMPGE_OQPH = "vcmpge_oqph",
260 VCMPGT_OQPH = "vcmpgt_oqph",
261 VCMPTRUE_USPH = "vcmptrue_usph",
262 VCMPEQSH = "vcmpeqsh",
263 VCMPLTSH = "vcmpltsh",
264 VCMPLESH = "vcmplesh",
265 VCMPUNORDSH = "vcmpunordsh",
266 VCMPNEQSH = "vcmpneqsh",
267 VCMPNLTSH = "vcmpnltsh",
268 VCMPNLESH = "vcmpnlesh",
269 VCMPORDSH = "vcmpordsh",
270 VCMPEQ_UQSH = "vcmpeq_uqsh",
271 VCMPNGESH = "vcmpngesh",
272 VCMPNGTSH = "vcmpngtsh",
273 VCMPFALSESH = "vcmpfalsesh",
274 VCMPNEQ_OQSH = "vcmpneq_oqsh",
275 VCMPGESH = "vcmpgesh",
276 VCMPGTSH = "vcmpgtsh",
277 VCMPTRUESH = "vcmptruesh",
278 VCMPEQ_OSSH = "vcmpeq_ossh",
279 VCMPLT_OQSH = "vcmplt_oqsh",
280 VCMPLE_OQSH = "vcmple_oqsh",
281 VCMPUNORD_SSH = "vcmpunord_ssh",
282 VCMPNEQ_USSH = "vcmpneq_ussh",
283 VCMPNLT_UQSH = "vcmpnlt_uqsh",
284 VCMPNLE_UQSH = "vcmpnle_uqsh",
285 VCMPORD_SSH = "vcmpord_ssh",
286 VCMPEQ_USSH = "vcmpeq_ussh",
287 VCMPNGE_UQSH = "vcmpnge_uqsh",
288 VCMPNGT_UQSH = "vcmpngt_uqsh",
289 VCMPFALSE_OSSH = "vcmpfalse_ossh",
290 VCMPNEQ_OSSH = "vcmpneq_ossh",
291 VCMPGE_OQSH = "vcmpge_oqsh",
292 VCMPGT_OQSH = "vcmpgt_oqsh",
293 VCMPTRUE_USSH = "vcmptrue_ussh",
294 }
295
296 include!(concat!(env!("OUT_DIR"), "/generated_opcodes.rs"));
297
298 #[cfg(feature = "mnemonic")]
299 #[inline(always)]
300 pub(crate) fn mnemonic(opcode: Opcode) -> Option<&'static str> {
301 defined_mnemonic(opcode).or_else(|| generated_mnemonic(opcode))
302 }
303}
304
305include!(concat!(env!("OUT_DIR"), "/generated_set.rs"));
306include!(concat!(env!("OUT_DIR"), "/generated_decode.rs"));
307include!(concat!(env!("OUT_DIR"), "/generated_decode_0f.rs"));
308include!(concat!(env!("OUT_DIR"), "/generated_decode_0f_38.rs"));
309include!(concat!(env!("OUT_DIR"), "/generated_decode_0f_3a.rs"));
310include!(concat!(env!("OUT_DIR"), "/generated_decode_vex.rs"));
311include!(concat!(env!("OUT_DIR"), "/generated_decode_evex.rs"));