• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef CAPSTONE_SYSTEMZ_H
2 #define CAPSTONE_SYSTEMZ_H
3 
4 /* Capstone Disassembly Engine */
5 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2014 */
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 #if !defined(_MSC_VER) || !defined(_KERNEL_MODE)
12 #include <stdint.h>
13 #endif
14 
15 #include "platform.h"
16 
17 #ifdef _MSC_VER
18 #pragma warning(disable:4201)
19 #endif
20 
21 //> Enums corresponding to SystemZ condition codes
22 typedef enum sysz_cc {
23 	SYSZ_CC_INVALID = 0,	// invalid CC (default)
24 
25 	SYSZ_CC_O,
26 	SYSZ_CC_H,
27 	SYSZ_CC_NLE,
28 	SYSZ_CC_L,
29 	SYSZ_CC_NHE,
30 	SYSZ_CC_LH,
31 	SYSZ_CC_NE,
32 	SYSZ_CC_E,
33 	SYSZ_CC_NLH,
34 	SYSZ_CC_HE,
35 	SYSZ_CC_NL,
36 	SYSZ_CC_LE,
37 	SYSZ_CC_NH,
38 	SYSZ_CC_NO,
39 } sysz_cc;
40 
41 //> Operand type for instruction's operands
42 typedef enum sysz_op_type {
43 	SYSZ_OP_INVALID = 0, // = CS_OP_INVALID (Uninitialized).
44 	SYSZ_OP_REG, // = CS_OP_REG (Register operand).
45 	SYSZ_OP_IMM, // = CS_OP_IMM (Immediate operand).
46 	SYSZ_OP_MEM, // = CS_OP_MEM (Memory operand).
47 	SYSZ_OP_ACREG = 64,	// Access register operand.
48 } sysz_op_type;
49 
50 // Instruction's operand referring to memory
51 // This is associated with SYSZ_OP_MEM operand type above
52 typedef struct sysz_op_mem {
53 	uint8_t base;	// base register
54 	uint8_t index;	// index register
55 	uint64_t length;	// BDLAddr operand
56 	int64_t disp;	// displacement/offset value
57 } sysz_op_mem;
58 
59 // Instruction operand
60 typedef struct cs_sysz_op {
61 	sysz_op_type type;	// operand type
62 	union {
63 		unsigned int reg;	// register value for REG operand
64 		int64_t imm;		// immediate value for IMM operand
65 		sysz_op_mem mem;		// base/disp value for MEM operand
66 	};
67 } cs_sysz_op;
68 
69 // Instruction structure
70 typedef struct cs_sysz {
71 	sysz_cc cc;		// Code condition
72 	// Number of operands of this instruction,
73 	// or 0 when instruction has no operand.
74 	uint8_t op_count;
75 	cs_sysz_op operands[6]; // operands for this instruction.
76 } cs_sysz;
77 
78 //> SystemZ registers
79 typedef enum sysz_reg {
80 	SYSZ_REG_INVALID = 0,
81 
82 	SYSZ_REG_0,
83 	SYSZ_REG_1,
84 	SYSZ_REG_2,
85 	SYSZ_REG_3,
86 	SYSZ_REG_4,
87 	SYSZ_REG_5,
88 	SYSZ_REG_6,
89 	SYSZ_REG_7,
90 	SYSZ_REG_8,
91 	SYSZ_REG_9,
92 	SYSZ_REG_10,
93 	SYSZ_REG_11,
94 	SYSZ_REG_12,
95 	SYSZ_REG_13,
96 	SYSZ_REG_14,
97 	SYSZ_REG_15,
98 	SYSZ_REG_CC,
99 	SYSZ_REG_F0,
100 	SYSZ_REG_F1,
101 	SYSZ_REG_F2,
102 	SYSZ_REG_F3,
103 	SYSZ_REG_F4,
104 	SYSZ_REG_F5,
105 	SYSZ_REG_F6,
106 	SYSZ_REG_F7,
107 	SYSZ_REG_F8,
108 	SYSZ_REG_F9,
109 	SYSZ_REG_F10,
110 	SYSZ_REG_F11,
111 	SYSZ_REG_F12,
112 	SYSZ_REG_F13,
113 	SYSZ_REG_F14,
114 	SYSZ_REG_F15,
115 
116 	SYSZ_REG_R0L,
117 
118 	SYSZ_REG_ENDING,
119 } sysz_reg;
120 
121 //> SystemZ instruction
122 typedef enum sysz_insn {
123 	SYSZ_INS_INVALID = 0,
124 
125 	SYSZ_INS_A,
126 	SYSZ_INS_ADB,
127 	SYSZ_INS_ADBR,
128 	SYSZ_INS_AEB,
129 	SYSZ_INS_AEBR,
130 	SYSZ_INS_AFI,
131 	SYSZ_INS_AG,
132 	SYSZ_INS_AGF,
133 	SYSZ_INS_AGFI,
134 	SYSZ_INS_AGFR,
135 	SYSZ_INS_AGHI,
136 	SYSZ_INS_AGHIK,
137 	SYSZ_INS_AGR,
138 	SYSZ_INS_AGRK,
139 	SYSZ_INS_AGSI,
140 	SYSZ_INS_AH,
141 	SYSZ_INS_AHI,
142 	SYSZ_INS_AHIK,
143 	SYSZ_INS_AHY,
144 	SYSZ_INS_AIH,
145 	SYSZ_INS_AL,
146 	SYSZ_INS_ALC,
147 	SYSZ_INS_ALCG,
148 	SYSZ_INS_ALCGR,
149 	SYSZ_INS_ALCR,
150 	SYSZ_INS_ALFI,
151 	SYSZ_INS_ALG,
152 	SYSZ_INS_ALGF,
153 	SYSZ_INS_ALGFI,
154 	SYSZ_INS_ALGFR,
155 	SYSZ_INS_ALGHSIK,
156 	SYSZ_INS_ALGR,
157 	SYSZ_INS_ALGRK,
158 	SYSZ_INS_ALHSIK,
159 	SYSZ_INS_ALR,
160 	SYSZ_INS_ALRK,
161 	SYSZ_INS_ALY,
162 	SYSZ_INS_AR,
163 	SYSZ_INS_ARK,
164 	SYSZ_INS_ASI,
165 	SYSZ_INS_AXBR,
166 	SYSZ_INS_AY,
167 	SYSZ_INS_BCR,
168 	SYSZ_INS_BRC,
169 	SYSZ_INS_BRCL,
170 	SYSZ_INS_CGIJ,
171 	SYSZ_INS_CGRJ,
172 	SYSZ_INS_CIJ,
173 	SYSZ_INS_CLGIJ,
174 	SYSZ_INS_CLGRJ,
175 	SYSZ_INS_CLIJ,
176 	SYSZ_INS_CLRJ,
177 	SYSZ_INS_CRJ,
178 	SYSZ_INS_BER,
179 	SYSZ_INS_JE,
180 	SYSZ_INS_JGE,
181 	SYSZ_INS_LOCE,
182 	SYSZ_INS_LOCGE,
183 	SYSZ_INS_LOCGRE,
184 	SYSZ_INS_LOCRE,
185 	SYSZ_INS_STOCE,
186 	SYSZ_INS_STOCGE,
187 	SYSZ_INS_BHR,
188 	SYSZ_INS_BHER,
189 	SYSZ_INS_JHE,
190 	SYSZ_INS_JGHE,
191 	SYSZ_INS_LOCHE,
192 	SYSZ_INS_LOCGHE,
193 	SYSZ_INS_LOCGRHE,
194 	SYSZ_INS_LOCRHE,
195 	SYSZ_INS_STOCHE,
196 	SYSZ_INS_STOCGHE,
197 	SYSZ_INS_JH,
198 	SYSZ_INS_JGH,
199 	SYSZ_INS_LOCH,
200 	SYSZ_INS_LOCGH,
201 	SYSZ_INS_LOCGRH,
202 	SYSZ_INS_LOCRH,
203 	SYSZ_INS_STOCH,
204 	SYSZ_INS_STOCGH,
205 	SYSZ_INS_CGIJNLH,
206 	SYSZ_INS_CGRJNLH,
207 	SYSZ_INS_CIJNLH,
208 	SYSZ_INS_CLGIJNLH,
209 	SYSZ_INS_CLGRJNLH,
210 	SYSZ_INS_CLIJNLH,
211 	SYSZ_INS_CLRJNLH,
212 	SYSZ_INS_CRJNLH,
213 	SYSZ_INS_CGIJE,
214 	SYSZ_INS_CGRJE,
215 	SYSZ_INS_CIJE,
216 	SYSZ_INS_CLGIJE,
217 	SYSZ_INS_CLGRJE,
218 	SYSZ_INS_CLIJE,
219 	SYSZ_INS_CLRJE,
220 	SYSZ_INS_CRJE,
221 	SYSZ_INS_CGIJNLE,
222 	SYSZ_INS_CGRJNLE,
223 	SYSZ_INS_CIJNLE,
224 	SYSZ_INS_CLGIJNLE,
225 	SYSZ_INS_CLGRJNLE,
226 	SYSZ_INS_CLIJNLE,
227 	SYSZ_INS_CLRJNLE,
228 	SYSZ_INS_CRJNLE,
229 	SYSZ_INS_CGIJH,
230 	SYSZ_INS_CGRJH,
231 	SYSZ_INS_CIJH,
232 	SYSZ_INS_CLGIJH,
233 	SYSZ_INS_CLGRJH,
234 	SYSZ_INS_CLIJH,
235 	SYSZ_INS_CLRJH,
236 	SYSZ_INS_CRJH,
237 	SYSZ_INS_CGIJNL,
238 	SYSZ_INS_CGRJNL,
239 	SYSZ_INS_CIJNL,
240 	SYSZ_INS_CLGIJNL,
241 	SYSZ_INS_CLGRJNL,
242 	SYSZ_INS_CLIJNL,
243 	SYSZ_INS_CLRJNL,
244 	SYSZ_INS_CRJNL,
245 	SYSZ_INS_CGIJHE,
246 	SYSZ_INS_CGRJHE,
247 	SYSZ_INS_CIJHE,
248 	SYSZ_INS_CLGIJHE,
249 	SYSZ_INS_CLGRJHE,
250 	SYSZ_INS_CLIJHE,
251 	SYSZ_INS_CLRJHE,
252 	SYSZ_INS_CRJHE,
253 	SYSZ_INS_CGIJNHE,
254 	SYSZ_INS_CGRJNHE,
255 	SYSZ_INS_CIJNHE,
256 	SYSZ_INS_CLGIJNHE,
257 	SYSZ_INS_CLGRJNHE,
258 	SYSZ_INS_CLIJNHE,
259 	SYSZ_INS_CLRJNHE,
260 	SYSZ_INS_CRJNHE,
261 	SYSZ_INS_CGIJL,
262 	SYSZ_INS_CGRJL,
263 	SYSZ_INS_CIJL,
264 	SYSZ_INS_CLGIJL,
265 	SYSZ_INS_CLGRJL,
266 	SYSZ_INS_CLIJL,
267 	SYSZ_INS_CLRJL,
268 	SYSZ_INS_CRJL,
269 	SYSZ_INS_CGIJNH,
270 	SYSZ_INS_CGRJNH,
271 	SYSZ_INS_CIJNH,
272 	SYSZ_INS_CLGIJNH,
273 	SYSZ_INS_CLGRJNH,
274 	SYSZ_INS_CLIJNH,
275 	SYSZ_INS_CLRJNH,
276 	SYSZ_INS_CRJNH,
277 	SYSZ_INS_CGIJLE,
278 	SYSZ_INS_CGRJLE,
279 	SYSZ_INS_CIJLE,
280 	SYSZ_INS_CLGIJLE,
281 	SYSZ_INS_CLGRJLE,
282 	SYSZ_INS_CLIJLE,
283 	SYSZ_INS_CLRJLE,
284 	SYSZ_INS_CRJLE,
285 	SYSZ_INS_CGIJNE,
286 	SYSZ_INS_CGRJNE,
287 	SYSZ_INS_CIJNE,
288 	SYSZ_INS_CLGIJNE,
289 	SYSZ_INS_CLGRJNE,
290 	SYSZ_INS_CLIJNE,
291 	SYSZ_INS_CLRJNE,
292 	SYSZ_INS_CRJNE,
293 	SYSZ_INS_CGIJLH,
294 	SYSZ_INS_CGRJLH,
295 	SYSZ_INS_CIJLH,
296 	SYSZ_INS_CLGIJLH,
297 	SYSZ_INS_CLGRJLH,
298 	SYSZ_INS_CLIJLH,
299 	SYSZ_INS_CLRJLH,
300 	SYSZ_INS_CRJLH,
301 	SYSZ_INS_BLR,
302 	SYSZ_INS_BLER,
303 	SYSZ_INS_JLE,
304 	SYSZ_INS_JGLE,
305 	SYSZ_INS_LOCLE,
306 	SYSZ_INS_LOCGLE,
307 	SYSZ_INS_LOCGRLE,
308 	SYSZ_INS_LOCRLE,
309 	SYSZ_INS_STOCLE,
310 	SYSZ_INS_STOCGLE,
311 	SYSZ_INS_BLHR,
312 	SYSZ_INS_JLH,
313 	SYSZ_INS_JGLH,
314 	SYSZ_INS_LOCLH,
315 	SYSZ_INS_LOCGLH,
316 	SYSZ_INS_LOCGRLH,
317 	SYSZ_INS_LOCRLH,
318 	SYSZ_INS_STOCLH,
319 	SYSZ_INS_STOCGLH,
320 	SYSZ_INS_JL,
321 	SYSZ_INS_JGL,
322 	SYSZ_INS_LOCL,
323 	SYSZ_INS_LOCGL,
324 	SYSZ_INS_LOCGRL,
325 	SYSZ_INS_LOCRL,
326 	SYSZ_INS_LOC,
327 	SYSZ_INS_LOCG,
328 	SYSZ_INS_LOCGR,
329 	SYSZ_INS_LOCR,
330 	SYSZ_INS_STOCL,
331 	SYSZ_INS_STOCGL,
332 	SYSZ_INS_BNER,
333 	SYSZ_INS_JNE,
334 	SYSZ_INS_JGNE,
335 	SYSZ_INS_LOCNE,
336 	SYSZ_INS_LOCGNE,
337 	SYSZ_INS_LOCGRNE,
338 	SYSZ_INS_LOCRNE,
339 	SYSZ_INS_STOCNE,
340 	SYSZ_INS_STOCGNE,
341 	SYSZ_INS_BNHR,
342 	SYSZ_INS_BNHER,
343 	SYSZ_INS_JNHE,
344 	SYSZ_INS_JGNHE,
345 	SYSZ_INS_LOCNHE,
346 	SYSZ_INS_LOCGNHE,
347 	SYSZ_INS_LOCGRNHE,
348 	SYSZ_INS_LOCRNHE,
349 	SYSZ_INS_STOCNHE,
350 	SYSZ_INS_STOCGNHE,
351 	SYSZ_INS_JNH,
352 	SYSZ_INS_JGNH,
353 	SYSZ_INS_LOCNH,
354 	SYSZ_INS_LOCGNH,
355 	SYSZ_INS_LOCGRNH,
356 	SYSZ_INS_LOCRNH,
357 	SYSZ_INS_STOCNH,
358 	SYSZ_INS_STOCGNH,
359 	SYSZ_INS_BNLR,
360 	SYSZ_INS_BNLER,
361 	SYSZ_INS_JNLE,
362 	SYSZ_INS_JGNLE,
363 	SYSZ_INS_LOCNLE,
364 	SYSZ_INS_LOCGNLE,
365 	SYSZ_INS_LOCGRNLE,
366 	SYSZ_INS_LOCRNLE,
367 	SYSZ_INS_STOCNLE,
368 	SYSZ_INS_STOCGNLE,
369 	SYSZ_INS_BNLHR,
370 	SYSZ_INS_JNLH,
371 	SYSZ_INS_JGNLH,
372 	SYSZ_INS_LOCNLH,
373 	SYSZ_INS_LOCGNLH,
374 	SYSZ_INS_LOCGRNLH,
375 	SYSZ_INS_LOCRNLH,
376 	SYSZ_INS_STOCNLH,
377 	SYSZ_INS_STOCGNLH,
378 	SYSZ_INS_JNL,
379 	SYSZ_INS_JGNL,
380 	SYSZ_INS_LOCNL,
381 	SYSZ_INS_LOCGNL,
382 	SYSZ_INS_LOCGRNL,
383 	SYSZ_INS_LOCRNL,
384 	SYSZ_INS_STOCNL,
385 	SYSZ_INS_STOCGNL,
386 	SYSZ_INS_BNOR,
387 	SYSZ_INS_JNO,
388 	SYSZ_INS_JGNO,
389 	SYSZ_INS_LOCNO,
390 	SYSZ_INS_LOCGNO,
391 	SYSZ_INS_LOCGRNO,
392 	SYSZ_INS_LOCRNO,
393 	SYSZ_INS_STOCNO,
394 	SYSZ_INS_STOCGNO,
395 	SYSZ_INS_BOR,
396 	SYSZ_INS_JO,
397 	SYSZ_INS_JGO,
398 	SYSZ_INS_LOCO,
399 	SYSZ_INS_LOCGO,
400 	SYSZ_INS_LOCGRO,
401 	SYSZ_INS_LOCRO,
402 	SYSZ_INS_STOCO,
403 	SYSZ_INS_STOCGO,
404 	SYSZ_INS_STOC,
405 	SYSZ_INS_STOCG,
406 	SYSZ_INS_BASR,
407 	SYSZ_INS_BR,
408 	SYSZ_INS_BRAS,
409 	SYSZ_INS_BRASL,
410 	SYSZ_INS_J,
411 	SYSZ_INS_JG,
412 	SYSZ_INS_BRCT,
413 	SYSZ_INS_BRCTG,
414 	SYSZ_INS_C,
415 	SYSZ_INS_CDB,
416 	SYSZ_INS_CDBR,
417 	SYSZ_INS_CDFBR,
418 	SYSZ_INS_CDGBR,
419 	SYSZ_INS_CDLFBR,
420 	SYSZ_INS_CDLGBR,
421 	SYSZ_INS_CEB,
422 	SYSZ_INS_CEBR,
423 	SYSZ_INS_CEFBR,
424 	SYSZ_INS_CEGBR,
425 	SYSZ_INS_CELFBR,
426 	SYSZ_INS_CELGBR,
427 	SYSZ_INS_CFDBR,
428 	SYSZ_INS_CFEBR,
429 	SYSZ_INS_CFI,
430 	SYSZ_INS_CFXBR,
431 	SYSZ_INS_CG,
432 	SYSZ_INS_CGDBR,
433 	SYSZ_INS_CGEBR,
434 	SYSZ_INS_CGF,
435 	SYSZ_INS_CGFI,
436 	SYSZ_INS_CGFR,
437 	SYSZ_INS_CGFRL,
438 	SYSZ_INS_CGH,
439 	SYSZ_INS_CGHI,
440 	SYSZ_INS_CGHRL,
441 	SYSZ_INS_CGHSI,
442 	SYSZ_INS_CGR,
443 	SYSZ_INS_CGRL,
444 	SYSZ_INS_CGXBR,
445 	SYSZ_INS_CH,
446 	SYSZ_INS_CHF,
447 	SYSZ_INS_CHHSI,
448 	SYSZ_INS_CHI,
449 	SYSZ_INS_CHRL,
450 	SYSZ_INS_CHSI,
451 	SYSZ_INS_CHY,
452 	SYSZ_INS_CIH,
453 	SYSZ_INS_CL,
454 	SYSZ_INS_CLC,
455 	SYSZ_INS_CLFDBR,
456 	SYSZ_INS_CLFEBR,
457 	SYSZ_INS_CLFHSI,
458 	SYSZ_INS_CLFI,
459 	SYSZ_INS_CLFXBR,
460 	SYSZ_INS_CLG,
461 	SYSZ_INS_CLGDBR,
462 	SYSZ_INS_CLGEBR,
463 	SYSZ_INS_CLGF,
464 	SYSZ_INS_CLGFI,
465 	SYSZ_INS_CLGFR,
466 	SYSZ_INS_CLGFRL,
467 	SYSZ_INS_CLGHRL,
468 	SYSZ_INS_CLGHSI,
469 	SYSZ_INS_CLGR,
470 	SYSZ_INS_CLGRL,
471 	SYSZ_INS_CLGXBR,
472 	SYSZ_INS_CLHF,
473 	SYSZ_INS_CLHHSI,
474 	SYSZ_INS_CLHRL,
475 	SYSZ_INS_CLI,
476 	SYSZ_INS_CLIH,
477 	SYSZ_INS_CLIY,
478 	SYSZ_INS_CLR,
479 	SYSZ_INS_CLRL,
480 	SYSZ_INS_CLST,
481 	SYSZ_INS_CLY,
482 	SYSZ_INS_CPSDR,
483 	SYSZ_INS_CR,
484 	SYSZ_INS_CRL,
485 	SYSZ_INS_CS,
486 	SYSZ_INS_CSG,
487 	SYSZ_INS_CSY,
488 	SYSZ_INS_CXBR,
489 	SYSZ_INS_CXFBR,
490 	SYSZ_INS_CXGBR,
491 	SYSZ_INS_CXLFBR,
492 	SYSZ_INS_CXLGBR,
493 	SYSZ_INS_CY,
494 	SYSZ_INS_DDB,
495 	SYSZ_INS_DDBR,
496 	SYSZ_INS_DEB,
497 	SYSZ_INS_DEBR,
498 	SYSZ_INS_DL,
499 	SYSZ_INS_DLG,
500 	SYSZ_INS_DLGR,
501 	SYSZ_INS_DLR,
502 	SYSZ_INS_DSG,
503 	SYSZ_INS_DSGF,
504 	SYSZ_INS_DSGFR,
505 	SYSZ_INS_DSGR,
506 	SYSZ_INS_DXBR,
507 	SYSZ_INS_EAR,
508 	SYSZ_INS_FIDBR,
509 	SYSZ_INS_FIDBRA,
510 	SYSZ_INS_FIEBR,
511 	SYSZ_INS_FIEBRA,
512 	SYSZ_INS_FIXBR,
513 	SYSZ_INS_FIXBRA,
514 	SYSZ_INS_FLOGR,
515 	SYSZ_INS_IC,
516 	SYSZ_INS_ICY,
517 	SYSZ_INS_IIHF,
518 	SYSZ_INS_IIHH,
519 	SYSZ_INS_IIHL,
520 	SYSZ_INS_IILF,
521 	SYSZ_INS_IILH,
522 	SYSZ_INS_IILL,
523 	SYSZ_INS_IPM,
524 	SYSZ_INS_L,
525 	SYSZ_INS_LA,
526 	SYSZ_INS_LAA,
527 	SYSZ_INS_LAAG,
528 	SYSZ_INS_LAAL,
529 	SYSZ_INS_LAALG,
530 	SYSZ_INS_LAN,
531 	SYSZ_INS_LANG,
532 	SYSZ_INS_LAO,
533 	SYSZ_INS_LAOG,
534 	SYSZ_INS_LARL,
535 	SYSZ_INS_LAX,
536 	SYSZ_INS_LAXG,
537 	SYSZ_INS_LAY,
538 	SYSZ_INS_LB,
539 	SYSZ_INS_LBH,
540 	SYSZ_INS_LBR,
541 	SYSZ_INS_LCDBR,
542 	SYSZ_INS_LCEBR,
543 	SYSZ_INS_LCGFR,
544 	SYSZ_INS_LCGR,
545 	SYSZ_INS_LCR,
546 	SYSZ_INS_LCXBR,
547 	SYSZ_INS_LD,
548 	SYSZ_INS_LDEB,
549 	SYSZ_INS_LDEBR,
550 	SYSZ_INS_LDGR,
551 	SYSZ_INS_LDR,
552 	SYSZ_INS_LDXBR,
553 	SYSZ_INS_LDXBRA,
554 	SYSZ_INS_LDY,
555 	SYSZ_INS_LE,
556 	SYSZ_INS_LEDBR,
557 	SYSZ_INS_LEDBRA,
558 	SYSZ_INS_LER,
559 	SYSZ_INS_LEXBR,
560 	SYSZ_INS_LEXBRA,
561 	SYSZ_INS_LEY,
562 	SYSZ_INS_LFH,
563 	SYSZ_INS_LG,
564 	SYSZ_INS_LGB,
565 	SYSZ_INS_LGBR,
566 	SYSZ_INS_LGDR,
567 	SYSZ_INS_LGF,
568 	SYSZ_INS_LGFI,
569 	SYSZ_INS_LGFR,
570 	SYSZ_INS_LGFRL,
571 	SYSZ_INS_LGH,
572 	SYSZ_INS_LGHI,
573 	SYSZ_INS_LGHR,
574 	SYSZ_INS_LGHRL,
575 	SYSZ_INS_LGR,
576 	SYSZ_INS_LGRL,
577 	SYSZ_INS_LH,
578 	SYSZ_INS_LHH,
579 	SYSZ_INS_LHI,
580 	SYSZ_INS_LHR,
581 	SYSZ_INS_LHRL,
582 	SYSZ_INS_LHY,
583 	SYSZ_INS_LLC,
584 	SYSZ_INS_LLCH,
585 	SYSZ_INS_LLCR,
586 	SYSZ_INS_LLGC,
587 	SYSZ_INS_LLGCR,
588 	SYSZ_INS_LLGF,
589 	SYSZ_INS_LLGFR,
590 	SYSZ_INS_LLGFRL,
591 	SYSZ_INS_LLGH,
592 	SYSZ_INS_LLGHR,
593 	SYSZ_INS_LLGHRL,
594 	SYSZ_INS_LLH,
595 	SYSZ_INS_LLHH,
596 	SYSZ_INS_LLHR,
597 	SYSZ_INS_LLHRL,
598 	SYSZ_INS_LLIHF,
599 	SYSZ_INS_LLIHH,
600 	SYSZ_INS_LLIHL,
601 	SYSZ_INS_LLILF,
602 	SYSZ_INS_LLILH,
603 	SYSZ_INS_LLILL,
604 	SYSZ_INS_LMG,
605 	SYSZ_INS_LNDBR,
606 	SYSZ_INS_LNEBR,
607 	SYSZ_INS_LNGFR,
608 	SYSZ_INS_LNGR,
609 	SYSZ_INS_LNR,
610 	SYSZ_INS_LNXBR,
611 	SYSZ_INS_LPDBR,
612 	SYSZ_INS_LPEBR,
613 	SYSZ_INS_LPGFR,
614 	SYSZ_INS_LPGR,
615 	SYSZ_INS_LPR,
616 	SYSZ_INS_LPXBR,
617 	SYSZ_INS_LR,
618 	SYSZ_INS_LRL,
619 	SYSZ_INS_LRV,
620 	SYSZ_INS_LRVG,
621 	SYSZ_INS_LRVGR,
622 	SYSZ_INS_LRVR,
623 	SYSZ_INS_LT,
624 	SYSZ_INS_LTDBR,
625 	SYSZ_INS_LTEBR,
626 	SYSZ_INS_LTG,
627 	SYSZ_INS_LTGF,
628 	SYSZ_INS_LTGFR,
629 	SYSZ_INS_LTGR,
630 	SYSZ_INS_LTR,
631 	SYSZ_INS_LTXBR,
632 	SYSZ_INS_LXDB,
633 	SYSZ_INS_LXDBR,
634 	SYSZ_INS_LXEB,
635 	SYSZ_INS_LXEBR,
636 	SYSZ_INS_LXR,
637 	SYSZ_INS_LY,
638 	SYSZ_INS_LZDR,
639 	SYSZ_INS_LZER,
640 	SYSZ_INS_LZXR,
641 	SYSZ_INS_MADB,
642 	SYSZ_INS_MADBR,
643 	SYSZ_INS_MAEB,
644 	SYSZ_INS_MAEBR,
645 	SYSZ_INS_MDB,
646 	SYSZ_INS_MDBR,
647 	SYSZ_INS_MDEB,
648 	SYSZ_INS_MDEBR,
649 	SYSZ_INS_MEEB,
650 	SYSZ_INS_MEEBR,
651 	SYSZ_INS_MGHI,
652 	SYSZ_INS_MH,
653 	SYSZ_INS_MHI,
654 	SYSZ_INS_MHY,
655 	SYSZ_INS_MLG,
656 	SYSZ_INS_MLGR,
657 	SYSZ_INS_MS,
658 	SYSZ_INS_MSDB,
659 	SYSZ_INS_MSDBR,
660 	SYSZ_INS_MSEB,
661 	SYSZ_INS_MSEBR,
662 	SYSZ_INS_MSFI,
663 	SYSZ_INS_MSG,
664 	SYSZ_INS_MSGF,
665 	SYSZ_INS_MSGFI,
666 	SYSZ_INS_MSGFR,
667 	SYSZ_INS_MSGR,
668 	SYSZ_INS_MSR,
669 	SYSZ_INS_MSY,
670 	SYSZ_INS_MVC,
671 	SYSZ_INS_MVGHI,
672 	SYSZ_INS_MVHHI,
673 	SYSZ_INS_MVHI,
674 	SYSZ_INS_MVI,
675 	SYSZ_INS_MVIY,
676 	SYSZ_INS_MVST,
677 	SYSZ_INS_MXBR,
678 	SYSZ_INS_MXDB,
679 	SYSZ_INS_MXDBR,
680 	SYSZ_INS_N,
681 	SYSZ_INS_NC,
682 	SYSZ_INS_NG,
683 	SYSZ_INS_NGR,
684 	SYSZ_INS_NGRK,
685 	SYSZ_INS_NI,
686 	SYSZ_INS_NIHF,
687 	SYSZ_INS_NIHH,
688 	SYSZ_INS_NIHL,
689 	SYSZ_INS_NILF,
690 	SYSZ_INS_NILH,
691 	SYSZ_INS_NILL,
692 	SYSZ_INS_NIY,
693 	SYSZ_INS_NR,
694 	SYSZ_INS_NRK,
695 	SYSZ_INS_NY,
696 	SYSZ_INS_O,
697 	SYSZ_INS_OC,
698 	SYSZ_INS_OG,
699 	SYSZ_INS_OGR,
700 	SYSZ_INS_OGRK,
701 	SYSZ_INS_OI,
702 	SYSZ_INS_OIHF,
703 	SYSZ_INS_OIHH,
704 	SYSZ_INS_OIHL,
705 	SYSZ_INS_OILF,
706 	SYSZ_INS_OILH,
707 	SYSZ_INS_OILL,
708 	SYSZ_INS_OIY,
709 	SYSZ_INS_OR,
710 	SYSZ_INS_ORK,
711 	SYSZ_INS_OY,
712 	SYSZ_INS_PFD,
713 	SYSZ_INS_PFDRL,
714 	SYSZ_INS_RISBG,
715 	SYSZ_INS_RISBHG,
716 	SYSZ_INS_RISBLG,
717 	SYSZ_INS_RLL,
718 	SYSZ_INS_RLLG,
719 	SYSZ_INS_RNSBG,
720 	SYSZ_INS_ROSBG,
721 	SYSZ_INS_RXSBG,
722 	SYSZ_INS_S,
723 	SYSZ_INS_SDB,
724 	SYSZ_INS_SDBR,
725 	SYSZ_INS_SEB,
726 	SYSZ_INS_SEBR,
727 	SYSZ_INS_SG,
728 	SYSZ_INS_SGF,
729 	SYSZ_INS_SGFR,
730 	SYSZ_INS_SGR,
731 	SYSZ_INS_SGRK,
732 	SYSZ_INS_SH,
733 	SYSZ_INS_SHY,
734 	SYSZ_INS_SL,
735 	SYSZ_INS_SLB,
736 	SYSZ_INS_SLBG,
737 	SYSZ_INS_SLBR,
738 	SYSZ_INS_SLFI,
739 	SYSZ_INS_SLG,
740 	SYSZ_INS_SLBGR,
741 	SYSZ_INS_SLGF,
742 	SYSZ_INS_SLGFI,
743 	SYSZ_INS_SLGFR,
744 	SYSZ_INS_SLGR,
745 	SYSZ_INS_SLGRK,
746 	SYSZ_INS_SLL,
747 	SYSZ_INS_SLLG,
748 	SYSZ_INS_SLLK,
749 	SYSZ_INS_SLR,
750 	SYSZ_INS_SLRK,
751 	SYSZ_INS_SLY,
752 	SYSZ_INS_SQDB,
753 	SYSZ_INS_SQDBR,
754 	SYSZ_INS_SQEB,
755 	SYSZ_INS_SQEBR,
756 	SYSZ_INS_SQXBR,
757 	SYSZ_INS_SR,
758 	SYSZ_INS_SRA,
759 	SYSZ_INS_SRAG,
760 	SYSZ_INS_SRAK,
761 	SYSZ_INS_SRK,
762 	SYSZ_INS_SRL,
763 	SYSZ_INS_SRLG,
764 	SYSZ_INS_SRLK,
765 	SYSZ_INS_SRST,
766 	SYSZ_INS_ST,
767 	SYSZ_INS_STC,
768 	SYSZ_INS_STCH,
769 	SYSZ_INS_STCY,
770 	SYSZ_INS_STD,
771 	SYSZ_INS_STDY,
772 	SYSZ_INS_STE,
773 	SYSZ_INS_STEY,
774 	SYSZ_INS_STFH,
775 	SYSZ_INS_STG,
776 	SYSZ_INS_STGRL,
777 	SYSZ_INS_STH,
778 	SYSZ_INS_STHH,
779 	SYSZ_INS_STHRL,
780 	SYSZ_INS_STHY,
781 	SYSZ_INS_STMG,
782 	SYSZ_INS_STRL,
783 	SYSZ_INS_STRV,
784 	SYSZ_INS_STRVG,
785 	SYSZ_INS_STY,
786 	SYSZ_INS_SXBR,
787 	SYSZ_INS_SY,
788 	SYSZ_INS_TM,
789 	SYSZ_INS_TMHH,
790 	SYSZ_INS_TMHL,
791 	SYSZ_INS_TMLH,
792 	SYSZ_INS_TMLL,
793 	SYSZ_INS_TMY,
794 	SYSZ_INS_X,
795 	SYSZ_INS_XC,
796 	SYSZ_INS_XG,
797 	SYSZ_INS_XGR,
798 	SYSZ_INS_XGRK,
799 	SYSZ_INS_XI,
800 	SYSZ_INS_XIHF,
801 	SYSZ_INS_XILF,
802 	SYSZ_INS_XIY,
803 	SYSZ_INS_XR,
804 	SYSZ_INS_XRK,
805 	SYSZ_INS_XY,
806 
807 	SYSZ_INS_ENDING,   // <-- mark the end of the list of instructions
808 } sysz_insn;
809 
810 //> Group of SystemZ instructions
811 typedef enum sysz_insn_group {
812 	SYSZ_GRP_INVALID = 0, // = CS_GRP_INVALID
813 
814 	//> Generic groups
815 	// all jump instructions (conditional+direct+indirect jumps)
816 	SYSZ_GRP_JUMP,	// = CS_GRP_JUMP
817 
818 	//> Architecture-specific groups
819 	SYSZ_GRP_DISTINCTOPS = 128,
820 	SYSZ_GRP_FPEXTENSION,
821 	SYSZ_GRP_HIGHWORD,
822 	SYSZ_GRP_INTERLOCKEDACCESS1,
823 	SYSZ_GRP_LOADSTOREONCOND,
824 
825 	SYSZ_GRP_ENDING,   // <-- mark the end of the list of groups
826 } sysz_insn_group;
827 
828 #ifdef __cplusplus
829 }
830 #endif
831 
832 #endif
833