Rizin
unix-like reverse engineering framework and cli tools
TMS320C64xGenAsmWriter.inc
Go to the documentation of this file.
1 /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2 |* *|
3 |*Assembly Writer Source Fragment *|
4 |* *|
5 |* Automatically generated file, do not edit! *|
6 |* *|
7 \*===----------------------------------------------------------------------===*/
8 
9 #include <stdio.h>
10 
13 static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI) {
14  static const uint32_t OpInfo[] = {
15  0U, // PHI
16  0U, // INLINEASM
17  0U, // CFI_INSTRUCTION
18  0U, // EH_LABEL
19  0U, // GC_LABEL
20  0U, // KILL
21  0U, // EXTRACT_SUBREG
22  0U, // INSERT_SUBREG
23  0U, // IMPLICIT_DEF
24  0U, // SUBREG_TO_REG
25  0U, // COPY_TO_REGCLASS
26  882U, // DBG_VALUE
27  0U, // REG_SEQUENCE
28  0U, // COPY
29  875U, // BUNDLE
30  904U, // LIFETIME_START
31  862U, // LIFETIME_END
32  0U, // STACKMAP
33  0U, // PATCHPOINT
34  0U, // LOAD_STACK_GUARD
35  0U, // STATEPOINT
36  0U, // FRAME_ALLOC
37  1126U, // ABS2_l2_rr
38  10847U, // ABS_l1_pp
39  1631U, // ABS_l1_rr
40  85006U, // ADD2_d2_rrr
41  85006U, // ADD2_l1_rrr_x2
42  85006U, // ADD2_s1_rrr
43  85171U, // ADD4_l1_rrr_x2
44  91479U, // ADDAB_d1_rir
45  91479U, // ADDAB_d1_rrr
46  91541U, // ADDAD_d1_rir
47  91541U, // ADDAD_d1_rrr
48  91577U, // ADDAH_d1_rir
49  91577U, // ADDAH_d1_rrr
50  91937U, // ADDAW_d1_rir
51  91937U, // ADDAW_d1_rrr
52  132488U, // ADDKPC_s3_iir
53  1518U, // ADDK_s2_ir
54  233140U, // ADDU_l1_rpp
55  216756U, // ADDU_l1_rrp_x2
56  91555U, // ADD_d1_rir
57  91555U, // ADD_d1_rrr
58  91555U, // ADD_d2_rir
59  85411U, // ADD_d2_rrr
60  232867U, // ADD_l1_ipp
61  85411U, // ADD_l1_irr
62  232867U, // ADD_l1_rpp
63  216483U, // ADD_l1_rrp_x2
64  85411U, // ADD_l1_rrr_x2
65  85411U, // ADD_s1_irr
66  85411U, // ADD_s1_rrr
67  85542U, // ANDN_d2_rrr
68  85542U, // ANDN_l1_rrr_x2
69  85542U, // ANDN_s4_rrr
70  85416U, // AND_d2_rir
71  85416U, // AND_d2_rrr
72  85416U, // AND_l1_irr
73  85416U, // AND_l1_rrr_x2
74  85416U, // AND_s1_irr
75  85416U, // AND_s1_rrr
76  85019U, // AVG2_m1_rrr
77  85232U, // AVGU4_m1_rrr
78  1410U, // BDEC_s8_ir
79  1196U, // BITC4_m2_rr
80  307756U, // BNOP_s10_ri
81  307756U, // BNOP_s9_ii
82  1654U, // BPOS_s8_ir
83  53588U, // B_s5_i
84  53588U, // B_s6_r
85  892U, // B_s7_irp
86  898U, // B_s7_nrp
87  353870U, // CLR_s15_riir
88  91726U, // CLR_s1_rrr
89  85080U, // CMPEQ2_s1_rrr
90  85207U, // CMPEQ4_s1_rrr
91  101938U, // CMPEQ_l1_ipr
92  85554U, // CMPEQ_l1_irr
93  101938U, // CMPEQ_l1_rpr
94  85554U, // CMPEQ_l1_rrr_x2
95  85109U, // CMPGT2_s1_rrr
96  85298U, // CMPGTU4_s1_rrr
97  102037U, // CMPGT_l1_ipr
98  85653U, // CMPGT_l1_irr
99  102037U, // CMPGT_l1_rpr
100  85653U, // CMPGT_l1_rrr_x2
101  102150U, // CMPLTU_l1_ipr
102  85766U, // CMPLTU_l1_irr
103  102150U, // CMPLTU_l1_rpr
104  85766U, // CMPLTU_l1_rrr_x2
105  102044U, // CMPLT_l1_ipr
106  85660U, // CMPLT_l1_irr
107  102044U, // CMPLT_l1_rpr
108  85660U, // CMPLT_l1_rrr_x2
109  1529U, // DEAL_m2_rr
110  216145U, // DOTP2_m1_rrp
111  85073U, // DOTP2_m1_rrr
112  85065U, // DOTPN2_m1_rrr
113  85124U, // DOTPNRSU2_m1_rrr
114  85135U, // DOTPRSU2_m1_rrr
115  85281U, // DOTPSU4_m1_rrr
116  85273U, // DOTPU4_m1_rrr
117  354062U, // EXTU_s15_riir
118  91918U, // EXTU_s1_rrr
119  353955U, // EXT_s15_riir
120  91811U, // EXT_s1_rrr
121  102142U, // GMPGTU_l1_ipr
122  85758U, // GMPGTU_l1_irr
123  102142U, // GMPGTU_l1_rpr
124  85758U, // GMPGTU_l1_rrr_x2
125  85321U, // GMPY4_m1_rrr
126  5800U, // LDBU_d5_mr
127  6824U, // LDBU_d6_mr
128  5470U, // LDB_d5_mr
129  6494U, // LDB_d6_mr
130  14120U, // LDDW_d7_mp
131  5818U, // LDHU_d5_mr
132  6842U, // LDHU_d6_mr
133  5568U, // LDH_d5_mr
134  6592U, // LDH_d6_mr
135  14131U, // LDNDW_d8_mp
136  5959U, // LDNW_d5_mr
137  5934U, // LDW_d5_mr
138  6958U, // LDW_d6_mr
139  85404U, // LMBD_l1_irr
140  85404U, // LMBD_l1_rrr_x2
141  85145U, // MAX2_l1_rrr_x2
142  85307U, // MAXU4_l1_rrr_x2
143  85059U, // MIN2_l1_rrr_x2
144  85266U, // MINU4_l1_rrr_x2
145  216224U, // MPY2_m1_rrp
146  85566U, // MPYHIR_m1_rrr
147  216544U, // MPYHI_m1_rrp
148  85720U, // MPYHLU_m4_rrr
149  85516U, // MPYHL_m4_rrr
150  85728U, // MPYHSLU_m4_rrr
151  85743U, // MPYHSU_m4_rrr
152  85613U, // MPYHULS_m4_rrr
153  85628U, // MPYHUS_m4_rrr
154  85713U, // MPYHU_m4_rrr
155  85466U, // MPYH_m4_rrr
156  85696U, // MPYLHU_m4_rrr
157  85453U, // MPYLH_m4_rrr
158  85574U, // MPYLIR_m1_rrr
159  216551U, // MPYLI_m1_rrp
160  85704U, // MPYLSHU_m4_rrr
161  85604U, // MPYLUHS_m4_rrr
162  216362U, // MPYSU4_m1_rrp
163  85751U, // MPYSU_m4_irr
164  85751U, // MPYSU_m4_rrr
165  216386U, // MPYU4_m1_rrp
166  85636U, // MPYUS_m4_rrr
167  85780U, // MPYU_m4_rrr
168  85849U, // MPY_m4_irr
169  85849U, // MPY_m4_rrr
170  1424U, // MVC_s1_rr
171  1424U, // MVC_s1_rr2
172  1453U, // MVD_m2_rr
173  1477U, // MVKLH_s12_ir
174  1524U, // MVKL_s12_ir
175  1524U, // MVK_d1_rr
176  1524U, // MVK_l2_ir
177  53249U, // NOP_n
178  2592U, // NORM_l1_pr
179  1568U, // NORM_l1_rr
180  85588U, // OR_d2_rir
181  85588U, // OR_d2_rrr
182  85588U, // OR_l1_irr
183  85588U, // OR_l1_rrr_x2
184  85588U, // OR_s1_irr
185  85588U, // OR_s1_rrr
186  85043U, // PACK2_l1_rrr_x2
187  85043U, // PACK2_s4_rrr
188  85025U, // PACKH2_l1_rrr_x2
189  85025U, // PACKH2_s1_rrr
190  85184U, // PACKH4_l1_rrr_x2
191  85050U, // PACKHL2_l1_rrr_x2
192  85050U, // PACKHL2_s1_rrr
193  85192U, // PACKL4_l1_rrr_x2
194  85033U, // PACKLH2_l1_rrr_x2
195  85033U, // PACKLH2_s1_rrr
196  91667U, // ROTL_m1_rir
197  91667U, // ROTL_m1_rrr
198  85005U, // SADD2_s4_rrr
199  85224U, // SADDU4_s4_rrr
200  85100U, // SADDUS2_s4_rrr
201  232866U, // SADD_l1_ipp
202  85410U, // SADD_l1_irr
203  232866U, // SADD_l1_rpp
204  85410U, // SADD_l1_rrr_x2
205  85410U, // SADD_s1_rrr
206  2699U, // SAT_l1_pr
207  353936U, // SET_s15_riir
208  91792U, // SET_s1_rrr
209  1535U, // SHFL_m2_rr
210  85347U, // SHLMB_l1_rrr_x2
211  85347U, // SHLMB_s4_rrr
212  223750U, // SHL_s1_pip
213  223750U, // SHL_s1_prp
214  222726U, // SHL_s1_rip
215  91654U, // SHL_s1_rir
216  222726U, // SHL_s1_rrp
217  91654U, // SHL_s1_rrr
218  91232U, // SHR2_s1_rir
219  91232U, // SHR2_s4_rrr
220  85354U, // SHRMB_l1_rrr_x2
221  85354U, // SHRMB_s4_rrr
222  91261U, // SHRU2_s1_rir
223  91261U, // SHRU2_s4_rrr
224  223977U, // SHRU_s1_pip
225  223977U, // SHRU_s1_prp
226  91881U, // SHRU_s1_rir
227  91881U, // SHRU_s1_rrr
228  223801U, // SHR_s1_pip
229  223801U, // SHR_s1_prp
230  91705U, // SHR_s1_rir
231  91705U, // SHR_s1_rrr
232  216223U, // SMPY2_m1_rrp
233  85515U, // SMPYHL_m4_rrr
234  85465U, // SMPYH_m4_rrr
235  85452U, // SMPYLH_m4_rrr
236  85848U, // SMPY_m4_rrr
237  85042U, // SPACK2_s4_rrr
238  85248U, // SPACKU4_s4_rrr
239  91653U, // SSHL_s1_rir
240  91653U, // SSHL_s1_rrr
241  85529U, // SSHVL_m1_rrr
242  85592U, // SSHVR_m1_rrr
243  232822U, // SSUB_l1_ipp
244  85366U, // SSUB_l1_irr
245  85366U, // SSUB_l1_rrr_x1
246  85366U, // SSUB_l1_rrr_x2
247  438641U, // STB_d5_rm
248  504177U, // STB_d6_rm
249  8001U, // STDW_d7_pm
250  438740U, // STH_d5_rm
251  504276U, // STH_d6_rm
252  7994U, // STNDW_d8_pm
253  439117U, // STNW_d5_rm
254  439123U, // STW_d5_rm
255  504659U, // STW_d6_rm
256  84999U, // SUB2_d2_rrr
257  84999U, // SUB2_l1_rrr_x2
258  84999U, // SUB2_s1_rrr
259  85158U, // SUB4_l1_rrr_x2
260  85215U, // SUBABS4_l1_rrr_x2
261  91472U, // SUBAB_d1_rir
262  91472U, // SUBAB_d1_rrr
263  91472U, // SUBAH_d1_rir
264  91570U, // SUBAH_d1_rrr
265  91472U, // SUBAW_d1_rir
266  91930U, // SUBAW_d1_rrr
267  85372U, // SUBC_l1_rrr_x2
268  216750U, // SUBU_l1_rrp_x1
269  216750U, // SUBU_l1_rrp_x2
270  91511U, // SUB_d1_rir
271  91511U, // SUB_d1_rrr
272  85367U, // SUB_d2_rrr
273  232823U, // SUB_l1_ipp
274  85367U, // SUB_l1_irr
275  216439U, // SUB_l1_rrp_x1
276  216439U, // SUB_l1_rrp_x2
277  85367U, // SUB_l1_rrr_x1
278  85367U, // SUB_l1_rrr_x2
279  85367U, // SUB_s1_irr
280  85367U, // SUB_s1_rrr
281  91511U, // SUB_s4_rrr
282  1232U, // SWAP4_l2_rr
283  1271U, // UNPKHU4_l2_rr
284  1271U, // UNPKHU4_s14_rr
285  1289U, // UNPKLU4_l2_rr
286  1289U, // UNPKLU4_s14_rr
287  85587U, // XOR_d2_rir
288  85587U, // XOR_d2_rrr
289  85587U, // XOR_l1_irr
290  85587U, // XOR_l1_rrr_x2
291  85587U, // XOR_s1_irr
292  85587U, // XOR_s1_rrr
293  1044U, // XPND2_m2_rr
294  1209U, // XPND4_m2_rr
295  0U
296  };
297 
298  static char AsmStrs[] = {
299  /* 0 */ 'n', 'o', 'p', 9, 9, 0,
300  /* 6 */ 's', 'u', 'b', '2', 9, 0,
301  /* 12 */ 's', 'a', 'd', 'd', '2', 9, 0,
302  /* 19 */ 'x', 'p', 'n', 'd', '2', 9, 0,
303  /* 26 */ 'a', 'v', 'g', '2', 9, 0,
304  /* 32 */ 'p', 'a', 'c', 'k', 'h', '2', 9, 0,
305  /* 40 */ 'p', 'a', 'c', 'k', 'l', 'h', '2', 9, 0,
306  /* 49 */ 's', 'p', 'a', 'c', 'k', '2', 9, 0,
307  /* 57 */ 'p', 'a', 'c', 'k', 'h', 'l', '2', 9, 0,
308  /* 66 */ 'm', 'i', 'n', '2', 9, 0,
309  /* 72 */ 'd', 'o', 't', 'p', 'n', '2', 9, 0,
310  /* 80 */ 'd', 'o', 't', 'p', '2', 9, 0,
311  /* 87 */ 'c', 'm', 'p', 'e', 'q', '2', 9, 0,
312  /* 95 */ 's', 'h', 'r', '2', 9, 0,
313  /* 101 */ 'a', 'b', 's', '2', 9, 0,
314  /* 107 */ 's', 'a', 'd', 'd', 'u', 's', '2', 9, 0,
315  /* 116 */ 'c', 'm', 'p', 'g', 't', '2', 9, 0,
316  /* 124 */ 's', 'h', 'r', 'u', '2', 9, 0,
317  /* 131 */ 'd', 'o', 't', 'p', 'n', 'r', 's', 'u', '2', 9, 0,
318  /* 142 */ 'd', 'o', 't', 'p', 'r', 's', 'u', '2', 9, 0,
319  /* 152 */ 'm', 'a', 'x', '2', 9, 0,
320  /* 158 */ 's', 'm', 'p', 'y', '2', 9, 0,
321  /* 165 */ 's', 'u', 'b', '4', 9, 0,
322  /* 171 */ 'b', 'i', 't', 'c', '4', 9, 0,
323  /* 178 */ 'a', 'd', 'd', '4', 9, 0,
324  /* 184 */ 'x', 'p', 'n', 'd', '4', 9, 0,
325  /* 191 */ 'p', 'a', 'c', 'k', 'h', '4', 9, 0,
326  /* 199 */ 'p', 'a', 'c', 'k', 'l', '4', 9, 0,
327  /* 207 */ 's', 'w', 'a', 'p', '4', 9, 0,
328  /* 214 */ 'c', 'm', 'p', 'e', 'q', '4', 9, 0,
329  /* 222 */ 's', 'u', 'b', 'a', 'b', 's', '4', 9, 0,
330  /* 231 */ 's', 'a', 'd', 'd', 'u', '4', 9, 0,
331  /* 239 */ 'a', 'v', 'g', 'u', '4', 9, 0,
332  /* 246 */ 'u', 'n', 'p', 'k', 'h', 'u', '4', 9, 0,
333  /* 255 */ 's', 'p', 'a', 'c', 'k', 'u', '4', 9, 0,
334  /* 264 */ 'u', 'n', 'p', 'k', 'l', 'u', '4', 9, 0,
335  /* 273 */ 'm', 'i', 'n', 'u', '4', 9, 0,
336  /* 280 */ 'd', 'o', 't', 'p', 'u', '4', 9, 0,
337  /* 288 */ 'd', 'o', 't', 'p', 's', 'u', '4', 9, 0,
338  /* 297 */ 'm', 'p', 'y', 's', 'u', '4', 9, 0,
339  /* 305 */ 'c', 'm', 'p', 'g', 't', 'u', '4', 9, 0,
340  /* 314 */ 'm', 'a', 'x', 'u', '4', 9, 0,
341  /* 321 */ 'm', 'p', 'y', 'u', '4', 9, 0,
342  /* 328 */ 'g', 'm', 'p', 'y', '4', 9, 0,
343  /* 335 */ 's', 'u', 'b', 'a', 'b', 9, 0,
344  /* 342 */ 'a', 'd', 'd', 'a', 'b', 9, 0,
345  /* 349 */ 'l', 'd', 'b', 9, 0,
346  /* 354 */ 's', 'h', 'l', 'm', 'b', 9, 0,
347  /* 361 */ 's', 'h', 'r', 'm', 'b', 9, 0,
348  /* 368 */ 's', 't', 'b', 9, 0,
349  /* 373 */ 's', 's', 'u', 'b', 9, 0,
350  /* 379 */ 's', 'u', 'b', 'c', 9, 0,
351  /* 385 */ 'b', 'd', 'e', 'c', 9, 0,
352  /* 391 */ 'a', 'd', 'd', 'k', 'p', 'c', 9, 0,
353  /* 399 */ 'm', 'v', 'c', 9, 0,
354  /* 404 */ 'a', 'd', 'd', 'a', 'd', 9, 0,
355  /* 411 */ 'l', 'm', 'b', 'd', 9, 0,
356  /* 417 */ 's', 'a', 'd', 'd', 9, 0,
357  /* 423 */ 'a', 'n', 'd', 9, 0,
358  /* 428 */ 'm', 'v', 'd', 9, 0,
359  /* 433 */ 's', 'u', 'b', 'a', 'h', 9, 0,
360  /* 440 */ 'a', 'd', 'd', 'a', 'h', 9, 0,
361  /* 447 */ 'l', 'd', 'h', 9, 0,
362  /* 452 */ 'm', 'v', 'k', 'l', 'h', 9, 0,
363  /* 459 */ 's', 'm', 'p', 'y', 'l', 'h', 9, 0,
364  /* 467 */ 's', 't', 'h', 9, 0,
365  /* 472 */ 's', 'm', 'p', 'y', 'h', 9, 0,
366  /* 479 */ 'm', 'p', 'y', 'h', 'i', 9, 0,
367  /* 486 */ 'm', 'p', 'y', 'l', 'i', 9, 0,
368  /* 493 */ 'a', 'd', 'd', 'k', 9, 0,
369  /* 499 */ 'm', 'v', 'k', 9, 0,
370  /* 504 */ 'd', 'e', 'a', 'l', 9, 0,
371  /* 510 */ 's', 'h', 'f', 'l', 9, 0,
372  /* 516 */ 's', 's', 'h', 'l', 9, 0,
373  /* 522 */ 's', 'm', 'p', 'y', 'h', 'l', 9, 0,
374  /* 530 */ 'r', 'o', 't', 'l', 9, 0,
375  /* 536 */ 's', 's', 'h', 'v', 'l', 9, 0,
376  /* 543 */ 'n', 'o', 'r', 'm', 9, 0,
377  /* 549 */ 'a', 'n', 'd', 'n', 9, 0,
378  /* 555 */ 'b', 'n', 'o', 'p', 9, 0,
379  /* 561 */ 'c', 'm', 'p', 'e', 'q', 9, 0,
380  /* 568 */ 's', 'h', 'r', 9, 0,
381  /* 573 */ 'm', 'p', 'y', 'h', 'i', 'r', 9, 0,
382  /* 581 */ 'm', 'p', 'y', 'l', 'i', 'r', 9, 0,
383  /* 589 */ 'c', 'l', 'r', 9, 0,
384  /* 594 */ 'x', 'o', 'r', 9, 0,
385  /* 599 */ 's', 's', 'h', 'v', 'r', 9, 0,
386  /* 606 */ 'a', 'b', 's', 9, 0,
387  /* 611 */ 'm', 'p', 'y', 'l', 'u', 'h', 's', 9, 0,
388  /* 620 */ 'm', 'p', 'y', 'h', 'u', 'l', 's', 9, 0,
389  /* 629 */ 'b', 'p', 'o', 's', 9, 0,
390  /* 635 */ 'm', 'p', 'y', 'h', 'u', 's', 9, 0,
391  /* 643 */ 'm', 'p', 'y', 'u', 's', 9, 0,
392  /* 650 */ 's', 'a', 't', 9, 0,
393  /* 655 */ 's', 'e', 't', 9, 0,
394  /* 660 */ 'c', 'm', 'p', 'g', 't', 9, 0,
395  /* 667 */ 'c', 'm', 'p', 'l', 't', 9, 0,
396  /* 674 */ 'e', 'x', 't', 9, 0,
397  /* 679 */ 'l', 'd', 'b', 'u', 9, 0,
398  /* 685 */ 's', 'u', 'b', 'u', 9, 0,
399  /* 691 */ 'a', 'd', 'd', 'u', 9, 0,
400  /* 697 */ 'l', 'd', 'h', 'u', 9, 0,
401  /* 703 */ 'm', 'p', 'y', 'l', 'h', 'u', 9, 0,
402  /* 711 */ 'm', 'p', 'y', 'l', 's', 'h', 'u', 9, 0,
403  /* 720 */ 'm', 'p', 'y', 'h', 'u', 9, 0,
404  /* 727 */ 'm', 'p', 'y', 'h', 'l', 'u', 9, 0,
405  /* 735 */ 'm', 'p', 'y', 'h', 's', 'l', 'u', 9, 0,
406  /* 744 */ 's', 'h', 'r', 'u', 9, 0,
407  /* 750 */ 'm', 'p', 'y', 'h', 's', 'u', 9, 0,
408  /* 758 */ 'm', 'p', 'y', 's', 'u', 9, 0,
409  /* 765 */ 'c', 'm', 'p', 'g', 't', 'u', 9, 0,
410  /* 773 */ 'c', 'm', 'p', 'l', 't', 'u', 9, 0,
411  /* 781 */ 'e', 'x', 't', 'u', 9, 0,
412  /* 787 */ 'm', 'p', 'y', 'u', 9, 0,
413  /* 793 */ 's', 'u', 'b', 'a', 'w', 9, 0,
414  /* 800 */ 'a', 'd', 'd', 'a', 'w', 9, 0,
415  /* 807 */ 'l', 'd', 'd', 'w', 9, 0,
416  /* 813 */ 'l', 'd', 'w', 9, 0,
417  /* 818 */ 'l', 'd', 'n', 'd', 'w', 9, 0,
418  /* 825 */ 's', 't', 'n', 'd', 'w', 9, 0,
419  /* 832 */ 's', 't', 'd', 'w', 9, 0,
420  /* 838 */ 'l', 'd', 'n', 'w', 9, 0,
421  /* 844 */ 's', 't', 'n', 'w', 9, 0,
422  /* 850 */ 's', 't', 'w', 9, 0,
423  /* 855 */ 's', 'm', 'p', 'y', 9, 0,
424  /* 861 */ 'l', 'i', 'f', 'e', 't', 'i', 'm', 'e', '_', 'e', 'n', 'd', 0,
425  /* 874 */ 'b', 'u', 'n', 'd', 'l', 'e', 0,
426  /* 881 */ 'd', 'b', 'g', '_', 'v', 'a', 'l', 'u', 'e', 0,
427  /* 891 */ 'b', 9, 'i', 'r', 'p', 0,
428  /* 897 */ 'b', 9, 'n', 'r', 'p', 0,
429  /* 903 */ 'l', 'i', 'f', 'e', 't', 'i', 'm', 'e', '_', 's', 't', 'a', 'r', 't', 0,
430  };
431 
432  // Emit the opcode for the instruction.
433  uint32_t Bits = OpInfo[MCInst_getOpcode(MI)];
434  // assert(Bits != 0 && "Cannot print this instruction.");
435 #ifndef CAPSTONE_DIET
436  SStream_concat0(O, AsmStrs+(Bits & 1023)-1);
437 #endif
438 
439 
440  // Fragment 0 encoded into 3 bits for 8 unique commands.
441  switch ((Bits >> 10) & 7) {
442  default:
443  case 0:
444  // DBG_VALUE, BUNDLE, LIFETIME_START, LIFETIME_END, B_s7_irp, B_s7_nrp
445  return;
446  break;
447  case 1:
448  // ABS2_l2_rr, ABS_l1_rr, ADDAB_d1_rir, ADDAB_d1_rrr, ADDAD_d1_rir, ADDAD...
449  printOperand(MI, 1, O);
450  SStream_concat0(O, ", ");
451  break;
452  case 2:
453  // ABS_l1_pp, NORM_l1_pr, SAT_l1_pr, SHL_s1_pip, SHL_s1_prp, SHRU_s1_pip,...
454  printRegPair(MI, 1, O);
455  SStream_concat0(O, ", ");
456  break;
457  case 3:
458  // ADD2_d2_rrr, ADD2_l1_rrr_x2, ADD2_s1_rrr, ADD4_l1_rrr_x2, ADDU_l1_rpp,...
459  printOperand(MI, 2, O);
460  SStream_concat0(O, ", ");
461  break;
462  case 4:
463  // BNOP_s10_ri, BNOP_s9_ii, B_s5_i, B_s6_r, NOP_n, STB_d5_rm, STB_d6_rm, ...
464  printOperand(MI, 0, O);
465  break;
466  case 5:
467  // LDBU_d5_mr, LDB_d5_mr, LDDW_d7_mp, LDHU_d5_mr, LDH_d5_mr, LDNDW_d8_mp,...
468  printMemOperand(MI, 1, O);
469  SStream_concat0(O, ", ");
470  break;
471  case 6:
472  // LDBU_d6_mr, LDB_d6_mr, LDHU_d6_mr, LDH_d6_mr, LDW_d6_mr
473  printMemOperand2(MI, 1, O);
474  SStream_concat0(O, ", ");
475  printOperand(MI, 0, O);
476  return;
477  break;
478  case 7:
479  // STDW_d7_pm, STNDW_d8_pm
480  printRegPair(MI, 0, O);
481  SStream_concat0(O, ", ");
482  printMemOperand(MI, 1, O);
483  return;
484  break;
485  }
486 
487 
488  // Fragment 1 encoded into 3 bits for 7 unique commands.
489  switch ((Bits >> 13) & 7) {
490  default:
491  case 0:
492  // ABS2_l2_rr, ABS_l1_rr, ADDKPC_s3_iir, ADDK_s2_ir, BDEC_s8_ir, BITC4_m2...
493  printOperand(MI, 0, O);
494  break;
495  case 1:
496  // ABS_l1_pp, LDDW_d7_mp, LDNDW_d8_mp
497  printRegPair(MI, 0, O);
498  return;
499  break;
500  case 2:
501  // ADD2_d2_rrr, ADD2_l1_rrr_x2, ADD2_s1_rrr, ADD4_l1_rrr_x2, ADDU_l1_rrp_...
502  printOperand(MI, 1, O);
503  SStream_concat0(O, ", ");
504  break;
505  case 3:
506  // ADDAB_d1_rir, ADDAB_d1_rrr, ADDAD_d1_rir, ADDAD_d1_rrr, ADDAH_d1_rir, ...
507  printOperand(MI, 2, O);
508  SStream_concat0(O, ", ");
509  break;
510  case 4:
511  // ADDU_l1_rpp, ADD_l1_ipp, ADD_l1_rpp, CMPEQ_l1_ipr, CMPEQ_l1_rpr, CMPGT...
512  printRegPair(MI, 1, O);
513  SStream_concat0(O, ", ");
514  break;
515  case 5:
516  // BNOP_s10_ri, BNOP_s9_ii, STB_d5_rm, STB_d6_rm, STH_d5_rm, STH_d6_rm, S...
517  SStream_concat0(O, ", ");
518  break;
519  case 6:
520  // B_s5_i, B_s6_r, NOP_n
521  return;
522  break;
523  }
524 
525 
526  // Fragment 2 encoded into 3 bits for 8 unique commands.
527  switch ((Bits >> 16) & 7) {
528  default:
529  case 0:
530  // ABS2_l2_rr, ABS_l1_rr, ADDK_s2_ir, BDEC_s8_ir, BITC4_m2_rr, BPOS_s8_ir...
531  return;
532  break;
533  case 1:
534  // ADD2_d2_rrr, ADD2_l1_rrr_x2, ADD2_s1_rrr, ADD4_l1_rrr_x2, ADDAB_d1_rir...
535  printOperand(MI, 0, O);
536  return;
537  break;
538  case 2:
539  // ADDKPC_s3_iir
540  SStream_concat0(O, ", ");
541  printOperand(MI, 2, O);
542  return;
543  break;
544  case 3:
545  // ADDU_l1_rpp, ADDU_l1_rrp_x2, ADD_l1_ipp, ADD_l1_rpp, ADD_l1_rrp_x2, DO...
546  printRegPair(MI, 0, O);
547  return;
548  break;
549  case 4:
550  // BNOP_s10_ri, BNOP_s9_ii
551  printOperand(MI, 1, O);
552  return;
553  break;
554  case 5:
555  // CLR_s15_riir, EXTU_s15_riir, EXT_s15_riir, SET_s15_riir
556  printOperand(MI, 3, O);
557  SStream_concat0(O, ", ");
558  printOperand(MI, 0, O);
559  return;
560  break;
561  case 6:
562  // STB_d5_rm, STH_d5_rm, STNW_d5_rm, STW_d5_rm
563  printMemOperand(MI, 1, O);
564  return;
565  break;
566  case 7:
567  // STB_d6_rm, STH_d6_rm, STW_d6_rm
568  printMemOperand2(MI, 1, O);
569  return;
570  break;
571  }
572 
573 }
574 
575 
579 static char *getRegisterName(unsigned RegNo) {
580 #ifndef CAPSTONE_DIET
581  static char AsmStrs[] = {
582  /* 0 */ 'a', '1', '0', 0,
583  /* 4 */ 'b', '1', '0', 0,
584  /* 8 */ 'a', '2', '0', 0,
585  /* 12 */ 'b', '2', '0', 0,
586  /* 16 */ 'a', '3', '0', 0,
587  /* 20 */ 'b', '3', '0', 0,
588  /* 24 */ 'a', '0', 0,
589  /* 27 */ 'b', '0', 0,
590  /* 30 */ 'a', '1', '1', 0,
591  /* 34 */ 'b', '1', '1', 0,
592  /* 38 */ 'a', '2', '1', 0,
593  /* 42 */ 'b', '2', '1', 0,
594  /* 46 */ 'a', '3', '1', 0,
595  /* 50 */ 'b', '3', '1', 0,
596  /* 54 */ 'a', '1', 0,
597  /* 57 */ 'b', '1', 0,
598  /* 60 */ 'p', 'c', 'e', '1', 0,
599  /* 65 */ 'a', '1', '2', 0,
600  /* 69 */ 'b', '1', '2', 0,
601  /* 73 */ 'a', '2', '2', 0,
602  /* 77 */ 'b', '2', '2', 0,
603  /* 81 */ 'a', '2', 0,
604  /* 84 */ 'b', '2', 0,
605  /* 87 */ 'a', '1', '3', 0,
606  /* 91 */ 'b', '1', '3', 0,
607  /* 95 */ 'a', '2', '3', 0,
608  /* 99 */ 'b', '2', '3', 0,
609  /* 103 */ 'a', '3', 0,
610  /* 106 */ 'b', '3', 0,
611  /* 109 */ 'a', '1', '4', 0,
612  /* 113 */ 'b', '1', '4', 0,
613  /* 117 */ 'a', '2', '4', 0,
614  /* 121 */ 'b', '2', '4', 0,
615  /* 125 */ 'a', '4', 0,
616  /* 128 */ 'b', '4', 0,
617  /* 131 */ 'a', '1', '5', 0,
618  /* 135 */ 'b', '1', '5', 0,
619  /* 139 */ 'a', '2', '5', 0,
620  /* 143 */ 'b', '2', '5', 0,
621  /* 147 */ 'a', '5', 0,
622  /* 150 */ 'b', '5', 0,
623  /* 153 */ 'a', '1', '6', 0,
624  /* 157 */ 'b', '1', '6', 0,
625  /* 161 */ 'a', '2', '6', 0,
626  /* 165 */ 'b', '2', '6', 0,
627  /* 169 */ 'a', '6', 0,
628  /* 172 */ 'b', '6', 0,
629  /* 175 */ 'a', '1', '7', 0,
630  /* 179 */ 'b', '1', '7', 0,
631  /* 183 */ 'a', '2', '7', 0,
632  /* 187 */ 'b', '2', '7', 0,
633  /* 191 */ 'a', '7', 0,
634  /* 194 */ 'b', '7', 0,
635  /* 197 */ 'a', '1', '8', 0,
636  /* 201 */ 'b', '1', '8', 0,
637  /* 205 */ 'a', '2', '8', 0,
638  /* 209 */ 'b', '2', '8', 0,
639  /* 213 */ 'a', '8', 0,
640  /* 216 */ 'b', '8', 0,
641  /* 219 */ 'a', '1', '9', 0,
642  /* 223 */ 'b', '1', '9', 0,
643  /* 227 */ 'a', '2', '9', 0,
644  /* 231 */ 'b', '2', '9', 0,
645  /* 235 */ 'a', '9', 0,
646  /* 238 */ 'b', '9', 0,
647  /* 241 */ 'g', 'p', 'l', 'y', 'a', 0,
648  /* 247 */ 'g', 'p', 'l', 'y', 'b', 0,
649  /* 253 */ 'r', 'i', 'l', 'c', 0,
650  /* 258 */ 't', 's', 'c', 'h', 0,
651  /* 263 */ 't', 's', 'c', 'l', 0,
652  /* 268 */ 'd', 'n', 'u', 'm', 0,
653  /* 273 */ 'r', 'e', 'p', 0,
654  /* 277 */ 'i', 'r', 'p', 0,
655  /* 281 */ 'n', 'r', 'p', 0,
656  /* 285 */ 'i', 's', 't', 'p', 0,
657  /* 290 */ 'e', 'c', 'r', 0,
658  /* 294 */ 'i', 'c', 'r', 0,
659  /* 298 */ 'd', 'i', 'e', 'r', 0,
660  /* 303 */ 'g', 'f', 'p', 'g', 'f', 'r', 0,
661  /* 310 */ 'a', 'm', 'r', 0,
662  /* 314 */ 'i', 'e', 'r', 'r', 0,
663  /* 319 */ 'c', 's', 'r', 0,
664  /* 323 */ 'i', 's', 'r', 0,
665  /* 327 */ 's', 's', 'r', 0,
666  /* 331 */ 'i', 't', 's', 'r', 0,
667  /* 336 */ 'n', 't', 's', 'r', 0,
668  };
669 
670  static const uint16_t RegAsmOffset[] = {
671  310, 319, 298, 268, 290, 303, 241, 247, 294, 299, 314, 254, 277, 323,
672  285, 331, 281, 336, 273, 253, 327, 258, 263, 332, 24, 54, 81, 103,
673  125, 147, 169, 191, 213, 235, 0, 30, 65, 87, 109, 131, 153, 175,
674  197, 219, 8, 38, 73, 95, 117, 139, 161, 183, 205, 227, 16, 46,
675  27, 57, 84, 106, 128, 150, 172, 194, 216, 238, 4, 34, 69, 91,
676  113, 135, 157, 179, 201, 223, 12, 42, 77, 99, 121, 143, 165, 187,
677  209, 231, 20, 50, 60,
678  };
679 
680  return AsmStrs+RegAsmOffset[RegNo-1];
681 #else
682  return NULL;
683 #endif
684 }
unsigned MCInst_getOpcode(const MCInst *inst)
Definition: MCInst.c:68
void SStream_concat0(SStream *ss, const char *s)
Definition: SStream.c:31
#define NULL
Definition: cris-opc.c:27
#define O
Definition: rcond.c:14
unsigned short uint16_t
Definition: sftypes.h:30
unsigned int uint32_t
Definition: sftypes.h:29
Definition: MCInst.h:88
Definition: SStream.h:9