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