• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|*                                                                            *|
3|*Assembly Writer Source Fragment                                             *|
4|*                                                                            *|
5|* Automatically generated file, do not edit!                                 *|
6|*                                                                            *|
7\*===----------------------------------------------------------------------===*/
8
9/* Capstone Disassembly Engine */
10/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
11
12#include <stdio.h>	// debug
13#include <capstone/platform.h>
14
15
16/// printInstruction - This method is automatically generated by tablegen
17/// from the instruction set description.
18static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI)
19{
20  static const uint32_t OpInfo[] = {
21    0U,	// PHI
22    0U,	// INLINEASM
23    0U,	// CFI_INSTRUCTION
24    0U,	// EH_LABEL
25    0U,	// GC_LABEL
26    0U,	// KILL
27    0U,	// EXTRACT_SUBREG
28    0U,	// INSERT_SUBREG
29    0U,	// IMPLICIT_DEF
30    0U,	// SUBREG_TO_REG
31    0U,	// COPY_TO_REGCLASS
32    665U,	// DBG_VALUE
33    0U,	// REG_SEQUENCE
34    0U,	// COPY
35    658U,	// BUNDLE
36    687U,	// LIFETIME_START
37    645U,	// LIFETIME_END
38    0U,	// STACKMAP
39    0U,	// PATCHPOINT
40    0U,	// LOAD_STACK_GUARD
41    0U,	// STATEPOINT
42    0U,	// FRAME_ALLOC
43    2250U,	// ADD_2rus
44    2250U,	// ADD_3r
45    10363U,	// ADJCALLSTACKDOWN
46    10383U,	// ADJCALLSTACKUP
47    2361840U,	// ANDNOT_2r
48    2255U,	// AND_3r
49    2404U,	// ASHR_l2rus
50    2404U,	// ASHR_l3r
51    10769U,	// BAU_1r
52    2099777U,	// BITREV_l2r
53    19161U,	// BLACP_lu10
54    19161U,	// BLACP_u10
55    10672U,	// BLAT_lu6
56    10672U,	// BLAT_u6
57    10425U,	// BLA_1r
58    10510U,	// BLRB_lu10
59    10510U,	// BLRB_u10
60    10510U,	// BLRF_lu10
61    10510U,	// BLRF_u10
62    2099418U,	// BRBF_lru6
63    2099418U,	// BRBF_ru6
64    2099638U,	// BRBT_lru6
65    2099638U,	// BRBT_ru6
66    10774U,	// BRBU_lu6
67    10774U,	// BRBU_u6
68    2099418U,	// BRFF_lru6
69    2099418U,	// BRFF_ru6
70    2099638U,	// BRFT_lru6
71    2099638U,	// BRFT_ru6
72    10774U,	// BRFU_lu6
73    10774U,	// BRFU_u6
74    10791U,	// BRU_1r
75    553511U,	// BR_JT
76    815655U,	// BR_JT32
77    2099768U,	// BYTEREV_l2r
78    2132815U,	// CHKCT_2r
79    2132815U,	// CHKCT_rus
80    1163U,	// CLRE_0R
81    19301U,	// CLRPT_1R
82    10614U,	// CLRSR_branch_lu6
83    10614U,	// CLRSR_branch_u6
84    10614U,	// CLRSR_lu6
85    10614U,	// CLRSR_u6
86    2099807U,	// CLZ_l2r
87    5247047U,	// CRC8_l4r
88    17041459U,	// CRC_l3r
89    1168U,	// DCALL_0R
90    1200U,	// DENTSP_0R
91    10488U,	// DGETREG_1r
92    2474U,	// DIVS_l3r
93    2610U,	// DIVU_l3r
94    1207U,	// DRESTSP_0R
95    1242U,	// DRET_0R
96    10475U,	// ECALLF_1r
97    10723U,	// ECALLT_1r
98    19342U,	// EDU_1r
99    6334686U,	// EEF_2r
100    6334929U,	// EET_2r
101    19351U,	// EEU_1r
102    2099310U,	// EH_RETURN
103    6334765U,	// ENDIN_2r
104    10569U,	// ENTSP_lu6
105    10569U,	// ENTSP_u6
106    2400U,	// EQ_2rus
107    2400U,	// EQ_3r
108    10554U,	// EXTDP_lu6
109    10554U,	// EXTDP_u6
110    10585U,	// EXTSP_lu6
111    10585U,	// EXTSP_u6
112    10401U,	// FRAME_TO_ARGS_OFFSET
113    19256U,	// FREER_1r
114    1236U,	// FREET_0R
115    6334676U,	// GETD_l2r
116    1139U,	// GETED_0R
117    1224U,	// GETET_0R
118    1151U,	// GETID_0R
119    1174U,	// GETKEP_0R
120    1187U,	// GETKSP_0R
121    6334772U,	// GETN_l2r
122    51670U,	// GETPS_l2r
123    2099588U,	// GETR_rus
124    10252U,	// GETSR_lu6
125    10252U,	// GETSR_u6
126    6334968U,	// GETST_2r
127    6334883U,	// GETTS_2r
128    6334906U,	// INCT_2r
129    62438U,	// INITCP_2r
130    70630U,	// INITDP_2r
131    78822U,	// INITLR_l2r
132    87014U,	// INITPC_2r
133    95206U,	// INITSP_2r
134    8432212U,	// INPW_l2rus
135    6596970U,	// INSHR_2r
136    6334955U,	// INT_2r
137    6334768U,	// IN_2r
138    675U,	// Int_MemBarrier
139    10528U,	// KCALL_1r
140    10528U,	// KCALL_lu6
141    10528U,	// KCALL_u6
142    10568U,	// KENTSP_lu6
143    10568U,	// KENTSP_u6
144    10576U,	// KRESTSP_lu6
145    10576U,	// KRESTSP_u6
146    1247U,	// KRET_0R
147    45093065U,	// LADD_l5r
148    12585354U,	// LD16S_3r
149    12585483U,	// LD8U_3r
150    14682170U,	// LDA16B_l3r
151    12585018U,	// LDA16F_l3r
152    10241U,	// LDAPB_lu10
153    10241U,	// LDAPB_u10
154    10241U,	// LDAPF_lu10
155    10241U,	// LDAPF_lu10_ba
156    10241U,	// LDAPF_u10
157    14682697U,	// LDAWB_l2rus
158    14682697U,	// LDAWB_l3r
159    19134U,	// LDAWCP_lu6
160    19134U,	// LDAWCP_u6
161    100937U,	// LDAWDP_lru6
162    100937U,	// LDAWDP_ru6
163    2099282U,	// LDAWFI
164    12585545U,	// LDAWF_l2rus
165    12585545U,	// LDAWF_l3r
166    109129U,	// LDAWSP_lru6
167    109129U,	// LDAWSP_ru6
168    2099396U,	// LDC_lru6
169    2099396U,	// LDC_ru6
170    1105U,	// LDET_0R
171    184551985U,	// LDIVU_l5r
172    1075U,	// LDSED_0R
173    1015U,	// LDSPC_0R
174    1045U,	// LDSSR_0R
175    117327U,	// LDWCP_lru6
176    19148U,	// LDWCP_lu10
177    117327U,	// LDWCP_ru6
178    19148U,	// LDWCP_u10
179    100943U,	// LDWDP_lru6
180    100943U,	// LDWDP_ru6
181    2099292U,	// LDWFI
182    109135U,	// LDWSP_lru6
183    109135U,	// LDWSP_ru6
184    12585551U,	// LDW_2rus
185    12585551U,	// LDW_3r
186    268437799U,	// LMUL_l6r
187    2462U,	// LSS_3r
188    45093054U,	// LSUB_l5r
189    2604U,	// LSU_3r
190    452987281U,	// MACCS_l4r
191    452987418U,	// MACCU_l4r
192    19224U,	// MJOIN_1r
193    2099463U,	// MKMSK_2r
194    2099463U,	// MKMSK_rus
195    19169U,	// MSYNC_1r
196    2344U,	// MUL_l3r
197    2099443U,	// NEG
198    2099699U,	// NOT
199    2418U,	// OR_3r
200    2132826U,	// OUTCT_2r
201    2132826U,	// OUTCT_rus
202    78681013U,	// OUTPW_l2rus
203    2136899U,	// OUTSHR_2r
204    2132859U,	// OUTT_2r
205    2132869U,	// OUT_2r
206    6334721U,	// PEEK_2r
207    2456U,	// REMS_l3r
208    2593U,	// REMU_l3r
209    10561U,	// RETSP_lu6
210    10561U,	// RETSP_u6
211    612U,	// SELECT_CC
212    2132748U,	// SETCLK_l2r
213    10264U,	// SETCP_1r
214    2132728U,	// SETC_l2r
215    2132728U,	// SETC_lru6
216    2132728U,	// SETC_ru6
217    10273U,	// SETDP_1r
218    2132738U,	// SETD_2r
219    125856U,	// SETEV_1r
220    632U,	// SETKEP_0R
221    2132771U,	// SETN_l2r
222    2132716U,	// SETPSC_2r
223    2132951U,	// SETPS_l2r
224    2132848U,	// SETPT_2r
225    2132939U,	// SETRDY_l2r
226    10282U,	// SETSP_1r
227    10621U,	// SETSR_branch_lu6
228    10621U,	// SETSR_branch_u6
229    10621U,	// SETSR_lu6
230    10621U,	// SETSR_u6
231    2132928U,	// SETTW_l2r
232    125867U,	// SETV_1r
233    2361855U,	// SEXT_2r
234    2361855U,	// SEXT_rus
235    2331U,	// SHL_2rus
236    2331U,	// SHL_3r
237    2405U,	// SHR_2rus
238    2405U,	// SHR_3r
239    1133U,	// SSYNC_0r
240    12585025U,	// ST16_l3r
241    12585037U,	// ST8_l3r
242    1119U,	// STET_0R
243    1090U,	// STSED_0R
244    1030U,	// STSPC_0R
245    1060U,	// STSSR_0R
246    100954U,	// STWDP_lru6
247    100954U,	// STWDP_ru6
248    2099301U,	// STWFI
249    109146U,	// STWSP_lru6
250    109146U,	// STWSP_ru6
251    12585562U,	// STW_2rus
252    12585562U,	// STW_l3r
253    2239U,	// SUB_2rus
254    2239U,	// SUB_3r
255    19245U,	// SYNCR_1r
256    6334912U,	// TESTCT_2r
257    6334738U,	// TESTLCL_l2r
258    6334920U,	// TESTWCT_2r
259    2100415U,	// TSETMR_2r
260    138207U,	// TSETR_3r
261    19438U,	// TSTART_1R
262    10467U,	// WAITEF_1R
263    10715U,	// WAITET_1R
264    1252U,	// WAITEU_0R
265    2417U,	// XOR_l3r
266    2361861U,	// ZEXT_2r
267    2361861U,	// ZEXT_rus
268    0U
269  };
270
271  static const char AsmStrs[] = {
272  /* 0 */ 'l', 'd', 'a', 'p', 32, 'r', '1', '1', ',', 32, 0,
273  /* 11 */ 'g', 'e', 't', 's', 'r', 32, 'r', '1', '1', ',', 32, 0,
274  /* 23 */ 's', 'e', 't', 32, 'c', 'p', ',', 32, 0,
275  /* 32 */ 's', 'e', 't', 32, 'd', 'p', ',', 32, 0,
276  /* 41 */ 's', 'e', 't', 32, 's', 'p', ',', 32, 0,
277  /* 50 */ 'c', 'r', 'c', '3', '2', 32, 0,
278  /* 57 */ 'l', 'd', 'a', '1', '6', 32, 0,
279  /* 64 */ 's', 't', '1', '6', 32, 0,
280  /* 70 */ 'c', 'r', 'c', '8', 32, 0,
281  /* 76 */ 's', 't', '8', 32, 0,
282  /* 81 */ '#', 32, 'L', 'D', 'A', 'W', 'F', 'I', 32, 0,
283  /* 91 */ '#', 32, 'L', 'D', 'W', 'F', 'I', 32, 0,
284  /* 100 */ '#', 32, 'S', 'T', 'W', 'F', 'I', 32, 0,
285  /* 109 */ '#', 32, 'E', 'H', '_', 'R', 'E', 'T', 'U', 'R', 'N', 32, 0,
286  /* 122 */ '#', 32, 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 32, 0,
287  /* 142 */ '#', 32, 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 32, 0,
288  /* 160 */ '#', 32, 'F', 'R', 'A', 'M', 'E', '_', 'T', 'O', '_', 'A', 'R', 'G', 'S', '_', 'O', 'F', 'F', 'S', 'E', 'T', 32, 0,
289  /* 184 */ 'b', 'l', 'a', 32, 0,
290  /* 189 */ 'l', 's', 'u', 'b', 32, 0,
291  /* 195 */ 'l', 'd', 'c', 32, 0,
292  /* 200 */ 'l', 'a', 'd', 'd', 32, 0,
293  /* 206 */ 'a', 'n', 'd', 32, 0,
294  /* 211 */ 'g', 'e', 't', 'd', 32, 0,
295  /* 217 */ 'b', 'f', 32, 0,
296  /* 221 */ 'e', 'e', 'f', 32, 0,
297  /* 226 */ 'w', 'a', 'i', 't', 'e', 'f', 32, 0,
298  /* 234 */ 'e', 'c', 'a', 'l', 'l', 'f', 32, 0,
299  /* 242 */ 'n', 'e', 'g', 32, 0,
300  /* 247 */ 'd', 'g', 'e', 't', 'r', 'e', 'g', 32, 0,
301  /* 256 */ 'p', 'e', 'e', 'k', 32, 0,
302  /* 262 */ 'm', 'k', 'm', 's', 'k', 32, 0,
303  /* 269 */ 'b', 'l', 32, 0,
304  /* 273 */ 't', 'e', 's', 't', 'l', 'c', 'l', 32, 0,
305  /* 282 */ 's', 'h', 'l', 32, 0,
306  /* 287 */ 'k', 'c', 'a', 'l', 'l', 32, 0,
307  /* 294 */ 'l', 'm', 'u', 'l', 32, 0,
308  /* 300 */ 'e', 'n', 'd', 'i', 'n', 32, 0,
309  /* 307 */ 'g', 'e', 't', 'n', 32, 0,
310  /* 313 */ 'e', 'x', 't', 'd', 'p', 32, 0,
311  /* 320 */ 'r', 'e', 't', 's', 'p', 32, 0,
312  /* 327 */ 'k', 'e', 'n', 't', 's', 'p', 32, 0,
313  /* 335 */ 'k', 'r', 'e', 's', 't', 's', 'p', 32, 0,
314  /* 344 */ 'e', 'x', 't', 's', 'p', 32, 0,
315  /* 351 */ 'e', 'q', 32, 0,
316  /* 355 */ 'a', 's', 'h', 'r', 32, 0,
317  /* 361 */ 'i', 'n', 's', 'h', 'r', 32, 0,
318  /* 368 */ 'x', 'o', 'r', 32, 0,
319  /* 373 */ 'c', 'l', 'r', 's', 'r', 32, 0,
320  /* 380 */ 's', 'e', 't', 's', 'r', 32, 0,
321  /* 387 */ 'g', 'e', 't', 'r', 32, 0,
322  /* 393 */ 'l', 'd', '1', '6', 's', 32, 0,
323  /* 400 */ 'm', 'a', 'c', 'c', 's', 32, 0,
324  /* 407 */ 'r', 'e', 'm', 's', 32, 0,
325  /* 413 */ 'l', 's', 's', 32, 0,
326  /* 418 */ 'g', 'e', 't', 't', 's', 32, 0,
327  /* 425 */ 'd', 'i', 'v', 's', 32, 0,
328  /* 431 */ 'b', 'l', 'a', 't', 32, 0,
329  /* 437 */ 'b', 't', 32, 0,
330  /* 441 */ 'i', 'n', 'c', 't', 32, 0,
331  /* 447 */ 't', 'e', 's', 't', 'c', 't', 32, 0,
332  /* 455 */ 't', 'e', 's', 't', 'w', 'c', 't', 32, 0,
333  /* 464 */ 'e', 'e', 't', 32, 0,
334  /* 469 */ 'g', 'e', 't', 32, 0,
335  /* 474 */ 'w', 'a', 'i', 't', 'e', 't', 32, 0,
336  /* 482 */ 'e', 'c', 'a', 'l', 'l', 't', 32, 0,
337  /* 490 */ 'i', 'n', 't', 32, 0,
338  /* 495 */ 'a', 'n', 'd', 'n', 'o', 't', 32, 0,
339  /* 503 */ 'g', 'e', 't', 's', 't', 32, 0,
340  /* 510 */ 's', 'e', 'x', 't', 32, 0,
341  /* 516 */ 'z', 'e', 'x', 't', 32, 0,
342  /* 522 */ 'l', 'd', '8', 'u', 32, 0,
343  /* 528 */ 'b', 'a', 'u', 32, 0,
344  /* 533 */ 'b', 'u', 32, 0,
345  /* 537 */ 'm', 'a', 'c', 'c', 'u', 32, 0,
346  /* 544 */ 'r', 'e', 'm', 'u', 32, 0,
347  /* 550 */ 'b', 'r', 'u', 32, 0,
348  /* 555 */ 'l', 's', 'u', 32, 0,
349  /* 560 */ 'l', 'd', 'i', 'v', 'u', 32, 0,
350  /* 567 */ 'b', 'y', 't', 'e', 'r', 'e', 'v', 32, 0,
351  /* 576 */ 'b', 'i', 't', 'r', 'e', 'v', 32, 0,
352  /* 584 */ 'l', 'd', 'a', 'w', 32, 0,
353  /* 590 */ 'l', 'd', 'w', 32, 0,
354  /* 595 */ 'i', 'n', 'p', 'w', 32, 0,
355  /* 601 */ 's', 't', 'w', 32, 0,
356  /* 606 */ 'c', 'l', 'z', 32, 0,
357  /* 611 */ '#', 32, 'S', 'E', 'L', 'E', 'C', 'T', '_', 'C', 'C', 32, 'P', 'S', 'E', 'U', 'D', 'O', '!', 0,
358  /* 631 */ 's', 'e', 't', 32, 'k', 'e', 'p', ',', 32, 'r', '1', '1', 0,
359  /* 644 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
360  /* 657 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
361  /* 664 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
362  /* 674 */ '#', 'M', 'E', 'M', 'B', 'A', 'R', 'R', 'I', 'E', 'R', 0,
363  /* 686 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
364  /* 701 */ 'l', 'd', 'a', 'w', 32, 'r', '1', '1', ',', 32, 'c', 'p', '[', 0,
365  /* 715 */ 'l', 'd', 'w', 32, 'r', '1', '1', ',', 32, 'c', 'p', '[', 0,
366  /* 728 */ 'b', 'l', 'a', 32, 'c', 'p', '[', 0,
367  /* 736 */ 'm', 's', 'y', 'n', 'c', 32, 'r', 'e', 's', '[', 0,
368  /* 747 */ 's', 'e', 't', 'p', 's', 'c', 32, 'r', 'e', 's', '[', 0,
369  /* 759 */ 's', 'e', 't', 'c', 32, 'r', 'e', 's', '[', 0,
370  /* 769 */ 's', 'e', 't', 'd', 32, 'r', 'e', 's', '[', 0,
371  /* 779 */ 's', 'e', 't', 'c', 'l', 'k', 32, 'r', 'e', 's', '[', 0,
372  /* 791 */ 'm', 'j', 'o', 'i', 'n', 32, 'r', 'e', 's', '[', 0,
373  /* 802 */ 's', 'e', 't', 'n', 32, 'r', 'e', 's', '[', 0,
374  /* 812 */ 's', 'y', 'n', 'c', 'r', 32, 'r', 'e', 's', '[', 0,
375  /* 823 */ 'f', 'r', 'e', 'e', 'r', 32, 'r', 'e', 's', '[', 0,
376  /* 834 */ 'o', 'u', 't', 's', 'h', 'r', 32, 'r', 'e', 's', '[', 0,
377  /* 846 */ 'c', 'h', 'k', 'c', 't', 32, 'r', 'e', 's', '[', 0,
378  /* 857 */ 'o', 'u', 't', 'c', 't', 32, 'r', 'e', 's', '[', 0,
379  /* 868 */ 'c', 'l', 'r', 'p', 't', 32, 'r', 'e', 's', '[', 0,
380  /* 879 */ 's', 'e', 't', 'p', 't', 32, 'r', 'e', 's', '[', 0,
381  /* 890 */ 'o', 'u', 't', 't', 32, 'r', 'e', 's', '[', 0,
382  /* 900 */ 'o', 'u', 't', 32, 'r', 'e', 's', '[', 0,
383  /* 909 */ 'e', 'd', 'u', 32, 'r', 'e', 's', '[', 0,
384  /* 918 */ 'e', 'e', 'u', 32, 'r', 'e', 's', '[', 0,
385  /* 927 */ 's', 'e', 't', 'e', 'v', 32, 'r', 'e', 's', '[', 0,
386  /* 938 */ 's', 'e', 't', 'v', 32, 'r', 'e', 's', '[', 0,
387  /* 948 */ 'o', 'u', 't', 'p', 'w', 32, 'r', 'e', 's', '[', 0,
388  /* 959 */ 's', 'e', 't', 't', 'w', 32, 'r', 'e', 's', '[', 0,
389  /* 970 */ 's', 'e', 't', 'r', 'd', 'y', 32, 'r', 'e', 's', '[', 0,
390  /* 982 */ 's', 'e', 't', 32, 'p', 's', '[', 0,
391  /* 990 */ 's', 'e', 't', 32, 't', '[', 0,
392  /* 997 */ 'i', 'n', 'i', 't', 32, 't', '[', 0,
393  /* 1005 */ 's', 't', 'a', 'r', 't', 32, 't', '[', 0,
394  /* 1014 */ 'l', 'd', 'w', 32, 's', 'p', 'c', ',', 32, 's', 'p', '[', '1', ']', 0,
395  /* 1029 */ 's', 't', 'w', 32, 's', 'p', 'c', ',', 32, 's', 'p', '[', '1', ']', 0,
396  /* 1044 */ 'l', 'd', 'w', 32, 's', 's', 'r', ',', 32, 's', 'p', '[', '2', ']', 0,
397  /* 1059 */ 's', 't', 'w', 32, 's', 's', 'r', ',', 32, 's', 'p', '[', '2', ']', 0,
398  /* 1074 */ 'l', 'd', 'w', 32, 's', 'e', 'd', ',', 32, 's', 'p', '[', '3', ']', 0,
399  /* 1089 */ 's', 't', 'w', 32, 's', 'e', 'd', ',', 32, 's', 'p', '[', '3', ']', 0,
400  /* 1104 */ 'l', 'd', 'w', 32, 'e', 't', ',', 32, 's', 'p', '[', '4', ']', 0,
401  /* 1118 */ 's', 't', 'w', 32, 'e', 't', ',', 32, 's', 'p', '[', '4', ']', 0,
402  /* 1132 */ 's', 's', 'y', 'n', 'c', 0,
403  /* 1138 */ 'g', 'e', 't', 32, 'r', '1', '1', ',', 32, 'e', 'd', 0,
404  /* 1150 */ 'g', 'e', 't', 32, 'r', '1', '1', ',', 32, 'i', 'd', 0,
405  /* 1162 */ 'c', 'l', 'r', 'e', 0,
406  /* 1167 */ 'd', 'c', 'a', 'l', 'l', 0,
407  /* 1173 */ 'g', 'e', 't', 32, 'r', '1', '1', ',', 32, 'k', 'e', 'p', 0,
408  /* 1186 */ 'g', 'e', 't', 32, 'r', '1', '1', ',', 32, 'k', 's', 'p', 0,
409  /* 1199 */ 'd', 'e', 'n', 't', 's', 'p', 0,
410  /* 1206 */ 'd', 'r', 'e', 's', 't', 's', 'p', 0,
411  /* 1214 */ 't', 's', 'e', 't', 'm', 'r', 32, 'r', 0,
412  /* 1223 */ 'g', 'e', 't', 32, 'r', '1', '1', ',', 32, 'e', 't', 0,
413  /* 1235 */ 'f', 'r', 'e', 'e', 't', 0,
414  /* 1241 */ 'd', 'r', 'e', 't', 0,
415  /* 1246 */ 'k', 'r', 'e', 't', 0,
416  /* 1251 */ 'w', 'a', 'i', 't', 'e', 'u', 0,
417  };
418
419  // Emit the opcode for the instruction.
420  uint32_t Bits = OpInfo[MCInst_getOpcode(MI)];
421  // assert(Bits != 0 && "Cannot print this instruction.");
422#ifndef CAPSTONE_DIET
423  SStream_concat0(O, AsmStrs+(Bits & 2047)-1);
424#endif
425
426
427  if (strchr((const char *)AsmStrs+(Bits & 2047)-1, '[')) {
428    set_mem_access(MI, true, 0);
429  }
430
431  // Fragment 0 encoded into 2 bits for 4 unique commands.
432  //printf(">>%s\n", AsmStrs+(Bits & 2047)-1);
433  //printf("Frag-0: %u\n", (Bits >> 11) & 3);
434  switch ((Bits >> 11) & 3) {
435  default:   // unreachable.
436  case 0:
437    // DBG_VALUE, BUNDLE, LIFETIME_START, LIFETIME_END, CLRE_0R, DCALL_0R, DE...
438    // already done. this means we have to extract details out ourself.
439    XCore_insn_extract(MI, (const char *)AsmStrs+(Bits & 2047)-1);
440    return;
441    break;
442  case 1:
443    // ADD_2rus, ADD_3r, ADJCALLSTACKDOWN, ADJCALLSTACKUP, ANDNOT_2r, AND_3r,...
444    printOperand(MI, 0, O);
445    break;
446  case 2:
447    // BR_JT, BR_JT32, CRC8_l4r, INITCP_2r, INITDP_2r, INITLR_l2r, INITPC_2r,...
448    printOperand(MI, 1, O);
449    break;
450  case 3:
451    // OUTSHR_2r, TSETR_3r
452    printOperand(MI, 2, O);
453    break;
454  }
455
456
457  // Fragment 1 encoded into 5 bits for 17 unique commands.
458  //printf("Frag-1: %u\n", (Bits >> 13) & 31);
459  switch ((Bits >> 13) & 31) {
460  default:   // unreachable.
461  case 0:
462    // ADD_2rus, ADD_3r, ANDNOT_2r, AND_3r, ASHR_l2rus, ASHR_l3r, BITREV_l2r,...
463    SStream_concat0(O, ", ");
464    break;
465  case 1:
466    // ADJCALLSTACKDOWN, ADJCALLSTACKUP, BAU_1r, BLAT_lu6, BLAT_u6, BLA_1r, B...
467    return;
468    break;
469  case 2:
470    // BLACP_lu10, BLACP_u10, CLRPT_1R, EDU_1r, EEU_1r, FREER_1r, LDAWCP_lu6,...
471    SStream_concat0(O, "]");
472    set_mem_access(MI, false, 0);
473    return;
474    break;
475  case 3:
476    // BR_JT, BR_JT32
477    SStream_concat0(O, "\n");
478    break;
479  case 4:
480    // CHKCT_2r, CHKCT_rus, OUTCT_2r, OUTCT_rus, OUTPW_l2rus, OUTSHR_2r, OUTT...
481    SStream_concat0(O, "], ");
482    set_mem_access(MI, false, 0);
483    break;
484  case 5:
485    // EEF_2r, EET_2r, ENDIN_2r, GETD_l2r, GETN_l2r, GETST_2r, GETTS_2r, INCT...
486    SStream_concat0(O, ", res[");
487    set_mem_access(MI, true, 0);
488    break;
489  case 6:
490    // GETPS_l2r
491    SStream_concat0(O, ", ps[");
492    set_mem_access(MI, true, 0);
493    printOperand(MI, 1, O);
494    SStream_concat0(O, "]");
495    set_mem_access(MI, false, 0);
496    return;
497    break;
498  case 7:
499    // INITCP_2r
500    SStream_concat0(O, "]:cp, ");
501    set_mem_access(MI, false, XCORE_REG_CP);
502    printOperand(MI, 0, O);
503    return;
504    break;
505  case 8:
506    // INITDP_2r
507    SStream_concat0(O, "]:dp, ");
508    set_mem_access(MI, false, XCORE_REG_DP);
509    printOperand(MI, 0, O);
510    return;
511    break;
512  case 9:
513    // INITLR_l2r
514    SStream_concat0(O, "]:lr, ");
515    set_mem_access(MI, false, XCORE_REG_LR);
516    printOperand(MI, 0, O);
517    return;
518    break;
519  case 10:
520    // INITPC_2r
521    SStream_concat0(O, "]:pc, ");
522    set_mem_access(MI, false, XCORE_REG_PC);
523    printOperand(MI, 0, O);
524    return;
525    break;
526  case 11:
527    // INITSP_2r
528    SStream_concat0(O, "]:sp, ");
529    set_mem_access(MI, false, XCORE_REG_SP);
530    printOperand(MI, 0, O);
531    return;
532    break;
533  case 12:
534    // LDAWDP_lru6, LDAWDP_ru6, LDWDP_lru6, LDWDP_ru6, STWDP_lru6, STWDP_ru6
535    SStream_concat0(O, ", dp[");
536    set_mem_access(MI, true, XCORE_REG_DP);
537    printOperand(MI, 1, O);
538    SStream_concat0(O, "]");
539    set_mem_access(MI, false, 0);
540    return;
541    break;
542  case 13:
543    // LDAWSP_lru6, LDAWSP_ru6, LDWSP_lru6, LDWSP_ru6, STWSP_lru6, STWSP_ru6
544    SStream_concat0(O, ", sp[");
545    set_mem_access(MI, true, XCORE_REG_SP);
546    printOperand(MI, 1, O);
547    SStream_concat0(O, "]");
548    set_mem_access(MI, false, 0);
549    return;
550    break;
551  case 14:
552    // LDWCP_lru6, LDWCP_ru6
553    SStream_concat0(O, ", cp[");
554    set_mem_access(MI, true, XCORE_REG_CP);
555    printOperand(MI, 1, O);
556    SStream_concat0(O, "]");
557    set_mem_access(MI, false, 0);
558    return;
559    break;
560  case 15:
561    // SETEV_1r, SETV_1r
562    SStream_concat0(O, "], r11");
563    set_mem_access(MI, false, 0);
564    return;
565    break;
566  case 16:
567    // TSETR_3r
568    SStream_concat0(O, "]:r");
569    set_mem_access(MI, false, 0);
570    printOperand(MI, 0, O);
571    SStream_concat0(O, ", ");
572    printOperand(MI, 1, O);
573    return;
574    break;
575  }
576
577
578  // Fragment 2 encoded into 3 bits for 5 unique commands.
579  //printf("Frag-2: %u\n", (Bits >> 18) & 7);
580  switch ((Bits >> 18) & 7) {
581  default:   // unreachable.
582  case 0:
583    // ADD_2rus, ADD_3r, AND_3r, ASHR_l2rus, ASHR_l3r, BITREV_l2r, BRBF_lru6,...
584    printOperand(MI, 1, O);
585    break;
586  case 1:
587    // ANDNOT_2r, CRC_l3r, INSHR_2r, SEXT_2r, SEXT_rus, ZEXT_2r, ZEXT_rus
588    printOperand(MI, 2, O);
589    break;
590  case 2:
591    // BR_JT
592    printInlineJT(MI, 0, O);
593    return;
594    break;
595  case 3:
596    // BR_JT32
597    printInlineJT32(MI, 0, O);
598    return;
599    break;
600  case 4:
601    // CRC8_l4r, LADD_l5r, LSUB_l5r, OUTPW_l2rus
602    printOperand(MI, 0, O);
603    SStream_concat0(O, ", ");
604    break;
605  }
606
607
608  // Fragment 3 encoded into 3 bits for 8 unique commands.
609  //printf("Frag-3: %u\n", (Bits >> 21) & 7);
610  switch ((Bits >> 21) & 7) {
611  default:   // unreachable.
612  case 0:
613    // ADD_2rus, ADD_3r, AND_3r, ASHR_l2rus, ASHR_l3r, CRC_l3r, DIVS_l3r, DIV...
614    SStream_concat0(O, ", ");
615    break;
616  case 1:
617    // ANDNOT_2r, BITREV_l2r, BRBF_lru6, BRBF_ru6, BRBT_lru6, BRBT_ru6, BRFF_...
618    return;
619    break;
620  case 2:
621    // CRC8_l4r
622    printOperand(MI, 3, O);
623    SStream_concat0(O, ", ");
624    printOperand(MI, 4, O);
625    return;
626    break;
627  case 3:
628    // EEF_2r, EET_2r, ENDIN_2r, GETD_l2r, GETN_l2r, GETST_2r, GETTS_2r, INCT...
629    SStream_concat0(O, "]");
630    set_mem_access(MI, false, 0);
631    return;
632    break;
633  case 4:
634    // INPW_l2rus
635    SStream_concat0(O, "], ");
636    set_mem_access(MI, false, 0);
637    printOperand(MI, 2, O);
638    return;
639    break;
640  case 5:
641    // LADD_l5r, LSUB_l5r, OUTPW_l2rus
642    printOperand(MI, 2, O);
643    break;
644  case 6:
645    // LD16S_3r, LD8U_3r, LDA16F_l3r, LDAWF_l2rus, LDAWF_l3r, LDW_2rus, LDW_3...
646    SStream_concat0(O, "[");
647    set_mem_access(MI, true, 0xffff);
648    printOperand(MI, 2, O);
649    SStream_concat0(O, "]");
650    set_mem_access(MI, false, 0);
651    return;
652    break;
653  case 7:
654    // LDA16B_l3r, LDAWB_l2rus, LDAWB_l3r
655    SStream_concat0(O, "[-");
656    set_mem_access(MI, true, -0xffff);
657    printOperand(MI, 2, O);
658    SStream_concat0(O, "]");
659    set_mem_access(MI, false, 0);
660    return;
661    break;
662  }
663
664
665  // Fragment 4 encoded into 3 bits for 5 unique commands.
666  //printf("Frag-4: %u\n", (Bits >> 24) & 7);
667  switch ((Bits >> 24) & 7) {
668  default:   // unreachable.
669  case 0:
670    // ADD_2rus, ADD_3r, AND_3r, ASHR_l2rus, ASHR_l3r, DIVS_l3r, DIVU_l3r, EQ...
671    printOperand(MI, 2, O);
672    break;
673  case 1:
674    // CRC_l3r
675    printOperand(MI, 3, O);
676    return;
677    break;
678  case 2:
679    // LADD_l5r, LSUB_l5r
680    SStream_concat0(O, ", ");
681    printOperand(MI, 3, O);
682    SStream_concat0(O, ", ");
683    printOperand(MI, 4, O);
684    return;
685    break;
686  case 3:
687    // LDIVU_l5r, MACCS_l4r, MACCU_l4r
688    printOperand(MI, 4, O);
689    SStream_concat0(O, ", ");
690    break;
691  case 4:
692    // OUTPW_l2rus
693    return;
694    break;
695  }
696
697
698  // Fragment 5 encoded into 2 bits for 4 unique commands.
699  //printf("Frag-5: %u\n", (Bits >> 27) & 3);
700  switch ((Bits >> 27) & 3) {
701  default:   // unreachable.
702  case 0:
703    // ADD_2rus, ADD_3r, AND_3r, ASHR_l2rus, ASHR_l3r, DIVS_l3r, DIVU_l3r, EQ...
704    return;
705    break;
706  case 1:
707    // LDIVU_l5r
708    printOperand(MI, 2, O);
709    SStream_concat0(O, ", ");
710    printOperand(MI, 3, O);
711    return;
712    break;
713  case 2:
714    // LMUL_l6r
715    SStream_concat0(O, ", ");
716    printOperand(MI, 3, O);
717    SStream_concat0(O, ", ");
718    printOperand(MI, 4, O);
719    SStream_concat0(O, ", ");
720    printOperand(MI, 5, O);
721    return;
722    break;
723  case 3:
724    // MACCS_l4r, MACCU_l4r
725    printOperand(MI, 5, O);
726    return;
727    break;
728  }
729}
730
731
732/// getRegisterName - This method is automatically generated by tblgen
733/// from the register set description.  This returns the assembler name
734/// for the specified register.
735static const char *getRegisterName(unsigned RegNo)
736{
737  // assert(RegNo && RegNo < 17 && "Invalid register number!");
738
739#ifndef CAPSTONE_DIET
740  static const char AsmStrs[] = {
741  /* 0 */ 'r', '1', '0', 0,
742  /* 4 */ 'r', '0', 0,
743  /* 7 */ 'r', '1', '1', 0,
744  /* 11 */ 'r', '1', 0,
745  /* 14 */ 'r', '2', 0,
746  /* 17 */ 'r', '3', 0,
747  /* 20 */ 'r', '4', 0,
748  /* 23 */ 'r', '5', 0,
749  /* 26 */ 'r', '6', 0,
750  /* 29 */ 'r', '7', 0,
751  /* 32 */ 'r', '8', 0,
752  /* 35 */ 'r', '9', 0,
753  /* 38 */ 'c', 'p', 0,
754  /* 41 */ 'd', 'p', 0,
755  /* 44 */ 's', 'p', 0,
756  /* 47 */ 'l', 'r', 0,
757  };
758
759  static const uint8_t RegAsmOffset[] = {
760    38, 41, 47, 44, 4, 11, 14, 17, 20, 23, 26, 29, 32, 35,
761    0, 7,
762  };
763
764  //int i;
765  //for (i = 0; i < sizeof(RegAsmOffset); i++)
766  //     printf("%s = %u\n", AsmStrs+RegAsmOffset[i], i + 1);
767  //printf("*************************\n");
768  return AsmStrs+RegAsmOffset[RegNo-1];
769#else
770  return NULL;
771#endif
772}
773