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