1 /* Capstone Disassembly Engine */
2 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */
3
4 #ifdef CAPSTONE_HAS_XCORE
5
6 #include <stdio.h> // debug
7 #include <string.h>
8
9 #include "../../utils.h"
10
11 #include "XCoreMapping.h"
12
13 #define GET_INSTRINFO_ENUM
14 #include "XCoreGenInstrInfo.inc"
15
16 static name_map reg_name_maps[] = {
17 { XCORE_REG_INVALID, NULL },
18
19 { XCORE_REG_CP, "cp" },
20 { XCORE_REG_DP, "dp" },
21 { XCORE_REG_LR, "lr" },
22 { XCORE_REG_SP, "sp" },
23 { XCORE_REG_R0, "r0" },
24 { XCORE_REG_R1, "r1" },
25 { XCORE_REG_R2, "r2" },
26 { XCORE_REG_R3, "r3" },
27 { XCORE_REG_R4, "r4" },
28 { XCORE_REG_R5, "r5" },
29 { XCORE_REG_R6, "r6" },
30 { XCORE_REG_R7, "r7" },
31 { XCORE_REG_R8, "r8" },
32 { XCORE_REG_R9, "r9" },
33 { XCORE_REG_R10, "r10" },
34 { XCORE_REG_R11, "r11" },
35
36 // pseudo registers
37 { XCORE_REG_PC, "pc" },
38
39 { XCORE_REG_SCP, "scp" },
40 { XCORE_REG_SSR, "ssr" },
41 { XCORE_REG_ET, "et" },
42 { XCORE_REG_ED, "ed" },
43 { XCORE_REG_SED, "sed" },
44 { XCORE_REG_KEP, "kep" },
45 { XCORE_REG_KSP, "ksp" },
46 { XCORE_REG_ID, "id" },
47 };
48
XCore_reg_name(csh handle,unsigned int reg)49 const char *XCore_reg_name(csh handle, unsigned int reg)
50 {
51 #ifndef CAPSTONE_DIET
52 if (reg >= XCORE_REG_ENDING)
53 return NULL;
54
55 return reg_name_maps[reg].name;
56 #else
57 return NULL;
58 #endif
59 }
60
XCore_reg_id(char * name)61 xcore_reg XCore_reg_id(char *name)
62 {
63 int i;
64
65 for(i = 1; i < ARR_SIZE(reg_name_maps); i++) {
66 if (!strcmp(name, reg_name_maps[i].name))
67 return reg_name_maps[i].id;
68 }
69
70 // not found
71 return 0;
72 }
73
74 static insn_map insns[] = {
75 // dummy item
76 {
77 0, 0,
78 #ifndef CAPSTONE_DIET
79 { 0 }, { 0 }, { 0 }, 0, 0
80 #endif
81 },
82
83 {
84 XCore_ADD_2rus, XCORE_INS_ADD,
85 #ifndef CAPSTONE_DIET
86 { 0 }, { 0 }, { 0 }, 0, 0
87 #endif
88 },
89 {
90 XCore_ADD_3r, XCORE_INS_ADD,
91 #ifndef CAPSTONE_DIET
92 { 0 }, { 0 }, { 0 }, 0, 0
93 #endif
94 },
95 {
96 XCore_ANDNOT_2r, XCORE_INS_ANDNOT,
97 #ifndef CAPSTONE_DIET
98 { 0 }, { 0 }, { 0 }, 0, 0
99 #endif
100 },
101 {
102 XCore_AND_3r, XCORE_INS_AND,
103 #ifndef CAPSTONE_DIET
104 { 0 }, { 0 }, { 0 }, 0, 0
105 #endif
106 },
107 {
108 XCore_ASHR_l2rus, XCORE_INS_ASHR,
109 #ifndef CAPSTONE_DIET
110 { 0 }, { 0 }, { 0 }, 0, 0
111 #endif
112 },
113 {
114 XCore_ASHR_l3r, XCORE_INS_ASHR,
115 #ifndef CAPSTONE_DIET
116 { 0 }, { 0 }, { 0 }, 0, 0
117 #endif
118 },
119 {
120 XCore_BAU_1r, XCORE_INS_BAU,
121 #ifndef CAPSTONE_DIET
122 { 0 }, { 0 }, { 0 }, 1, 1
123 #endif
124 },
125 {
126 XCore_BITREV_l2r, XCORE_INS_BITREV,
127 #ifndef CAPSTONE_DIET
128 { 0 }, { 0 }, { 0 }, 0, 0
129 #endif
130 },
131 {
132 XCore_BLACP_lu10, XCORE_INS_BLA,
133 #ifndef CAPSTONE_DIET
134 { XCORE_REG_SP, 0 }, { XCORE_REG_R0, XCORE_REG_R1, XCORE_REG_R2, XCORE_REG_R3, XCORE_REG_R11, XCORE_REG_LR, 0 }, { 0 }, 0, 0
135 #endif
136 },
137 {
138 XCore_BLACP_u10, XCORE_INS_BLA,
139 #ifndef CAPSTONE_DIET
140 { XCORE_REG_SP, 0 }, { XCORE_REG_R0, XCORE_REG_R1, XCORE_REG_R2, XCORE_REG_R3, XCORE_REG_R11, XCORE_REG_LR, 0 }, { 0 }, 0, 0
141 #endif
142 },
143 {
144 XCore_BLAT_lu6, XCORE_INS_BLAT,
145 #ifndef CAPSTONE_DIET
146 { XCORE_REG_R11, 0 }, { 0 }, { 0 }, 0, 0
147 #endif
148 },
149 {
150 XCore_BLAT_u6, XCORE_INS_BLAT,
151 #ifndef CAPSTONE_DIET
152 { XCORE_REG_R11, 0 }, { 0 }, { 0 }, 0, 0
153 #endif
154 },
155 {
156 XCore_BLA_1r, XCORE_INS_BLA,
157 #ifndef CAPSTONE_DIET
158 { XCORE_REG_SP, 0 }, { XCORE_REG_R0, XCORE_REG_R1, XCORE_REG_R2, XCORE_REG_R3, XCORE_REG_R11, XCORE_REG_LR, 0 }, { 0 }, 0, 0
159 #endif
160 },
161 {
162 XCore_BLRB_lu10, XCORE_INS_BL,
163 #ifndef CAPSTONE_DIET
164 { XCORE_REG_SP, 0 }, { XCORE_REG_R0, XCORE_REG_R1, XCORE_REG_R2, XCORE_REG_R3, XCORE_REG_R11, XCORE_REG_LR, 0 }, { 0 }, 0, 0
165 #endif
166 },
167 {
168 XCore_BLRB_u10, XCORE_INS_BL,
169 #ifndef CAPSTONE_DIET
170 { XCORE_REG_SP, 0 }, { XCORE_REG_R0, XCORE_REG_R1, XCORE_REG_R2, XCORE_REG_R3, XCORE_REG_R11, XCORE_REG_LR, 0 }, { 0 }, 0, 0
171 #endif
172 },
173 {
174 XCore_BLRF_lu10, XCORE_INS_BL,
175 #ifndef CAPSTONE_DIET
176 { XCORE_REG_SP, 0 }, { XCORE_REG_R0, XCORE_REG_R1, XCORE_REG_R2, XCORE_REG_R3, XCORE_REG_R11, XCORE_REG_LR, 0 }, { 0 }, 0, 0
177 #endif
178 },
179 {
180 XCore_BLRF_u10, XCORE_INS_BL,
181 #ifndef CAPSTONE_DIET
182 { XCORE_REG_SP, 0 }, { XCORE_REG_R0, XCORE_REG_R1, XCORE_REG_R2, XCORE_REG_R3, XCORE_REG_R11, XCORE_REG_LR, 0 }, { 0 }, 0, 0
183 #endif
184 },
185 {
186 XCore_BRBF_lru6, XCORE_INS_BF,
187 #ifndef CAPSTONE_DIET
188 { 0 }, { 0 }, { 0 }, 1, 0
189 #endif
190 },
191 {
192 XCore_BRBF_ru6, XCORE_INS_BF,
193 #ifndef CAPSTONE_DIET
194 { 0 }, { 0 }, { 0 }, 1, 0
195 #endif
196 },
197 {
198 XCore_BRBT_lru6, XCORE_INS_BT,
199 #ifndef CAPSTONE_DIET
200 { 0 }, { 0 }, { 0 }, 1, 0
201 #endif
202 },
203 {
204 XCore_BRBT_ru6, XCORE_INS_BT,
205 #ifndef CAPSTONE_DIET
206 { 0 }, { 0 }, { 0 }, 1, 0
207 #endif
208 },
209 {
210 XCore_BRBU_lu6, XCORE_INS_BU,
211 #ifndef CAPSTONE_DIET
212 { 0 }, { 0 }, { 0 }, 1, 0
213 #endif
214 },
215 {
216 XCore_BRBU_u6, XCORE_INS_BU,
217 #ifndef CAPSTONE_DIET
218 { 0 }, { 0 }, { 0 }, 1, 0
219 #endif
220 },
221 {
222 XCore_BRFF_lru6, XCORE_INS_BF,
223 #ifndef CAPSTONE_DIET
224 { 0 }, { 0 }, { 0 }, 1, 0
225 #endif
226 },
227 {
228 XCore_BRFF_ru6, XCORE_INS_BF,
229 #ifndef CAPSTONE_DIET
230 { 0 }, { 0 }, { 0 }, 1, 0
231 #endif
232 },
233 {
234 XCore_BRFT_lru6, XCORE_INS_BT,
235 #ifndef CAPSTONE_DIET
236 { 0 }, { 0 }, { 0 }, 1, 0
237 #endif
238 },
239 {
240 XCore_BRFT_ru6, XCORE_INS_BT,
241 #ifndef CAPSTONE_DIET
242 { 0 }, { 0 }, { 0 }, 1, 0
243 #endif
244 },
245 {
246 XCore_BRFU_lu6, XCORE_INS_BU,
247 #ifndef CAPSTONE_DIET
248 { 0 }, { 0 }, { 0 }, 1, 0
249 #endif
250 },
251 {
252 XCore_BRFU_u6, XCORE_INS_BU,
253 #ifndef CAPSTONE_DIET
254 { 0 }, { 0 }, { 0 }, 1, 0
255 #endif
256 },
257 {
258 XCore_BRU_1r, XCORE_INS_BRU,
259 #ifndef CAPSTONE_DIET
260 { 0 }, { 0 }, { 0 }, 1, 1
261 #endif
262 },
263 {
264 XCore_BYTEREV_l2r, XCORE_INS_BYTEREV,
265 #ifndef CAPSTONE_DIET
266 { 0 }, { 0 }, { 0 }, 0, 0
267 #endif
268 },
269 {
270 XCore_CHKCT_2r, XCORE_INS_CHKCT,
271 #ifndef CAPSTONE_DIET
272 { 0 }, { 0 }, { 0 }, 0, 0
273 #endif
274 },
275 {
276 XCore_CHKCT_rus, XCORE_INS_CHKCT,
277 #ifndef CAPSTONE_DIET
278 { 0 }, { 0 }, { 0 }, 0, 0
279 #endif
280 },
281 {
282 XCore_CLRE_0R, XCORE_INS_CLRE,
283 #ifndef CAPSTONE_DIET
284 { 0 }, { 0 }, { 0 }, 0, 0
285 #endif
286 },
287 {
288 XCore_CLRPT_1R, XCORE_INS_CLRPT,
289 #ifndef CAPSTONE_DIET
290 { 0 }, { 0 }, { 0 }, 0, 0
291 #endif
292 },
293 {
294 XCore_CLRSR_branch_lu6, XCORE_INS_CLRSR,
295 #ifndef CAPSTONE_DIET
296 { 0 }, { 0 }, { 0 }, 1, 1
297 #endif
298 },
299 {
300 XCore_CLRSR_branch_u6, XCORE_INS_CLRSR,
301 #ifndef CAPSTONE_DIET
302 { 0 }, { 0 }, { 0 }, 1, 1
303 #endif
304 },
305 {
306 XCore_CLRSR_lu6, XCORE_INS_CLRSR,
307 #ifndef CAPSTONE_DIET
308 { 0 }, { 0 }, { 0 }, 0, 0
309 #endif
310 },
311 {
312 XCore_CLRSR_u6, XCORE_INS_CLRSR,
313 #ifndef CAPSTONE_DIET
314 { 0 }, { 0 }, { 0 }, 0, 0
315 #endif
316 },
317 {
318 XCore_CLZ_l2r, XCORE_INS_CLZ,
319 #ifndef CAPSTONE_DIET
320 { 0 }, { 0 }, { 0 }, 0, 0
321 #endif
322 },
323 {
324 XCore_CRC8_l4r, XCORE_INS_CRC8,
325 #ifndef CAPSTONE_DIET
326 { 0 }, { 0 }, { 0 }, 0, 0
327 #endif
328 },
329 {
330 XCore_CRC_l3r, XCORE_INS_CRC32,
331 #ifndef CAPSTONE_DIET
332 { 0 }, { 0 }, { 0 }, 0, 0
333 #endif
334 },
335 {
336 XCore_DCALL_0R, XCORE_INS_DCALL,
337 #ifndef CAPSTONE_DIET
338 { 0 }, { 0 }, { 0 }, 0, 0
339 #endif
340 },
341 {
342 XCore_DENTSP_0R, XCORE_INS_DENTSP,
343 #ifndef CAPSTONE_DIET
344 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
345 #endif
346 },
347 {
348 XCore_DGETREG_1r, XCORE_INS_DGETREG,
349 #ifndef CAPSTONE_DIET
350 { 0 }, { 0 }, { 0 }, 0, 0
351 #endif
352 },
353 {
354 XCore_DIVS_l3r, XCORE_INS_DIVS,
355 #ifndef CAPSTONE_DIET
356 { 0 }, { 0 }, { 0 }, 0, 0
357 #endif
358 },
359 {
360 XCore_DIVU_l3r, XCORE_INS_DIVU,
361 #ifndef CAPSTONE_DIET
362 { 0 }, { 0 }, { 0 }, 0, 0
363 #endif
364 },
365 {
366 XCore_DRESTSP_0R, XCORE_INS_DRESTSP,
367 #ifndef CAPSTONE_DIET
368 { 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
369 #endif
370 },
371 {
372 XCore_DRET_0R, XCORE_INS_DRET,
373 #ifndef CAPSTONE_DIET
374 { 0 }, { 0 }, { 0 }, 0, 0
375 #endif
376 },
377 {
378 XCore_ECALLF_1r, XCORE_INS_ECALLF,
379 #ifndef CAPSTONE_DIET
380 { 0 }, { 0 }, { 0 }, 0, 0
381 #endif
382 },
383 {
384 XCore_ECALLT_1r, XCORE_INS_ECALLT,
385 #ifndef CAPSTONE_DIET
386 { 0 }, { 0 }, { 0 }, 0, 0
387 #endif
388 },
389 {
390 XCore_EDU_1r, XCORE_INS_EDU,
391 #ifndef CAPSTONE_DIET
392 { 0 }, { 0 }, { 0 }, 0, 0
393 #endif
394 },
395 {
396 XCore_EEF_2r, XCORE_INS_EEF,
397 #ifndef CAPSTONE_DIET
398 { 0 }, { 0 }, { 0 }, 0, 0
399 #endif
400 },
401 {
402 XCore_EET_2r, XCORE_INS_EET,
403 #ifndef CAPSTONE_DIET
404 { 0 }, { 0 }, { 0 }, 0, 0
405 #endif
406 },
407 {
408 XCore_EEU_1r, XCORE_INS_EEU,
409 #ifndef CAPSTONE_DIET
410 { 0 }, { 0 }, { 0 }, 0, 0
411 #endif
412 },
413 {
414 XCore_ENDIN_2r, XCORE_INS_ENDIN,
415 #ifndef CAPSTONE_DIET
416 { 0 }, { 0 }, { 0 }, 0, 0
417 #endif
418 },
419 {
420 XCore_ENTSP_lu6, XCORE_INS_ENTSP,
421 #ifndef CAPSTONE_DIET
422 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
423 #endif
424 },
425 {
426 XCore_ENTSP_u6, XCORE_INS_ENTSP,
427 #ifndef CAPSTONE_DIET
428 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
429 #endif
430 },
431 {
432 XCore_EQ_2rus, XCORE_INS_EQ,
433 #ifndef CAPSTONE_DIET
434 { 0 }, { 0 }, { 0 }, 0, 0
435 #endif
436 },
437 {
438 XCore_EQ_3r, XCORE_INS_EQ,
439 #ifndef CAPSTONE_DIET
440 { 0 }, { 0 }, { 0 }, 0, 0
441 #endif
442 },
443 {
444 XCore_EXTDP_lu6, XCORE_INS_EXTDP,
445 #ifndef CAPSTONE_DIET
446 { 0 }, { 0 }, { 0 }, 0, 0
447 #endif
448 },
449 {
450 XCore_EXTDP_u6, XCORE_INS_EXTDP,
451 #ifndef CAPSTONE_DIET
452 { 0 }, { 0 }, { 0 }, 0, 0
453 #endif
454 },
455 {
456 XCore_EXTSP_lu6, XCORE_INS_EXTSP,
457 #ifndef CAPSTONE_DIET
458 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
459 #endif
460 },
461 {
462 XCore_EXTSP_u6, XCORE_INS_EXTSP,
463 #ifndef CAPSTONE_DIET
464 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
465 #endif
466 },
467 {
468 XCore_FREER_1r, XCORE_INS_FREER,
469 #ifndef CAPSTONE_DIET
470 { 0 }, { 0 }, { 0 }, 0, 0
471 #endif
472 },
473 {
474 XCore_FREET_0R, XCORE_INS_FREET,
475 #ifndef CAPSTONE_DIET
476 { 0 }, { 0 }, { 0 }, 0, 0
477 #endif
478 },
479 {
480 XCore_GETD_l2r, XCORE_INS_GETD,
481 #ifndef CAPSTONE_DIET
482 { 0 }, { 0 }, { 0 }, 0, 0
483 #endif
484 },
485 {
486 XCore_GETED_0R, XCORE_INS_GET,
487 #ifndef CAPSTONE_DIET
488 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
489 #endif
490 },
491 {
492 XCore_GETET_0R, XCORE_INS_GET,
493 #ifndef CAPSTONE_DIET
494 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
495 #endif
496 },
497 {
498 XCore_GETID_0R, XCORE_INS_GET,
499 #ifndef CAPSTONE_DIET
500 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
501 #endif
502 },
503 {
504 XCore_GETKEP_0R, XCORE_INS_GET,
505 #ifndef CAPSTONE_DIET
506 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
507 #endif
508 },
509 {
510 XCore_GETKSP_0R, XCORE_INS_GET,
511 #ifndef CAPSTONE_DIET
512 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
513 #endif
514 },
515 {
516 XCore_GETN_l2r, XCORE_INS_GETN,
517 #ifndef CAPSTONE_DIET
518 { 0 }, { 0 }, { 0 }, 0, 0
519 #endif
520 },
521 {
522 XCore_GETPS_l2r, XCORE_INS_GET,
523 #ifndef CAPSTONE_DIET
524 { 0 }, { 0 }, { 0 }, 0, 0
525 #endif
526 },
527 {
528 XCore_GETR_rus, XCORE_INS_GETR,
529 #ifndef CAPSTONE_DIET
530 { 0 }, { 0 }, { 0 }, 0, 0
531 #endif
532 },
533 {
534 XCore_GETSR_lu6, XCORE_INS_GETSR,
535 #ifndef CAPSTONE_DIET
536 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
537 #endif
538 },
539 {
540 XCore_GETSR_u6, XCORE_INS_GETSR,
541 #ifndef CAPSTONE_DIET
542 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
543 #endif
544 },
545 {
546 XCore_GETST_2r, XCORE_INS_GETST,
547 #ifndef CAPSTONE_DIET
548 { 0 }, { 0 }, { 0 }, 0, 0
549 #endif
550 },
551 {
552 XCore_GETTS_2r, XCORE_INS_GETTS,
553 #ifndef CAPSTONE_DIET
554 { 0 }, { 0 }, { 0 }, 0, 0
555 #endif
556 },
557 {
558 XCore_INCT_2r, XCORE_INS_INCT,
559 #ifndef CAPSTONE_DIET
560 { 0 }, { 0 }, { 0 }, 0, 0
561 #endif
562 },
563 {
564 XCore_INITCP_2r, XCORE_INS_INIT,
565 #ifndef CAPSTONE_DIET
566 { 0 }, { 0 }, { 0 }, 0, 0
567 #endif
568 },
569 {
570 XCore_INITDP_2r, XCORE_INS_INIT,
571 #ifndef CAPSTONE_DIET
572 { 0 }, { 0 }, { 0 }, 0, 0
573 #endif
574 },
575 {
576 XCore_INITLR_l2r, XCORE_INS_INIT,
577 #ifndef CAPSTONE_DIET
578 { 0 }, { 0 }, { 0 }, 0, 0
579 #endif
580 },
581 {
582 XCore_INITPC_2r, XCORE_INS_INIT,
583 #ifndef CAPSTONE_DIET
584 { 0 }, { 0 }, { 0 }, 0, 0
585 #endif
586 },
587 {
588 XCore_INITSP_2r, XCORE_INS_INIT,
589 #ifndef CAPSTONE_DIET
590 { 0 }, { 0 }, { 0 }, 0, 0
591 #endif
592 },
593 {
594 XCore_INPW_l2rus, XCORE_INS_INPW,
595 #ifndef CAPSTONE_DIET
596 { 0 }, { 0 }, { 0 }, 0, 0
597 #endif
598 },
599 {
600 XCore_INSHR_2r, XCORE_INS_INSHR,
601 #ifndef CAPSTONE_DIET
602 { 0 }, { 0 }, { 0 }, 0, 0
603 #endif
604 },
605 {
606 XCore_INT_2r, XCORE_INS_INT,
607 #ifndef CAPSTONE_DIET
608 { 0 }, { 0 }, { 0 }, 0, 0
609 #endif
610 },
611 {
612 XCore_IN_2r, XCORE_INS_IN,
613 #ifndef CAPSTONE_DIET
614 { 0 }, { 0 }, { 0 }, 0, 0
615 #endif
616 },
617 {
618 XCore_KCALL_1r, XCORE_INS_KCALL,
619 #ifndef CAPSTONE_DIET
620 { 0 }, { 0 }, { 0 }, 0, 0
621 #endif
622 },
623 {
624 XCore_KCALL_lu6, XCORE_INS_KCALL,
625 #ifndef CAPSTONE_DIET
626 { 0 }, { 0 }, { 0 }, 0, 0
627 #endif
628 },
629 {
630 XCore_KCALL_u6, XCORE_INS_KCALL,
631 #ifndef CAPSTONE_DIET
632 { 0 }, { 0 }, { 0 }, 0, 0
633 #endif
634 },
635 {
636 XCore_KENTSP_lu6, XCORE_INS_KENTSP,
637 #ifndef CAPSTONE_DIET
638 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
639 #endif
640 },
641 {
642 XCore_KENTSP_u6, XCORE_INS_KENTSP,
643 #ifndef CAPSTONE_DIET
644 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
645 #endif
646 },
647 {
648 XCore_KRESTSP_lu6, XCORE_INS_KRESTSP,
649 #ifndef CAPSTONE_DIET
650 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
651 #endif
652 },
653 {
654 XCore_KRESTSP_u6, XCORE_INS_KRESTSP,
655 #ifndef CAPSTONE_DIET
656 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
657 #endif
658 },
659 {
660 XCore_KRET_0R, XCORE_INS_KRET,
661 #ifndef CAPSTONE_DIET
662 { 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
663 #endif
664 },
665 {
666 XCore_LADD_l5r, XCORE_INS_LADD,
667 #ifndef CAPSTONE_DIET
668 { 0 }, { 0 }, { 0 }, 0, 0
669 #endif
670 },
671 {
672 XCore_LD16S_3r, XCORE_INS_LD16S,
673 #ifndef CAPSTONE_DIET
674 { 0 }, { 0 }, { 0 }, 0, 0
675 #endif
676 },
677 {
678 XCore_LD8U_3r, XCORE_INS_LD8U,
679 #ifndef CAPSTONE_DIET
680 { 0 }, { 0 }, { 0 }, 0, 0
681 #endif
682 },
683 {
684 XCore_LDA16B_l3r, XCORE_INS_LDA16,
685 #ifndef CAPSTONE_DIET
686 { 0 }, { 0 }, { 0 }, 0, 0
687 #endif
688 },
689 {
690 XCore_LDA16F_l3r, XCORE_INS_LDA16,
691 #ifndef CAPSTONE_DIET
692 { 0 }, { 0 }, { 0 }, 0, 0
693 #endif
694 },
695 {
696 XCore_LDAPB_lu10, XCORE_INS_LDAP,
697 #ifndef CAPSTONE_DIET
698 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
699 #endif
700 },
701 {
702 XCore_LDAPB_u10, XCORE_INS_LDAP,
703 #ifndef CAPSTONE_DIET
704 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
705 #endif
706 },
707 {
708 XCore_LDAPF_lu10, XCORE_INS_LDAP,
709 #ifndef CAPSTONE_DIET
710 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
711 #endif
712 },
713 {
714 XCore_LDAPF_lu10_ba, XCORE_INS_LDAP,
715 #ifndef CAPSTONE_DIET
716 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
717 #endif
718 },
719 {
720 XCore_LDAPF_u10, XCORE_INS_LDAP,
721 #ifndef CAPSTONE_DIET
722 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
723 #endif
724 },
725 {
726 XCore_LDAWB_l2rus, XCORE_INS_LDAW,
727 #ifndef CAPSTONE_DIET
728 { 0 }, { 0 }, { 0 }, 0, 0
729 #endif
730 },
731 {
732 XCore_LDAWB_l3r, XCORE_INS_LDAW,
733 #ifndef CAPSTONE_DIET
734 { 0 }, { 0 }, { 0 }, 0, 0
735 #endif
736 },
737 {
738 XCore_LDAWCP_lu6, XCORE_INS_LDAW,
739 #ifndef CAPSTONE_DIET
740 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
741 #endif
742 },
743 {
744 XCore_LDAWCP_u6, XCORE_INS_LDAW,
745 #ifndef CAPSTONE_DIET
746 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
747 #endif
748 },
749 {
750 XCore_LDAWDP_lru6, XCORE_INS_LDAW,
751 #ifndef CAPSTONE_DIET
752 { 0 }, { 0 }, { 0 }, 0, 0
753 #endif
754 },
755 {
756 XCore_LDAWDP_ru6, XCORE_INS_LDAW,
757 #ifndef CAPSTONE_DIET
758 { 0 }, { 0 }, { 0 }, 0, 0
759 #endif
760 },
761 {
762 XCore_LDAWF_l2rus, XCORE_INS_LDAW,
763 #ifndef CAPSTONE_DIET
764 { 0 }, { 0 }, { 0 }, 0, 0
765 #endif
766 },
767 {
768 XCore_LDAWF_l3r, XCORE_INS_LDAW,
769 #ifndef CAPSTONE_DIET
770 { 0 }, { 0 }, { 0 }, 0, 0
771 #endif
772 },
773 {
774 XCore_LDAWSP_lru6, XCORE_INS_LDAW,
775 #ifndef CAPSTONE_DIET
776 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
777 #endif
778 },
779 {
780 XCore_LDAWSP_ru6, XCORE_INS_LDAW,
781 #ifndef CAPSTONE_DIET
782 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
783 #endif
784 },
785 {
786 XCore_LDC_lru6, XCORE_INS_LDC,
787 #ifndef CAPSTONE_DIET
788 { 0 }, { 0 }, { 0 }, 0, 0
789 #endif
790 },
791 {
792 XCore_LDC_ru6, XCORE_INS_LDC,
793 #ifndef CAPSTONE_DIET
794 { 0 }, { 0 }, { 0 }, 0, 0
795 #endif
796 },
797 {
798 XCore_LDET_0R, XCORE_INS_LDW,
799 #ifndef CAPSTONE_DIET
800 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
801 #endif
802 },
803 {
804 XCore_LDIVU_l5r, XCORE_INS_LDIVU,
805 #ifndef CAPSTONE_DIET
806 { 0 }, { 0 }, { 0 }, 0, 0
807 #endif
808 },
809 {
810 XCore_LDSED_0R, XCORE_INS_LDW,
811 #ifndef CAPSTONE_DIET
812 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
813 #endif
814 },
815 {
816 XCore_LDSPC_0R, XCORE_INS_LDW,
817 #ifndef CAPSTONE_DIET
818 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
819 #endif
820 },
821 {
822 XCore_LDSSR_0R, XCORE_INS_LDW,
823 #ifndef CAPSTONE_DIET
824 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
825 #endif
826 },
827 {
828 XCore_LDWCP_lru6, XCORE_INS_LDW,
829 #ifndef CAPSTONE_DIET
830 { 0 }, { 0 }, { 0 }, 0, 0
831 #endif
832 },
833 {
834 XCore_LDWCP_lu10, XCORE_INS_LDW,
835 #ifndef CAPSTONE_DIET
836 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
837 #endif
838 },
839 {
840 XCore_LDWCP_ru6, XCORE_INS_LDW,
841 #ifndef CAPSTONE_DIET
842 { 0 }, { 0 }, { 0 }, 0, 0
843 #endif
844 },
845 {
846 XCore_LDWCP_u10, XCORE_INS_LDW,
847 #ifndef CAPSTONE_DIET
848 { 0 }, { XCORE_REG_R11, 0 }, { 0 }, 0, 0
849 #endif
850 },
851 {
852 XCore_LDWDP_lru6, XCORE_INS_LDW,
853 #ifndef CAPSTONE_DIET
854 { 0 }, { 0 }, { 0 }, 0, 0
855 #endif
856 },
857 {
858 XCore_LDWDP_ru6, XCORE_INS_LDW,
859 #ifndef CAPSTONE_DIET
860 { 0 }, { 0 }, { 0 }, 0, 0
861 #endif
862 },
863 {
864 XCore_LDWSP_lru6, XCORE_INS_LDW,
865 #ifndef CAPSTONE_DIET
866 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
867 #endif
868 },
869 {
870 XCore_LDWSP_ru6, XCORE_INS_LDW,
871 #ifndef CAPSTONE_DIET
872 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
873 #endif
874 },
875 {
876 XCore_LDW_2rus, XCORE_INS_LDW,
877 #ifndef CAPSTONE_DIET
878 { 0 }, { 0 }, { 0 }, 0, 0
879 #endif
880 },
881 {
882 XCore_LDW_3r, XCORE_INS_LDW,
883 #ifndef CAPSTONE_DIET
884 { 0 }, { 0 }, { 0 }, 0, 0
885 #endif
886 },
887 {
888 XCore_LMUL_l6r, XCORE_INS_LMUL,
889 #ifndef CAPSTONE_DIET
890 { 0 }, { 0 }, { 0 }, 0, 0
891 #endif
892 },
893 {
894 XCore_LSS_3r, XCORE_INS_LSS,
895 #ifndef CAPSTONE_DIET
896 { 0 }, { 0 }, { 0 }, 0, 0
897 #endif
898 },
899 {
900 XCore_LSUB_l5r, XCORE_INS_LSUB,
901 #ifndef CAPSTONE_DIET
902 { 0 }, { 0 }, { 0 }, 0, 0
903 #endif
904 },
905 {
906 XCore_LSU_3r, XCORE_INS_LSU,
907 #ifndef CAPSTONE_DIET
908 { 0 }, { 0 }, { 0 }, 0, 0
909 #endif
910 },
911 {
912 XCore_MACCS_l4r, XCORE_INS_MACCS,
913 #ifndef CAPSTONE_DIET
914 { 0 }, { 0 }, { 0 }, 0, 0
915 #endif
916 },
917 {
918 XCore_MACCU_l4r, XCORE_INS_MACCU,
919 #ifndef CAPSTONE_DIET
920 { 0 }, { 0 }, { 0 }, 0, 0
921 #endif
922 },
923 {
924 XCore_MJOIN_1r, XCORE_INS_MJOIN,
925 #ifndef CAPSTONE_DIET
926 { 0 }, { 0 }, { 0 }, 0, 0
927 #endif
928 },
929 {
930 XCore_MKMSK_2r, XCORE_INS_MKMSK,
931 #ifndef CAPSTONE_DIET
932 { 0 }, { 0 }, { 0 }, 0, 0
933 #endif
934 },
935 {
936 XCore_MKMSK_rus, XCORE_INS_MKMSK,
937 #ifndef CAPSTONE_DIET
938 { 0 }, { 0 }, { 0 }, 0, 0
939 #endif
940 },
941 {
942 XCore_MSYNC_1r, XCORE_INS_MSYNC,
943 #ifndef CAPSTONE_DIET
944 { 0 }, { 0 }, { 0 }, 0, 0
945 #endif
946 },
947 {
948 XCore_MUL_l3r, XCORE_INS_MUL,
949 #ifndef CAPSTONE_DIET
950 { 0 }, { 0 }, { 0 }, 0, 0
951 #endif
952 },
953 {
954 XCore_NEG, XCORE_INS_NEG,
955 #ifndef CAPSTONE_DIET
956 { 0 }, { 0 }, { 0 }, 0, 0
957 #endif
958 },
959 {
960 XCore_NOT, XCORE_INS_NOT,
961 #ifndef CAPSTONE_DIET
962 { 0 }, { 0 }, { 0 }, 0, 0
963 #endif
964 },
965 {
966 XCore_OR_3r, XCORE_INS_OR,
967 #ifndef CAPSTONE_DIET
968 { 0 }, { 0 }, { 0 }, 0, 0
969 #endif
970 },
971 {
972 XCore_OUTCT_2r, XCORE_INS_OUTCT,
973 #ifndef CAPSTONE_DIET
974 { 0 }, { 0 }, { 0 }, 0, 0
975 #endif
976 },
977 {
978 XCore_OUTCT_rus, XCORE_INS_OUTCT,
979 #ifndef CAPSTONE_DIET
980 { 0 }, { 0 }, { 0 }, 0, 0
981 #endif
982 },
983 {
984 XCore_OUTPW_l2rus, XCORE_INS_OUTPW,
985 #ifndef CAPSTONE_DIET
986 { 0 }, { 0 }, { 0 }, 0, 0
987 #endif
988 },
989 {
990 XCore_OUTSHR_2r, XCORE_INS_OUTSHR,
991 #ifndef CAPSTONE_DIET
992 { 0 }, { 0 }, { 0 }, 0, 0
993 #endif
994 },
995 {
996 XCore_OUTT_2r, XCORE_INS_OUTT,
997 #ifndef CAPSTONE_DIET
998 { 0 }, { 0 }, { 0 }, 0, 0
999 #endif
1000 },
1001 {
1002 XCore_OUT_2r, XCORE_INS_OUT,
1003 #ifndef CAPSTONE_DIET
1004 { 0 }, { 0 }, { 0 }, 0, 0
1005 #endif
1006 },
1007 {
1008 XCore_PEEK_2r, XCORE_INS_PEEK,
1009 #ifndef CAPSTONE_DIET
1010 { 0 }, { 0 }, { 0 }, 0, 0
1011 #endif
1012 },
1013 {
1014 XCore_REMS_l3r, XCORE_INS_REMS,
1015 #ifndef CAPSTONE_DIET
1016 { 0 }, { 0 }, { 0 }, 0, 0
1017 #endif
1018 },
1019 {
1020 XCore_REMU_l3r, XCORE_INS_REMU,
1021 #ifndef CAPSTONE_DIET
1022 { 0 }, { 0 }, { 0 }, 0, 0
1023 #endif
1024 },
1025 {
1026 XCore_RETSP_lu6, XCORE_INS_RETSP,
1027 #ifndef CAPSTONE_DIET
1028 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
1029 #endif
1030 },
1031 {
1032 XCore_RETSP_u6, XCORE_INS_RETSP,
1033 #ifndef CAPSTONE_DIET
1034 { XCORE_REG_SP, 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
1035 #endif
1036 },
1037 {
1038 XCore_SETCLK_l2r, XCORE_INS_SETCLK,
1039 #ifndef CAPSTONE_DIET
1040 { 0 }, { 0 }, { 0 }, 0, 0
1041 #endif
1042 },
1043 {
1044 XCore_SETCP_1r, XCORE_INS_SET,
1045 #ifndef CAPSTONE_DIET
1046 { 0 }, { 0 }, { 0 }, 0, 0
1047 #endif
1048 },
1049 {
1050 XCore_SETC_l2r, XCORE_INS_SETC,
1051 #ifndef CAPSTONE_DIET
1052 { 0 }, { 0 }, { 0 }, 0, 0
1053 #endif
1054 },
1055 {
1056 XCore_SETC_lru6, XCORE_INS_SETC,
1057 #ifndef CAPSTONE_DIET
1058 { 0 }, { 0 }, { 0 }, 0, 0
1059 #endif
1060 },
1061 {
1062 XCore_SETC_ru6, XCORE_INS_SETC,
1063 #ifndef CAPSTONE_DIET
1064 { 0 }, { 0 }, { 0 }, 0, 0
1065 #endif
1066 },
1067 {
1068 XCore_SETDP_1r, XCORE_INS_SET,
1069 #ifndef CAPSTONE_DIET
1070 { 0 }, { 0 }, { 0 }, 0, 0
1071 #endif
1072 },
1073 {
1074 XCore_SETD_2r, XCORE_INS_SETD,
1075 #ifndef CAPSTONE_DIET
1076 { 0 }, { 0 }, { 0 }, 0, 0
1077 #endif
1078 },
1079 {
1080 XCore_SETEV_1r, XCORE_INS_SETEV,
1081 #ifndef CAPSTONE_DIET
1082 { XCORE_REG_R11, 0 }, { 0 }, { 0 }, 0, 0
1083 #endif
1084 },
1085 {
1086 XCore_SETKEP_0R, XCORE_INS_SET,
1087 #ifndef CAPSTONE_DIET
1088 { XCORE_REG_R11, 0 }, { 0 }, { 0 }, 0, 0
1089 #endif
1090 },
1091 {
1092 XCore_SETN_l2r, XCORE_INS_SETN,
1093 #ifndef CAPSTONE_DIET
1094 { 0 }, { 0 }, { 0 }, 0, 0
1095 #endif
1096 },
1097 {
1098 XCore_SETPSC_2r, XCORE_INS_SETPSC,
1099 #ifndef CAPSTONE_DIET
1100 { 0 }, { 0 }, { 0 }, 0, 0
1101 #endif
1102 },
1103 {
1104 XCore_SETPS_l2r, XCORE_INS_SET,
1105 #ifndef CAPSTONE_DIET
1106 { 0 }, { 0 }, { 0 }, 0, 0
1107 #endif
1108 },
1109 {
1110 XCore_SETPT_2r, XCORE_INS_SETPT,
1111 #ifndef CAPSTONE_DIET
1112 { 0 }, { 0 }, { 0 }, 0, 0
1113 #endif
1114 },
1115 {
1116 XCore_SETRDY_l2r, XCORE_INS_SETRDY,
1117 #ifndef CAPSTONE_DIET
1118 { 0 }, { 0 }, { 0 }, 0, 0
1119 #endif
1120 },
1121 {
1122 XCore_SETSP_1r, XCORE_INS_SET,
1123 #ifndef CAPSTONE_DIET
1124 { 0 }, { XCORE_REG_SP, 0 }, { 0 }, 0, 0
1125 #endif
1126 },
1127 {
1128 XCore_SETSR_branch_lu6, XCORE_INS_SETSR,
1129 #ifndef CAPSTONE_DIET
1130 { 0 }, { 0 }, { 0 }, 1, 1
1131 #endif
1132 },
1133 {
1134 XCore_SETSR_branch_u6, XCORE_INS_SETSR,
1135 #ifndef CAPSTONE_DIET
1136 { 0 }, { 0 }, { 0 }, 1, 1
1137 #endif
1138 },
1139 {
1140 XCore_SETSR_lu6, XCORE_INS_SETSR,
1141 #ifndef CAPSTONE_DIET
1142 { 0 }, { 0 }, { 0 }, 0, 0
1143 #endif
1144 },
1145 {
1146 XCore_SETSR_u6, XCORE_INS_SETSR,
1147 #ifndef CAPSTONE_DIET
1148 { 0 }, { 0 }, { 0 }, 0, 0
1149 #endif
1150 },
1151 {
1152 XCore_SETTW_l2r, XCORE_INS_SETTW,
1153 #ifndef CAPSTONE_DIET
1154 { 0 }, { 0 }, { 0 }, 0, 0
1155 #endif
1156 },
1157 {
1158 XCore_SETV_1r, XCORE_INS_SETV,
1159 #ifndef CAPSTONE_DIET
1160 { XCORE_REG_R11, 0 }, { 0 }, { 0 }, 0, 0
1161 #endif
1162 },
1163 {
1164 XCore_SEXT_2r, XCORE_INS_SEXT,
1165 #ifndef CAPSTONE_DIET
1166 { 0 }, { 0 }, { 0 }, 0, 0
1167 #endif
1168 },
1169 {
1170 XCore_SEXT_rus, XCORE_INS_SEXT,
1171 #ifndef CAPSTONE_DIET
1172 { 0 }, { 0 }, { 0 }, 0, 0
1173 #endif
1174 },
1175 {
1176 XCore_SHL_2rus, XCORE_INS_SHL,
1177 #ifndef CAPSTONE_DIET
1178 { 0 }, { 0 }, { 0 }, 0, 0
1179 #endif
1180 },
1181 {
1182 XCore_SHL_3r, XCORE_INS_SHL,
1183 #ifndef CAPSTONE_DIET
1184 { 0 }, { 0 }, { 0 }, 0, 0
1185 #endif
1186 },
1187 {
1188 XCore_SHR_2rus, XCORE_INS_SHR,
1189 #ifndef CAPSTONE_DIET
1190 { 0 }, { 0 }, { 0 }, 0, 0
1191 #endif
1192 },
1193 {
1194 XCore_SHR_3r, XCORE_INS_SHR,
1195 #ifndef CAPSTONE_DIET
1196 { 0 }, { 0 }, { 0 }, 0, 0
1197 #endif
1198 },
1199 {
1200 XCore_SSYNC_0r, XCORE_INS_SSYNC,
1201 #ifndef CAPSTONE_DIET
1202 { 0 }, { 0 }, { 0 }, 0, 0
1203 #endif
1204 },
1205 {
1206 XCore_ST16_l3r, XCORE_INS_ST16,
1207 #ifndef CAPSTONE_DIET
1208 { 0 }, { 0 }, { 0 }, 0, 0
1209 #endif
1210 },
1211 {
1212 XCore_ST8_l3r, XCORE_INS_ST8,
1213 #ifndef CAPSTONE_DIET
1214 { 0 }, { 0 }, { 0 }, 0, 0
1215 #endif
1216 },
1217 {
1218 XCore_STET_0R, XCORE_INS_STW,
1219 #ifndef CAPSTONE_DIET
1220 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
1221 #endif
1222 },
1223 {
1224 XCore_STSED_0R, XCORE_INS_STW,
1225 #ifndef CAPSTONE_DIET
1226 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
1227 #endif
1228 },
1229 {
1230 XCore_STSPC_0R, XCORE_INS_STW,
1231 #ifndef CAPSTONE_DIET
1232 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
1233 #endif
1234 },
1235 {
1236 XCore_STSSR_0R, XCORE_INS_STW,
1237 #ifndef CAPSTONE_DIET
1238 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
1239 #endif
1240 },
1241 {
1242 XCore_STWDP_lru6, XCORE_INS_STW,
1243 #ifndef CAPSTONE_DIET
1244 { 0 }, { 0 }, { 0 }, 0, 0
1245 #endif
1246 },
1247 {
1248 XCore_STWDP_ru6, XCORE_INS_STW,
1249 #ifndef CAPSTONE_DIET
1250 { 0 }, { 0 }, { 0 }, 0, 0
1251 #endif
1252 },
1253 {
1254 XCore_STWSP_lru6, XCORE_INS_STW,
1255 #ifndef CAPSTONE_DIET
1256 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
1257 #endif
1258 },
1259 {
1260 XCore_STWSP_ru6, XCORE_INS_STW,
1261 #ifndef CAPSTONE_DIET
1262 { XCORE_REG_SP, 0 }, { 0 }, { 0 }, 0, 0
1263 #endif
1264 },
1265 {
1266 XCore_STW_2rus, XCORE_INS_STW,
1267 #ifndef CAPSTONE_DIET
1268 { 0 }, { 0 }, { 0 }, 0, 0
1269 #endif
1270 },
1271 {
1272 XCore_STW_l3r, XCORE_INS_STW,
1273 #ifndef CAPSTONE_DIET
1274 { 0 }, { 0 }, { 0 }, 0, 0
1275 #endif
1276 },
1277 {
1278 XCore_SUB_2rus, XCORE_INS_SUB,
1279 #ifndef CAPSTONE_DIET
1280 { 0 }, { 0 }, { 0 }, 0, 0
1281 #endif
1282 },
1283 {
1284 XCore_SUB_3r, XCORE_INS_SUB,
1285 #ifndef CAPSTONE_DIET
1286 { 0 }, { 0 }, { 0 }, 0, 0
1287 #endif
1288 },
1289 {
1290 XCore_SYNCR_1r, XCORE_INS_SYNCR,
1291 #ifndef CAPSTONE_DIET
1292 { 0 }, { 0 }, { 0 }, 0, 0
1293 #endif
1294 },
1295 {
1296 XCore_TESTCT_2r, XCORE_INS_TESTCT,
1297 #ifndef CAPSTONE_DIET
1298 { 0 }, { 0 }, { 0 }, 0, 0
1299 #endif
1300 },
1301 {
1302 XCore_TESTLCL_l2r, XCORE_INS_TESTLCL,
1303 #ifndef CAPSTONE_DIET
1304 { 0 }, { 0 }, { 0 }, 0, 0
1305 #endif
1306 },
1307 {
1308 XCore_TESTWCT_2r, XCORE_INS_TESTWCT,
1309 #ifndef CAPSTONE_DIET
1310 { 0 }, { 0 }, { 0 }, 0, 0
1311 #endif
1312 },
1313 {
1314 XCore_TSETMR_2r, XCORE_INS_TSETMR,
1315 #ifndef CAPSTONE_DIET
1316 { 0 }, { 0 }, { 0 }, 0, 0
1317 #endif
1318 },
1319 {
1320 XCore_TSETR_3r, XCORE_INS_SET,
1321 #ifndef CAPSTONE_DIET
1322 { 0 }, { 0 }, { 0 }, 0, 0
1323 #endif
1324 },
1325 {
1326 XCore_TSTART_1R, XCORE_INS_START,
1327 #ifndef CAPSTONE_DIET
1328 { 0 }, { 0 }, { 0 }, 0, 0
1329 #endif
1330 },
1331 {
1332 XCore_WAITEF_1R, XCORE_INS_WAITEF,
1333 #ifndef CAPSTONE_DIET
1334 { 0 }, { 0 }, { 0 }, 0, 0
1335 #endif
1336 },
1337 {
1338 XCore_WAITET_1R, XCORE_INS_WAITET,
1339 #ifndef CAPSTONE_DIET
1340 { 0 }, { 0 }, { 0 }, 0, 0
1341 #endif
1342 },
1343 {
1344 XCore_WAITEU_0R, XCORE_INS_WAITEU,
1345 #ifndef CAPSTONE_DIET
1346 { 0 }, { 0 }, { 0 }, 1, 1
1347 #endif
1348 },
1349 {
1350 XCore_XOR_l3r, XCORE_INS_XOR,
1351 #ifndef CAPSTONE_DIET
1352 { 0 }, { 0 }, { 0 }, 0, 0
1353 #endif
1354 },
1355 {
1356 XCore_ZEXT_2r, XCORE_INS_ZEXT,
1357 #ifndef CAPSTONE_DIET
1358 { 0 }, { 0 }, { 0 }, 0, 0
1359 #endif
1360 },
1361 {
1362 XCore_ZEXT_rus, XCORE_INS_ZEXT,
1363 #ifndef CAPSTONE_DIET
1364 { 0 }, { 0 }, { 0 }, 0, 0
1365 #endif
1366 },
1367 };
1368
1369 // given internal insn id, return public instruction info
XCore_get_insn_id(cs_struct * h,cs_insn * insn,unsigned int id)1370 void XCore_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
1371 {
1372 unsigned short i;
1373
1374 i = insn_find(insns, ARR_SIZE(insns), id, &h->insn_cache);
1375 if (i != 0) {
1376 insn->id = insns[i].mapid;
1377
1378 if (h->detail) {
1379 #ifndef CAPSTONE_DIET
1380 memcpy(insn->detail->regs_read, insns[i].regs_use, sizeof(insns[i].regs_use));
1381 insn->detail->regs_read_count = (uint8_t)count_positive(insns[i].regs_use);
1382
1383 memcpy(insn->detail->regs_write, insns[i].regs_mod, sizeof(insns[i].regs_mod));
1384 insn->detail->regs_write_count = (uint8_t)count_positive(insns[i].regs_mod);
1385
1386 memcpy(insn->detail->groups, insns[i].groups, sizeof(insns[i].groups));
1387 insn->detail->groups_count = (uint8_t)count_positive(insns[i].groups);
1388
1389 if (insns[i].branch || insns[i].indirect_branch) {
1390 // this insn also belongs to JUMP group. add JUMP group
1391 insn->detail->groups[insn->detail->groups_count] = XCORE_GRP_JUMP;
1392 insn->detail->groups_count++;
1393 }
1394 #endif
1395 }
1396 }
1397 }
1398
1399 #ifndef CAPSTONE_DIET
1400 static name_map insn_name_maps[] = {
1401 { XCORE_INS_INVALID, NULL },
1402
1403 { XCORE_INS_ADD, "add" },
1404 { XCORE_INS_ANDNOT, "andnot" },
1405 { XCORE_INS_AND, "and" },
1406 { XCORE_INS_ASHR, "ashr" },
1407 { XCORE_INS_BAU, "bau" },
1408 { XCORE_INS_BITREV, "bitrev" },
1409 { XCORE_INS_BLA, "bla" },
1410 { XCORE_INS_BLAT, "blat" },
1411 { XCORE_INS_BL, "bl" },
1412 { XCORE_INS_BF, "bf" },
1413 { XCORE_INS_BT, "bt" },
1414 { XCORE_INS_BU, "bu" },
1415 { XCORE_INS_BRU, "bru" },
1416 { XCORE_INS_BYTEREV, "byterev" },
1417 { XCORE_INS_CHKCT, "chkct" },
1418 { XCORE_INS_CLRE, "clre" },
1419 { XCORE_INS_CLRPT, "clrpt" },
1420 { XCORE_INS_CLRSR, "clrsr" },
1421 { XCORE_INS_CLZ, "clz" },
1422 { XCORE_INS_CRC8, "crc8" },
1423 { XCORE_INS_CRC32, "crc32" },
1424 { XCORE_INS_DCALL, "dcall" },
1425 { XCORE_INS_DENTSP, "dentsp" },
1426 { XCORE_INS_DGETREG, "dgetreg" },
1427 { XCORE_INS_DIVS, "divs" },
1428 { XCORE_INS_DIVU, "divu" },
1429 { XCORE_INS_DRESTSP, "drestsp" },
1430 { XCORE_INS_DRET, "dret" },
1431 { XCORE_INS_ECALLF, "ecallf" },
1432 { XCORE_INS_ECALLT, "ecallt" },
1433 { XCORE_INS_EDU, "edu" },
1434 { XCORE_INS_EEF, "eef" },
1435 { XCORE_INS_EET, "eet" },
1436 { XCORE_INS_EEU, "eeu" },
1437 { XCORE_INS_ENDIN, "endin" },
1438 { XCORE_INS_ENTSP, "entsp" },
1439 { XCORE_INS_EQ, "eq" },
1440 { XCORE_INS_EXTDP, "extdp" },
1441 { XCORE_INS_EXTSP, "extsp" },
1442 { XCORE_INS_FREER, "freer" },
1443 { XCORE_INS_FREET, "freet" },
1444 { XCORE_INS_GETD, "getd" },
1445 { XCORE_INS_GET, "get" },
1446 { XCORE_INS_GETN, "getn" },
1447 { XCORE_INS_GETR, "getr" },
1448 { XCORE_INS_GETSR, "getsr" },
1449 { XCORE_INS_GETST, "getst" },
1450 { XCORE_INS_GETTS, "getts" },
1451 { XCORE_INS_INCT, "inct" },
1452 { XCORE_INS_INIT, "init" },
1453 { XCORE_INS_INPW, "inpw" },
1454 { XCORE_INS_INSHR, "inshr" },
1455 { XCORE_INS_INT, "int" },
1456 { XCORE_INS_IN, "in" },
1457 { XCORE_INS_KCALL, "kcall" },
1458 { XCORE_INS_KENTSP, "kentsp" },
1459 { XCORE_INS_KRESTSP, "krestsp" },
1460 { XCORE_INS_KRET, "kret" },
1461 { XCORE_INS_LADD, "ladd" },
1462 { XCORE_INS_LD16S, "ld16s" },
1463 { XCORE_INS_LD8U, "ld8u" },
1464 { XCORE_INS_LDA16, "lda16" },
1465 { XCORE_INS_LDAP, "ldap" },
1466 { XCORE_INS_LDAW, "ldaw" },
1467 { XCORE_INS_LDC, "ldc" },
1468 { XCORE_INS_LDW, "ldw" },
1469 { XCORE_INS_LDIVU, "ldivu" },
1470 { XCORE_INS_LMUL, "lmul" },
1471 { XCORE_INS_LSS, "lss" },
1472 { XCORE_INS_LSUB, "lsub" },
1473 { XCORE_INS_LSU, "lsu" },
1474 { XCORE_INS_MACCS, "maccs" },
1475 { XCORE_INS_MACCU, "maccu" },
1476 { XCORE_INS_MJOIN, "mjoin" },
1477 { XCORE_INS_MKMSK, "mkmsk" },
1478 { XCORE_INS_MSYNC, "msync" },
1479 { XCORE_INS_MUL, "mul" },
1480 { XCORE_INS_NEG, "neg" },
1481 { XCORE_INS_NOT, "not" },
1482 { XCORE_INS_OR, "or" },
1483 { XCORE_INS_OUTCT, "outct" },
1484 { XCORE_INS_OUTPW, "outpw" },
1485 { XCORE_INS_OUTSHR, "outshr" },
1486 { XCORE_INS_OUTT, "outt" },
1487 { XCORE_INS_OUT, "out" },
1488 { XCORE_INS_PEEK, "peek" },
1489 { XCORE_INS_REMS, "rems" },
1490 { XCORE_INS_REMU, "remu" },
1491 { XCORE_INS_RETSP, "retsp" },
1492 { XCORE_INS_SETCLK, "setclk" },
1493 { XCORE_INS_SET, "set" },
1494 { XCORE_INS_SETC, "setc" },
1495 { XCORE_INS_SETD, "setd" },
1496 { XCORE_INS_SETEV, "setev" },
1497 { XCORE_INS_SETN, "setn" },
1498 { XCORE_INS_SETPSC, "setpsc" },
1499 { XCORE_INS_SETPT, "setpt" },
1500 { XCORE_INS_SETRDY, "setrdy" },
1501 { XCORE_INS_SETSR, "setsr" },
1502 { XCORE_INS_SETTW, "settw" },
1503 { XCORE_INS_SETV, "setv" },
1504 { XCORE_INS_SEXT, "sext" },
1505 { XCORE_INS_SHL, "shl" },
1506 { XCORE_INS_SHR, "shr" },
1507 { XCORE_INS_SSYNC, "ssync" },
1508 { XCORE_INS_ST16, "st16" },
1509 { XCORE_INS_ST8, "st8" },
1510 { XCORE_INS_STW, "stw" },
1511 { XCORE_INS_SUB, "sub" },
1512 { XCORE_INS_SYNCR, "syncr" },
1513 { XCORE_INS_TESTCT, "testct" },
1514 { XCORE_INS_TESTLCL, "testlcl" },
1515 { XCORE_INS_TESTWCT, "testwct" },
1516 { XCORE_INS_TSETMR, "tsetmr" },
1517 { XCORE_INS_START, "start" },
1518 { XCORE_INS_WAITEF, "waitef" },
1519 { XCORE_INS_WAITET, "waitet" },
1520 { XCORE_INS_WAITEU, "waiteu" },
1521 { XCORE_INS_XOR, "xor" },
1522 { XCORE_INS_ZEXT, "zext" },
1523 };
1524
1525 // special alias insn
1526 static name_map alias_insn_names[] = {
1527 { 0, NULL }
1528 };
1529 #endif
1530
XCore_insn_name(csh handle,unsigned int id)1531 const char *XCore_insn_name(csh handle, unsigned int id)
1532 {
1533 #ifndef CAPSTONE_DIET
1534 unsigned int i;
1535
1536 if (id >= XCORE_INS_ENDING)
1537 return NULL;
1538
1539 // handle special alias first
1540 for (i = 0; i < ARR_SIZE(alias_insn_names); i++) {
1541 if (alias_insn_names[i].id == id)
1542 return alias_insn_names[i].name;
1543 }
1544
1545 return insn_name_maps[id].name;
1546 #else
1547 return NULL;
1548 #endif
1549 }
1550
1551 #ifndef CAPSTONE_DIET
1552 static name_map group_name_maps[] = {
1553 { XCORE_GRP_INVALID, NULL },
1554 { XCORE_GRP_JUMP, "jump" },
1555 };
1556 #endif
1557
XCore_group_name(csh handle,unsigned int id)1558 const char *XCore_group_name(csh handle, unsigned int id)
1559 {
1560 #ifndef CAPSTONE_DIET
1561 if (id >= XCORE_GRP_ENDING)
1562 return NULL;
1563
1564 return group_name_maps[id].name;
1565 #else
1566 return NULL;
1567 #endif
1568 }
1569
1570 // map internal raw register to 'public' register
XCore_map_register(unsigned int r)1571 xcore_reg XCore_map_register(unsigned int r)
1572 {
1573 static unsigned int map[] = { 0,
1574 };
1575
1576 if (r < ARR_SIZE(map))
1577 return map[r];
1578
1579 // cannot find this register
1580 return 0;
1581 }
1582
1583 #endif
1584