/* Capstone Disassembly Engine, https://www.capstone-engine.org */ /* By Nguyen Anh Quynh , 2013-2022, */ /* Rot127 2022-2023 */ /* Automatically generated file by Capstone's LLVM TableGen Disassembler Backend. */ /* LLVM-commit: 083d57d0731afc1746680d828bdfe2fa41f62a61 */ /* LLVM-tag: llvmorg-3.0.0-2-g083d57d0731a */ /* Do not edit. */ /* Capstone's LLVM TableGen Backends: */ /* https://github.com/capstone-engine/llvm-capstone */ #include #include /// getMnemonic - This method is automatically generated by tablegen /// from the instruction set description. static MnemonicBitsInfo getMnemonic(MCInst *MI, SStream *O) { #ifndef CAPSTONE_DIET static const char AsmStrs[] = { /* 0 */ "; ADJDOWN \0" /* 11 */ "; ADJUP \0" /* 20 */ "lda \0" /* 25 */ "sra \0" /* 30 */ "stb \0" /* 35 */ "sextb \0" /* 42 */ "stl_c \0" /* 49 */ "stq_c \0" /* 56 */ "blbc \0" /* 62 */ "cmovlbc \0" /* 71 */ "rpcc \0" /* 77 */ "bic \0" /* 82 */ "rc \0" /* 86 */ "cvttq/svc \0" /* 97 */ "and \0" /* 102 */ "fbge \0" /* 108 */ "cmpbge \0" /* 116 */ "fcmovge \0" /* 125 */ "fble \0" /* 131 */ "cmple \0" /* 138 */ "cmpule \0" /* 146 */ "fcmovle \0" /* 155 */ "fbne \0" /* 161 */ "jsr_coroutine \0" /* 176 */ "fcmovne \0" /* 185 */ "cpyse \0" /* 192 */ "ldah \0" /* 198 */ "msklh \0" /* 205 */ "inslh \0" /* 212 */ "extlh \0" /* 219 */ "umulh \0" /* 226 */ "mskqh \0" /* 233 */ "insqh \0" /* 240 */ "extqh \0" /* 247 */ "mskwh \0" /* 254 */ "inswh \0" /* 261 */ "extwh \0" /* 268 */ "cvtqs/sui \0" /* 279 */ "cvtts/sui \0" /* 290 */ "cvtqt/sui \0" /* 301 */ "ldl_l \0" /* 308 */ "ldq_l \0" /* 315 */ "mskbl \0" /* 322 */ "insbl \0" /* 329 */ "extbl \0" /* 336 */ "s4subl \0" /* 344 */ "s8subl \0" /* 352 */ "s4addl \0" /* 360 */ "s8addl \0" /* 368 */ "ldl \0" /* 373 */ "mskll \0" /* 380 */ "insll \0" /* 387 */ "extll \0" /* 394 */ "mull \0" /* 400 */ "mskql \0" /* 407 */ "insql \0" /* 414 */ "extql \0" /* 421 */ "srl \0" /* 426 */ "stl \0" /* 431 */ "mskwl \0" /* 438 */ "inswl \0" /* 445 */ "extwl \0" /* 452 */ "cpysn \0" /* 459 */ "ctpop \0" /* 466 */ "s4subq \0" /* 474 */ "s8subq \0" /* 482 */ "s4addq \0" /* 490 */ "s8addq \0" /* 498 */ "ldq \0" /* 503 */ "fbeq \0" /* 509 */ "cmpeq \0" /* 516 */ "fcmoveq \0" /* 525 */ "mulq \0" /* 531 */ "stq \0" /* 536 */ "xor \0" /* 541 */ "cvtst/s \0" /* 550 */ "blbs \0" /* 556 */ "cmovlbs \0" /* 565 */ "lds \0" /* 570 */ "itofs \0" /* 577 */ "bis \0" /* 582 */ "ftois \0" /* 589 */ "rs \0" /* 593 */ "sts \0" /* 598 */ "cpys \0" /* 604 */ "ldt \0" /* 609 */ "itoft \0" /* 616 */ "fbgt \0" /* 622 */ "fcmovgt \0" /* 631 */ "ftoit \0" /* 638 */ "fblt \0" /* 644 */ "cmplt \0" /* 651 */ "cmpult \0" /* 659 */ "fcmovlt \0" /* 668 */ "zapnot \0" /* 676 */ "ornot \0" /* 683 */ "stt \0" /* 688 */ "ldq_u \0" /* 695 */ "stq_u \0" /* 702 */ "ldbu \0" /* 708 */ "cmptle/su \0" /* 719 */ "cmptun/su \0" /* 730 */ "cmpteq/su \0" /* 741 */ "subs/su \0" /* 750 */ "adds/su \0" /* 759 */ "muls/su \0" /* 768 */ "sqrts/su \0" /* 778 */ "divs/su \0" /* 787 */ "subt/su \0" /* 796 */ "addt/su \0" /* 805 */ "cmptlt/su \0" /* 816 */ "mult/su \0" /* 825 */ "sqrtt/su \0" /* 835 */ "divt/su \0" /* 844 */ "ldwu \0" /* 850 */ "eqv \0" /* 855 */ "stw \0" /* 860 */ "sextw \0" /* 867 */ "ctlz \0" /* 873 */ "cttz \0" /* 879 */ "bsr $26,$\0" /* 889 */ "LSMARKER$\0" /* 899 */ "wh64 (\0" /* 906 */ "ecb (\0" /* 912 */ "fetch (\0" /* 920 */ "fetch_m (\0" /* 930 */ "wh64en (\0" /* 939 */ "jmp $31,\0" /* 948 */ "br $31,\0" /* 956 */ "# XRay Function Patchable RET.\0" /* 987 */ "# XRay Typed Event Log.\0" /* 1011 */ "# XRay Custom Event Log.\0" /* 1036 */ "# XRay Function Enter.\0" /* 1059 */ "# XRay Tail Call Exit.\0" /* 1082 */ "# XRay Function Exit.\0" /* 1104 */ "jsr $23,($27),0\0" /* 1120 */ "jsr $26,($27),0\0" /* 1136 */ "ret $31,($26),1\0" /* 1152 */ "COND_BRANCH imm:\0" /* 1169 */ "LIFETIME_END\0" /* 1182 */ "PSEUDO_PROBE\0" /* 1195 */ "BUNDLE\0" /* 1202 */ "DBG_VALUE\0" /* 1212 */ "DBG_INSTR_REF\0" /* 1226 */ "DBG_PHI\0" /* 1234 */ "DBG_LABEL\0" /* 1244 */ "LIFETIME_START\0" /* 1259 */ "DBG_VALUE_LIST\0" /* 1274 */ "PCMARKER_\0" /* 1284 */ "excb\0" /* 1289 */ "wmb\0" /* 1293 */ "trapb\0" /* 1299 */ "#wtf\0" /* 1304 */ "# FEntry call\0" }; #endif // CAPSTONE_DIET static const uint16_t OpInfo0[] = { 0U, // PHI 0U, // INLINEASM 0U, // INLINEASM_BR 0U, // CFI_INSTRUCTION 0U, // EH_LABEL 0U, // GC_LABEL 0U, // ANNOTATION_LABEL 0U, // KILL 0U, // EXTRACT_SUBREG 0U, // INSERT_SUBREG 0U, // IMPLICIT_DEF 0U, // SUBREG_TO_REG 0U, // COPY_TO_REGCLASS 1203U, // DBG_VALUE 1260U, // DBG_VALUE_LIST 1213U, // DBG_INSTR_REF 1227U, // DBG_PHI 1235U, // DBG_LABEL 0U, // REG_SEQUENCE 0U, // COPY 1196U, // BUNDLE 1245U, // LIFETIME_START 1170U, // LIFETIME_END 1183U, // PSEUDO_PROBE 0U, // ARITH_FENCE 0U, // STACKMAP 1305U, // FENTRY_CALL 0U, // PATCHPOINT 0U, // LOAD_STACK_GUARD 0U, // PREALLOCATED_SETUP 0U, // PREALLOCATED_ARG 0U, // STATEPOINT 0U, // LOCAL_ESCAPE 0U, // FAULTING_OP 0U, // PATCHABLE_OP 1037U, // PATCHABLE_FUNCTION_ENTER 957U, // PATCHABLE_RET 1083U, // PATCHABLE_FUNCTION_EXIT 1060U, // PATCHABLE_TAIL_CALL 1012U, // PATCHABLE_EVENT_CALL 988U, // PATCHABLE_TYPED_EVENT_CALL 0U, // ICALL_BRANCH_FUNNEL 0U, // MEMBARRIER 0U, // G_ASSERT_SEXT 0U, // G_ASSERT_ZEXT 0U, // G_ASSERT_ALIGN 0U, // G_ADD 0U, // G_SUB 0U, // G_MUL 0U, // G_SDIV 0U, // G_UDIV 0U, // G_SREM 0U, // G_UREM 0U, // G_SDIVREM 0U, // G_UDIVREM 0U, // G_AND 0U, // G_OR 0U, // G_XOR 0U, // G_IMPLICIT_DEF 0U, // G_PHI 0U, // G_FRAME_INDEX 0U, // G_GLOBAL_VALUE 0U, // G_EXTRACT 0U, // G_UNMERGE_VALUES 0U, // G_INSERT 0U, // G_MERGE_VALUES 0U, // G_BUILD_VECTOR 0U, // G_BUILD_VECTOR_TRUNC 0U, // G_CONCAT_VECTORS 0U, // G_PTRTOINT 0U, // G_INTTOPTR 0U, // G_BITCAST 0U, // G_FREEZE 0U, // G_INTRINSIC_FPTRUNC_ROUND 0U, // G_INTRINSIC_TRUNC 0U, // G_INTRINSIC_ROUND 0U, // G_INTRINSIC_LRINT 0U, // G_INTRINSIC_ROUNDEVEN 0U, // G_READCYCLECOUNTER 0U, // G_LOAD 0U, // G_SEXTLOAD 0U, // G_ZEXTLOAD 0U, // G_INDEXED_LOAD 0U, // G_INDEXED_SEXTLOAD 0U, // G_INDEXED_ZEXTLOAD 0U, // G_STORE 0U, // G_INDEXED_STORE 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS 0U, // G_ATOMIC_CMPXCHG 0U, // G_ATOMICRMW_XCHG 0U, // G_ATOMICRMW_ADD 0U, // G_ATOMICRMW_SUB 0U, // G_ATOMICRMW_AND 0U, // G_ATOMICRMW_NAND 0U, // G_ATOMICRMW_OR 0U, // G_ATOMICRMW_XOR 0U, // G_ATOMICRMW_MAX 0U, // G_ATOMICRMW_MIN 0U, // G_ATOMICRMW_UMAX 0U, // G_ATOMICRMW_UMIN 0U, // G_ATOMICRMW_FADD 0U, // G_ATOMICRMW_FSUB 0U, // G_ATOMICRMW_FMAX 0U, // G_ATOMICRMW_FMIN 0U, // G_ATOMICRMW_UINC_WRAP 0U, // G_ATOMICRMW_UDEC_WRAP 0U, // G_FENCE 0U, // G_BRCOND 0U, // G_BRINDIRECT 0U, // G_INVOKE_REGION_START 0U, // G_INTRINSIC 0U, // G_INTRINSIC_W_SIDE_EFFECTS 0U, // G_ANYEXT 0U, // G_TRUNC 0U, // G_CONSTANT 0U, // G_FCONSTANT 0U, // G_VASTART 0U, // G_VAARG 0U, // G_SEXT 0U, // G_SEXT_INREG 0U, // G_ZEXT 0U, // G_SHL 0U, // G_LSHR 0U, // G_ASHR 0U, // G_FSHL 0U, // G_FSHR 0U, // G_ROTR 0U, // G_ROTL 0U, // G_ICMP 0U, // G_FCMP 0U, // G_SELECT 0U, // G_UADDO 0U, // G_UADDE 0U, // G_USUBO 0U, // G_USUBE 0U, // G_SADDO 0U, // G_SADDE 0U, // G_SSUBO 0U, // G_SSUBE 0U, // G_UMULO 0U, // G_SMULO 0U, // G_UMULH 0U, // G_SMULH 0U, // G_UADDSAT 0U, // G_SADDSAT 0U, // G_USUBSAT 0U, // G_SSUBSAT 0U, // G_USHLSAT 0U, // G_SSHLSAT 0U, // G_SMULFIX 0U, // G_UMULFIX 0U, // G_SMULFIXSAT 0U, // G_UMULFIXSAT 0U, // G_SDIVFIX 0U, // G_UDIVFIX 0U, // G_SDIVFIXSAT 0U, // G_UDIVFIXSAT 0U, // G_FADD 0U, // G_FSUB 0U, // G_FMUL 0U, // G_FMA 0U, // G_FMAD 0U, // G_FDIV 0U, // G_FREM 0U, // G_FPOW 0U, // G_FPOWI 0U, // G_FEXP 0U, // G_FEXP2 0U, // G_FLOG 0U, // G_FLOG2 0U, // G_FLOG10 0U, // G_FNEG 0U, // G_FPEXT 0U, // G_FPTRUNC 0U, // G_FPTOSI 0U, // G_FPTOUI 0U, // G_SITOFP 0U, // G_UITOFP 0U, // G_FABS 0U, // G_FCOPYSIGN 0U, // G_IS_FPCLASS 0U, // G_FCANONICALIZE 0U, // G_FMINNUM 0U, // G_FMAXNUM 0U, // G_FMINNUM_IEEE 0U, // G_FMAXNUM_IEEE 0U, // G_FMINIMUM 0U, // G_FMAXIMUM 0U, // G_PTR_ADD 0U, // G_PTRMASK 0U, // G_SMIN 0U, // G_SMAX 0U, // G_UMIN 0U, // G_UMAX 0U, // G_ABS 0U, // G_LROUND 0U, // G_LLROUND 0U, // G_BR 0U, // G_BRJT 0U, // G_INSERT_VECTOR_ELT 0U, // G_EXTRACT_VECTOR_ELT 0U, // G_SHUFFLE_VECTOR 0U, // G_CTTZ 0U, // G_CTTZ_ZERO_UNDEF 0U, // G_CTLZ 0U, // G_CTLZ_ZERO_UNDEF 0U, // G_CTPOP 0U, // G_BSWAP 0U, // G_BITREVERSE 0U, // G_FCEIL 0U, // G_FCOS 0U, // G_FSIN 0U, // G_FSQRT 0U, // G_FFLOOR 0U, // G_FRINT 0U, // G_FNEARBYINT 0U, // G_ADDRSPACE_CAST 0U, // G_BLOCK_ADDR 0U, // G_JUMP_TABLE 0U, // G_DYN_STACKALLOC 0U, // G_STRICT_FADD 0U, // G_STRICT_FSUB 0U, // G_STRICT_FMUL 0U, // G_STRICT_FDIV 0U, // G_STRICT_FREM 0U, // G_STRICT_FMA 0U, // G_STRICT_FSQRT 0U, // G_READ_REGISTER 0U, // G_WRITE_REGISTER 0U, // G_MEMCPY 0U, // G_MEMCPY_INLINE 0U, // G_MEMMOVE 0U, // G_MEMSET 0U, // G_BZERO 0U, // G_VECREDUCE_SEQ_FADD 0U, // G_VECREDUCE_SEQ_FMUL 0U, // G_VECREDUCE_FADD 0U, // G_VECREDUCE_FMUL 0U, // G_VECREDUCE_FMAX 0U, // G_VECREDUCE_FMIN 0U, // G_VECREDUCE_ADD 0U, // G_VECREDUCE_MUL 0U, // G_VECREDUCE_AND 0U, // G_VECREDUCE_OR 0U, // G_VECREDUCE_XOR 0U, // G_VECREDUCE_SMAX 0U, // G_VECREDUCE_SMIN 0U, // G_VECREDUCE_UMAX 0U, // G_VECREDUCE_UMIN 0U, // G_SBFX 0U, // G_UBFX 2049U, // ADJUSTSTACKDOWN 2060U, // ADJUSTSTACKUP 19320U, // ALTENT 0U, // CAS32 0U, // CAS64 0U, // LAS32 0U, // LAS64 35706U, // MEMLABEL 52475U, // PCLABEL 0U, // SWAP32 0U, // SWAP64 1300U, // WTF 4451U, // ADDLi 4451U, // ADDLr 4581U, // ADDQi 4581U, // ADDQr 4847U, // ADDS 4893U, // ADDT 4194U, // ANDi 4194U, // ANDr 2553U, // BEQ 2152U, // BGE 2666U, // BGT 4174U, // BICi 4174U, // BICr 4674U, // BISi 4674U, // BISr 2105U, // BLBC 2599U, // BLBS 2175U, // BLE 2688U, // BLT 2205U, // BNE 7093U, // BR 23408U, // BSR 4614U, // CMOVEQi 4614U, // CMOVEQr 4214U, // CMOVGEi 4214U, // CMOVGEr 4720U, // CMOVGTi 4720U, // CMOVGTr 4159U, // CMOVLBCi 4159U, // CMOVLBCr 4653U, // CMOVLBSi 4653U, // CMOVLBSr 4244U, // CMOVLEi 4244U, // CMOVLEr 4757U, // CMOVLTi 4757U, // CMOVLTr 4274U, // CMOVNEi 4274U, // CMOVNEr 4205U, // CMPBGE 4205U, // CMPBGEi 4606U, // CMPEQ 4606U, // CMPEQi 4228U, // CMPLE 4228U, // CMPLEi 4741U, // CMPLT 4741U, // CMPLTi 4827U, // CMPTEQ 4805U, // CMPTLE 4902U, // CMPTLT 4816U, // CMPTUN 4235U, // CMPULE 4235U, // CMPULEi 4748U, // CMPULT 4748U, // CMPULTi 35969U, // COND_BRANCH_F 52353U, // COND_BRANCH_I 4282U, // CPYSES 4282U, // CPYSESt 4282U, // CPYSET 4549U, // CPYSNS 4549U, // CPYSNSt 4549U, // CPYSNT 4549U, // CPYSNTs 4695U, // CPYSS 4695U, // CPYSSt 4695U, // CPYST 4695U, // CPYSTs 4964U, // CTLZ 4556U, // CTPOP 4970U, // CTTZ 4365U, // CVTQS 4387U, // CVTQT 4638U, // CVTST 4183U, // CVTTQ 4376U, // CVTTS 4875U, // DIVS 4932U, // DIVT 5003U, // ECB 4947U, // EQVi 4947U, // EQVr 1285U, // EXCB 4426U, // EXTBL 4426U, // EXTBLi 4309U, // EXTLH 4309U, // EXTLHi 4484U, // EXTLL 4484U, // EXTLLi 4337U, // EXTQH 4337U, // EXTQHi 4511U, // EXTQL 4511U, // EXTQLi 4358U, // EXTWH 4358U, // EXTWHi 4542U, // EXTWL 4542U, // EXTWLi 2552U, // FBEQ 2151U, // FBGE 2665U, // FBGT 2174U, // FBLE 2687U, // FBLT 2204U, // FBNE 8709U, // FCMOVEQS 8709U, // FCMOVEQT 8309U, // FCMOVGES 8309U, // FCMOVGET 8815U, // FCMOVGTS 8815U, // FCMOVGTT 8339U, // FCMOVLES 8339U, // FCMOVLET 8852U, // FCMOVLTS 8852U, // FCMOVLTT 8369U, // FCMOVNES 8369U, // FCMOVNET 5009U, // FETCH 5017U, // FETCH_M 4679U, // FTOIS 4728U, // FTOIT 4419U, // INSBL 4419U, // INSBLi 4302U, // INSLH 4302U, // INSLHi 4477U, // INSLL 4477U, // INSLLi 4330U, // INSQH 4330U, // INSQHi 4504U, // INSQL 4504U, // INSQLi 4351U, // INSWH 4351U, // INSWHi 4535U, // INSWL 4535U, // INSWLi 4667U, // ITOFS 4706U, // ITOFT 19372U, // JMP 1121U, // JSR 34978U, // JSR_COROUTINE 1105U, // JSRs 2069U, // LDA 2241U, // LDAH 51393U, // LDAHg 2241U, // LDAHr 51221U, // LDAg 2069U, // LDAr 2751U, // LDBU 2751U, // LDBUr 2417U, // LDL 2350U, // LDL_L 2417U, // LDLr 2547U, // LDQ 2357U, // LDQ_L 2737U, // LDQ_U 2547U, // LDQl 2547U, // LDQr 2614U, // LDS 2614U, // LDSr 2653U, // LDT 2653U, // LDTr 2893U, // LDWU 2893U, // LDWUr 1291U, // MB 4412U, // MSKBL 4412U, // MSKBLi 4295U, // MSKLH 4295U, // MSKLHi 4470U, // MSKLL 4470U, // MSKLLi 4323U, // MSKQH 4323U, // MSKQHi 4497U, // MSKQL 4497U, // MSKQLi 4344U, // MSKWH 4344U, // MSKWHi 4528U, // MSKWL 4528U, // MSKWLi 4491U, // MULLi 4491U, // MULLr 4622U, // MULQi 4622U, // MULQr 4856U, // MULS 4913U, // MULT 4773U, // ORNOTi 4773U, // ORNOTr 2131U, // RC 1137U, // RETDAG 1137U, // RETDAGp 2120U, // RPCC 2638U, // RS 4449U, // S4ADDLi 4449U, // S4ADDLr 4579U, // S4ADDQi 4579U, // S4ADDQr 4433U, // S4SUBLi 4433U, // S4SUBLr 4563U, // S4SUBQi 4563U, // S4SUBQr 4457U, // S8ADDLi 4457U, // S8ADDLr 4587U, // S8ADDQi 4587U, // S8ADDQr 4441U, // S8SUBLi 4441U, // S8SUBLr 4571U, // S8SUBQi 4571U, // S8SUBQr 4132U, // SEXTB 4957U, // SEXTW 4479U, // SLi 4479U, // SLr 4865U, // SQRTS 4922U, // SQRTT 4122U, // SRAi 4122U, // SRAr 4518U, // SRLi 4518U, // SRLr 2079U, // STB 2079U, // STBr 2475U, // STL 4139U, // STL_C 2475U, // STLr 2580U, // STQ 4146U, // STQ_C 2744U, // STQ_U 2580U, // STQr 2642U, // STS 2642U, // STSr 2732U, // STT 2732U, // STTr 2904U, // STW 2904U, // STWr 4435U, // SUBLi 4435U, // SUBLr 4565U, // SUBQi 4565U, // SUBQr 4838U, // SUBS 4884U, // SUBT 1294U, // TRAPB 4316U, // UMULHi 4316U, // UMULHr 4996U, // WH64 5027U, // WH64EN 1290U, // WMB 4633U, // XORi 4633U, // XORr 4765U, // ZAPNOTi }; static const uint8_t OpInfo1[] = { 0U, // PHI 0U, // INLINEASM 0U, // INLINEASM_BR 0U, // CFI_INSTRUCTION 0U, // EH_LABEL 0U, // GC_LABEL 0U, // ANNOTATION_LABEL 0U, // KILL 0U, // EXTRACT_SUBREG 0U, // INSERT_SUBREG 0U, // IMPLICIT_DEF 0U, // SUBREG_TO_REG 0U, // COPY_TO_REGCLASS 0U, // DBG_VALUE 0U, // DBG_VALUE_LIST 0U, // DBG_INSTR_REF 0U, // DBG_PHI 0U, // DBG_LABEL 0U, // REG_SEQUENCE 0U, // COPY 0U, // BUNDLE 0U, // LIFETIME_START 0U, // LIFETIME_END 0U, // PSEUDO_PROBE 0U, // ARITH_FENCE 0U, // STACKMAP 0U, // FENTRY_CALL 0U, // PATCHPOINT 0U, // LOAD_STACK_GUARD 0U, // PREALLOCATED_SETUP 0U, // PREALLOCATED_ARG 0U, // STATEPOINT 0U, // LOCAL_ESCAPE 0U, // FAULTING_OP 0U, // PATCHABLE_OP 0U, // PATCHABLE_FUNCTION_ENTER 0U, // PATCHABLE_RET 0U, // PATCHABLE_FUNCTION_EXIT 0U, // PATCHABLE_TAIL_CALL 0U, // PATCHABLE_EVENT_CALL 0U, // PATCHABLE_TYPED_EVENT_CALL 0U, // ICALL_BRANCH_FUNNEL 0U, // MEMBARRIER 0U, // G_ASSERT_SEXT 0U, // G_ASSERT_ZEXT 0U, // G_ASSERT_ALIGN 0U, // G_ADD 0U, // G_SUB 0U, // G_MUL 0U, // G_SDIV 0U, // G_UDIV 0U, // G_SREM 0U, // G_UREM 0U, // G_SDIVREM 0U, // G_UDIVREM 0U, // G_AND 0U, // G_OR 0U, // G_XOR 0U, // G_IMPLICIT_DEF 0U, // G_PHI 0U, // G_FRAME_INDEX 0U, // G_GLOBAL_VALUE 0U, // G_EXTRACT 0U, // G_UNMERGE_VALUES 0U, // G_INSERT 0U, // G_MERGE_VALUES 0U, // G_BUILD_VECTOR 0U, // G_BUILD_VECTOR_TRUNC 0U, // G_CONCAT_VECTORS 0U, // G_PTRTOINT 0U, // G_INTTOPTR 0U, // G_BITCAST 0U, // G_FREEZE 0U, // G_INTRINSIC_FPTRUNC_ROUND 0U, // G_INTRINSIC_TRUNC 0U, // G_INTRINSIC_ROUND 0U, // G_INTRINSIC_LRINT 0U, // G_INTRINSIC_ROUNDEVEN 0U, // G_READCYCLECOUNTER 0U, // G_LOAD 0U, // G_SEXTLOAD 0U, // G_ZEXTLOAD 0U, // G_INDEXED_LOAD 0U, // G_INDEXED_SEXTLOAD 0U, // G_INDEXED_ZEXTLOAD 0U, // G_STORE 0U, // G_INDEXED_STORE 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS 0U, // G_ATOMIC_CMPXCHG 0U, // G_ATOMICRMW_XCHG 0U, // G_ATOMICRMW_ADD 0U, // G_ATOMICRMW_SUB 0U, // G_ATOMICRMW_AND 0U, // G_ATOMICRMW_NAND 0U, // G_ATOMICRMW_OR 0U, // G_ATOMICRMW_XOR 0U, // G_ATOMICRMW_MAX 0U, // G_ATOMICRMW_MIN 0U, // G_ATOMICRMW_UMAX 0U, // G_ATOMICRMW_UMIN 0U, // G_ATOMICRMW_FADD 0U, // G_ATOMICRMW_FSUB 0U, // G_ATOMICRMW_FMAX 0U, // G_ATOMICRMW_FMIN 0U, // G_ATOMICRMW_UINC_WRAP 0U, // G_ATOMICRMW_UDEC_WRAP 0U, // G_FENCE 0U, // G_BRCOND 0U, // G_BRINDIRECT 0U, // G_INVOKE_REGION_START 0U, // G_INTRINSIC 0U, // G_INTRINSIC_W_SIDE_EFFECTS 0U, // G_ANYEXT 0U, // G_TRUNC 0U, // G_CONSTANT 0U, // G_FCONSTANT 0U, // G_VASTART 0U, // G_VAARG 0U, // G_SEXT 0U, // G_SEXT_INREG 0U, // G_ZEXT 0U, // G_SHL 0U, // G_LSHR 0U, // G_ASHR 0U, // G_FSHL 0U, // G_FSHR 0U, // G_ROTR 0U, // G_ROTL 0U, // G_ICMP 0U, // G_FCMP 0U, // G_SELECT 0U, // G_UADDO 0U, // G_UADDE 0U, // G_USUBO 0U, // G_USUBE 0U, // G_SADDO 0U, // G_SADDE 0U, // G_SSUBO 0U, // G_SSUBE 0U, // G_UMULO 0U, // G_SMULO 0U, // G_UMULH 0U, // G_SMULH 0U, // G_UADDSAT 0U, // G_SADDSAT 0U, // G_USUBSAT 0U, // G_SSUBSAT 0U, // G_USHLSAT 0U, // G_SSHLSAT 0U, // G_SMULFIX 0U, // G_UMULFIX 0U, // G_SMULFIXSAT 0U, // G_UMULFIXSAT 0U, // G_SDIVFIX 0U, // G_UDIVFIX 0U, // G_SDIVFIXSAT 0U, // G_UDIVFIXSAT 0U, // G_FADD 0U, // G_FSUB 0U, // G_FMUL 0U, // G_FMA 0U, // G_FMAD 0U, // G_FDIV 0U, // G_FREM 0U, // G_FPOW 0U, // G_FPOWI 0U, // G_FEXP 0U, // G_FEXP2 0U, // G_FLOG 0U, // G_FLOG2 0U, // G_FLOG10 0U, // G_FNEG 0U, // G_FPEXT 0U, // G_FPTRUNC 0U, // G_FPTOSI 0U, // G_FPTOUI 0U, // G_SITOFP 0U, // G_UITOFP 0U, // G_FABS 0U, // G_FCOPYSIGN 0U, // G_IS_FPCLASS 0U, // G_FCANONICALIZE 0U, // G_FMINNUM 0U, // G_FMAXNUM 0U, // G_FMINNUM_IEEE 0U, // G_FMAXNUM_IEEE 0U, // G_FMINIMUM 0U, // G_FMAXIMUM 0U, // G_PTR_ADD 0U, // G_PTRMASK 0U, // G_SMIN 0U, // G_SMAX 0U, // G_UMIN 0U, // G_UMAX 0U, // G_ABS 0U, // G_LROUND 0U, // G_LLROUND 0U, // G_BR 0U, // G_BRJT 0U, // G_INSERT_VECTOR_ELT 0U, // G_EXTRACT_VECTOR_ELT 0U, // G_SHUFFLE_VECTOR 0U, // G_CTTZ 0U, // G_CTTZ_ZERO_UNDEF 0U, // G_CTLZ 0U, // G_CTLZ_ZERO_UNDEF 0U, // G_CTPOP 0U, // G_BSWAP 0U, // G_BITREVERSE 0U, // G_FCEIL 0U, // G_FCOS 0U, // G_FSIN 0U, // G_FSQRT 0U, // G_FFLOOR 0U, // G_FRINT 0U, // G_FNEARBYINT 0U, // G_ADDRSPACE_CAST 0U, // G_BLOCK_ADDR 0U, // G_JUMP_TABLE 0U, // G_DYN_STACKALLOC 0U, // G_STRICT_FADD 0U, // G_STRICT_FSUB 0U, // G_STRICT_FMUL 0U, // G_STRICT_FDIV 0U, // G_STRICT_FREM 0U, // G_STRICT_FMA 0U, // G_STRICT_FSQRT 0U, // G_READ_REGISTER 0U, // G_WRITE_REGISTER 0U, // G_MEMCPY 0U, // G_MEMCPY_INLINE 0U, // G_MEMMOVE 0U, // G_MEMSET 0U, // G_BZERO 0U, // G_VECREDUCE_SEQ_FADD 0U, // G_VECREDUCE_SEQ_FMUL 0U, // G_VECREDUCE_FADD 0U, // G_VECREDUCE_FMUL 0U, // G_VECREDUCE_FMAX 0U, // G_VECREDUCE_FMIN 0U, // G_VECREDUCE_ADD 0U, // G_VECREDUCE_MUL 0U, // G_VECREDUCE_AND 0U, // G_VECREDUCE_OR 0U, // G_VECREDUCE_XOR 0U, // G_VECREDUCE_SMAX 0U, // G_VECREDUCE_SMIN 0U, // G_VECREDUCE_UMAX 0U, // G_VECREDUCE_UMIN 0U, // G_SBFX 0U, // G_UBFX 0U, // ADJUSTSTACKDOWN 0U, // ADJUSTSTACKUP 0U, // ALTENT 0U, // CAS32 0U, // CAS64 0U, // LAS32 0U, // LAS64 0U, // MEMLABEL 0U, // PCLABEL 0U, // SWAP32 0U, // SWAP64 0U, // WTF 1U, // ADDLi 1U, // ADDLr 1U, // ADDQi 1U, // ADDQr 1U, // ADDS 1U, // ADDT 1U, // ANDi 1U, // ANDr 5U, // BEQ 5U, // BGE 5U, // BGT 1U, // BICi 1U, // BICr 1U, // BISi 1U, // BISr 5U, // BLBC 5U, // BLBS 5U, // BLE 5U, // BLT 5U, // BNE 0U, // BR 1U, // BSR 1U, // CMOVEQi 1U, // CMOVEQr 1U, // CMOVGEi 1U, // CMOVGEr 1U, // CMOVGTi 1U, // CMOVGTr 1U, // CMOVLBCi 1U, // CMOVLBCr 1U, // CMOVLBSi 1U, // CMOVLBSr 1U, // CMOVLEi 1U, // CMOVLEr 1U, // CMOVLTi 1U, // CMOVLTr 1U, // CMOVNEi 1U, // CMOVNEr 1U, // CMPBGE 1U, // CMPBGEi 1U, // CMPEQ 1U, // CMPEQi 1U, // CMPLE 1U, // CMPLEi 1U, // CMPLT 1U, // CMPLTi 1U, // CMPTEQ 1U, // CMPTLE 1U, // CMPTLT 1U, // CMPTUN 1U, // CMPULE 1U, // CMPULEi 1U, // CMPULT 1U, // CMPULTi 1U, // COND_BRANCH_F 1U, // COND_BRANCH_I 1U, // CPYSES 1U, // CPYSESt 1U, // CPYSET 1U, // CPYSNS 1U, // CPYSNSt 1U, // CPYSNT 1U, // CPYSNTs 1U, // CPYSS 1U, // CPYSSt 1U, // CPYST 1U, // CPYSTs 9U, // CTLZ 9U, // CTPOP 9U, // CTTZ 9U, // CVTQS 9U, // CVTQT 9U, // CVTST 9U, // CVTTQ 9U, // CVTTS 1U, // DIVS 1U, // DIVT 2U, // ECB 1U, // EQVi 1U, // EQVr 0U, // EXCB 1U, // EXTBL 1U, // EXTBLi 1U, // EXTLH 1U, // EXTLHi 1U, // EXTLL 1U, // EXTLLi 1U, // EXTQH 1U, // EXTQHi 1U, // EXTQL 1U, // EXTQLi 1U, // EXTWH 1U, // EXTWHi 1U, // EXTWL 1U, // EXTWLi 5U, // FBEQ 5U, // FBGE 5U, // FBGT 5U, // FBLE 5U, // FBLT 5U, // FBNE 0U, // FCMOVEQS 0U, // FCMOVEQT 0U, // FCMOVGES 0U, // FCMOVGET 0U, // FCMOVGTS 0U, // FCMOVGTT 0U, // FCMOVLES 0U, // FCMOVLET 0U, // FCMOVLTS 0U, // FCMOVLTT 0U, // FCMOVNES 0U, // FCMOVNET 2U, // FETCH 2U, // FETCH_M 9U, // FTOIS 9U, // FTOIT 1U, // INSBL 1U, // INSBLi 1U, // INSLH 1U, // INSLHi 1U, // INSLL 1U, // INSLLi 1U, // INSQH 1U, // INSQHi 1U, // INSQL 1U, // INSQLi 1U, // INSWH 1U, // INSWHi 1U, // INSWL 1U, // INSWLi 9U, // ITOFS 9U, // ITOFT 2U, // JMP 0U, // JSR 2U, // JSR_COROUTINE 0U, // JSRs 29U, // LDA 29U, // LDAH 2U, // LDAHg 45U, // LDAHr 2U, // LDAg 61U, // LDAr 29U, // LDBU 61U, // LDBUr 29U, // LDL 29U, // LDL_L 61U, // LDLr 29U, // LDQ 29U, // LDQ_L 29U, // LDQ_U 77U, // LDQl 61U, // LDQr 29U, // LDS 61U, // LDSr 29U, // LDT 61U, // LDTr 29U, // LDWU 61U, // LDWUr 0U, // MB 1U, // MSKBL 1U, // MSKBLi 1U, // MSKLH 1U, // MSKLHi 1U, // MSKLL 1U, // MSKLLi 1U, // MSKQH 1U, // MSKQHi 1U, // MSKQL 1U, // MSKQLi 1U, // MSKWH 1U, // MSKWHi 1U, // MSKWL 1U, // MSKWLi 1U, // MULLi 1U, // MULLr 1U, // MULQi 1U, // MULQr 1U, // MULS 1U, // MULT 1U, // ORNOTi 1U, // ORNOTr 0U, // RC 0U, // RETDAG 0U, // RETDAGp 0U, // RPCC 0U, // RS 1U, // S4ADDLi 1U, // S4ADDLr 1U, // S4ADDQi 1U, // S4ADDQr 1U, // S4SUBLi 1U, // S4SUBLr 1U, // S4SUBQi 1U, // S4SUBQr 1U, // S8ADDLi 1U, // S8ADDLr 1U, // S8ADDQi 1U, // S8ADDQr 1U, // S8SUBLi 1U, // S8SUBLr 1U, // S8SUBQi 1U, // S8SUBQr 9U, // SEXTB 9U, // SEXTW 1U, // SLi 1U, // SLr 9U, // SQRTS 9U, // SQRTT 1U, // SRAi 1U, // SRAr 1U, // SRLi 1U, // SRLr 3U, // STB 61U, // STBr 29U, // STL 81U, // STL_C 61U, // STLr 29U, // STQ 81U, // STQ_C 3U, // STQ_U 61U, // STQr 29U, // STS 61U, // STSr 29U, // STT 61U, // STTr 29U, // STW 61U, // STWr 1U, // SUBLi 1U, // SUBLr 1U, // SUBQi 1U, // SUBQr 1U, // SUBS 1U, // SUBT 0U, // TRAPB 1U, // UMULHi 1U, // UMULHr 2U, // WH64 2U, // WH64EN 0U, // WMB 1U, // XORi 1U, // XORr 1U, // ZAPNOTi }; // Emit the opcode for the instruction. uint32_t Bits = 0; Bits |= OpInfo0[MCInst_getOpcode(MI)] << 0; Bits |= OpInfo1[MCInst_getOpcode(MI)] << 16; MnemonicBitsInfo MBI = { #ifndef CAPSTONE_DIET AsmStrs+(Bits & 2047)-1, #else NULL, #endif // CAPSTONE_DIET Bits }; return MBI; } /// printInstruction - This method is automatically generated by tablegen /// from the instruction set description. static void printInstruction(MCInst *MI, uint64_t Address, SStream *O) { SStream_concat0(O, ""); MnemonicBitsInfo MnemonicInfo = getMnemonic(MI, O); SStream_concat0(O, MnemonicInfo.first); uint32_t Bits = MnemonicInfo.second; assert(Bits != 0 && "Cannot print this instruction."); // Fragment 0 encoded into 3 bits for 5 unique commands. switch ((uint32_t)((Bits >> 11) & 7)) { default: assert(0 && "Invalid command number."); case 0: // DBG_VALUE, DBG_VALUE_LIST, DBG_INSTR_REF, DBG_PHI, DBG_LABEL, BUNDLE, ... return; break; case 1: // ADJUSTSTACKDOWN, ADJUSTSTACKUP, ALTENT, MEMLABEL, PCLABEL, BEQ, BGE, B... printOperand(MI, 0, O); break; case 2: // ADDLi, ADDLr, ADDQi, ADDQr, ADDS, ADDT, ANDi, ANDr, BICi, BICr, BISi, ... printOperand(MI, 1, O); break; case 3: // BR, BSR printOperandAddr(MI, Address, 0, O); break; case 4: // FCMOVEQS, FCMOVEQT, FCMOVGES, FCMOVGET, FCMOVGTS, FCMOVGTT, FCMOVLES, ... printOperand(MI, 3, O); SStream_concat1(O, ','); printOperand(MI, 2, O); SStream_concat1(O, ','); printOperand(MI, 0, O); return; break; } // Fragment 1 encoded into 4 bits for 13 unique commands. switch ((uint32_t)((Bits >> 14) & 15)) { default: assert(0 && "Invalid command number."); case 0: // ADJUSTSTACKDOWN, ADJUSTSTACKUP, BR, RC, RPCC, RS return; break; case 1: // ALTENT SStream_concat0(O, "..ng:\n"); return; break; case 2: // MEMLABEL SStream_concat1(O, '$'); printOperand(MI, 1, O); SStream_concat1(O, '$'); printOperand(MI, 2, O); SStream_concat1(O, '$'); printOperand(MI, 3, O); SStream_concat1(O, ':'); return; break; case 3: // PCLABEL SStream_concat0(O, ":\n"); return; break; case 4: // ADDLi, ADDLr, ADDQi, ADDQr, ADDS, ADDT, ANDi, ANDr, BEQ, BGE, BGT, BIC... SStream_concat1(O, ','); break; case 5: // BSR SStream_concat0(O, " ..ng"); return; break; case 6: // COND_BRANCH_F SStream_concat0(O, ", F8RC:"); printOperand(MI, 1, O); SStream_concat0(O, ", bb:"); printOperandAddr(MI, Address, 2, O); return; break; case 7: // COND_BRANCH_I SStream_concat0(O, ", GPRC:"); printOperand(MI, 1, O); SStream_concat0(O, ", bb:"); printOperandAddr(MI, Address, 2, O); return; break; case 8: // ECB, FETCH, FETCH_M, WH64, WH64EN SStream_concat1(O, ')'); return; break; case 9: // JMP SStream_concat0(O, ",0"); return; break; case 10: // JSR_COROUTINE SStream_concat0(O, ",("); printOperand(MI, 1, O); SStream_concat0(O, "),"); printOperand(MI, 2, O); return; break; case 11: // LDAHg, LDAg SStream_concat0(O, ",0("); printOperand(MI, 2, O); SStream_concat0(O, ")\t\t!gpdisp!"); printOperand(MI, 3, O); return; break; case 12: // STB, STQ_U SStream_concat0(O, ", "); printOperand(MI, 1, O); SStream_concat1(O, '('); printOperand(MI, 2, O); SStream_concat1(O, ')'); return; break; } // Fragment 2 encoded into 2 bits for 4 unique commands. switch ((uint32_t)((Bits >> 18) & 3)) { default: assert(0 && "Invalid command number."); case 0: // ADDLi, ADDLr, ADDQi, ADDQr, ADDS, ADDT, ANDi, ANDr, BICi, BICr, BISi, ... printOperand(MI, 2, O); break; case 1: // BEQ, BGE, BGT, BLBC, BLBS, BLE, BLT, BNE, FBEQ, FBGE, FBGT, FBLE, FBLT... printOperandAddr(MI, Address, 1, O); return; break; case 2: // CTLZ, CTPOP, CTTZ, CVTQS, CVTQT, CVTST, CVTTQ, CVTTS, FTOIS, FTOIT, IT... printOperand(MI, 0, O); return; break; case 3: // LDA, LDAH, LDAHr, LDAr, LDBU, LDBUr, LDL, LDL_L, LDLr, LDQ, LDQ_L, LDQ... printOperand(MI, 1, O); SStream_concat1(O, '('); printOperand(MI, 2, O); break; } // Fragment 3 encoded into 3 bits for 6 unique commands. switch ((uint32_t)((Bits >> 20) & 7)) { default: assert(0 && "Invalid command number."); case 0: // ADDLi, ADDLr, ADDQi, ADDQr, ADDS, ADDT, ANDi, ANDr, BICi, BICr, BISi, ... SStream_concat1(O, ','); printOperand(MI, 0, O); return; break; case 1: // LDA, LDAH, LDBU, LDL, LDL_L, LDQ, LDQ_L, LDQ_U, LDS, LDT, LDWU, STL, S... SStream_concat1(O, ')'); return; break; case 2: // LDAHr SStream_concat0(O, ")\t\t!gprelhigh"); return; break; case 3: // LDAr, LDBUr, LDLr, LDQr, LDSr, LDTr, LDWUr, STBr, STLr, STQr, STSr, ST... SStream_concat0(O, ")\t\t!gprellow"); return; break; case 4: // LDQl SStream_concat0(O, ")\t\t!literal"); return; break; case 5: // STL_C, STQ_C SStream_concat1(O, '('); printOperand(MI, 3, O); SStream_concat1(O, ')'); return; break; } } /// getRegisterName - This method is automatically generated by tblgen /// from the register set description. This returns the assembler name /// for the specified register. static const char *getRegisterName(unsigned RegNo) { #ifndef CAPSTONE_DIET assert(RegNo && RegNo < 65 && "Invalid register number!"); static const char AsmStrs[] = { /* 0 */ "$0\0" /* 3 */ "$10\0" /* 7 */ "$f10\0" /* 12 */ "$20\0" /* 16 */ "$f20\0" /* 21 */ "$30\0" /* 25 */ "$f30\0" /* 30 */ "$f0\0" /* 34 */ "$1\0" /* 37 */ "$11\0" /* 41 */ "$f11\0" /* 46 */ "$21\0" /* 50 */ "$f21\0" /* 55 */ "$31\0" /* 59 */ "$f31\0" /* 64 */ "$f1\0" /* 68 */ "$2\0" /* 71 */ "$12\0" /* 75 */ "$f12\0" /* 80 */ "$22\0" /* 84 */ "$f22\0" /* 89 */ "$f2\0" /* 93 */ "$3\0" /* 96 */ "$13\0" /* 100 */ "$f13\0" /* 105 */ "$23\0" /* 109 */ "$f23\0" /* 114 */ "$f3\0" /* 118 */ "$4\0" /* 121 */ "$14\0" /* 125 */ "$f14\0" /* 130 */ "$24\0" /* 134 */ "$f24\0" /* 139 */ "$f4\0" /* 143 */ "$5\0" /* 146 */ "$15\0" /* 150 */ "$f15\0" /* 155 */ "$25\0" /* 159 */ "$f25\0" /* 164 */ "$f5\0" /* 168 */ "$6\0" /* 171 */ "$16\0" /* 175 */ "$f16\0" /* 180 */ "$26\0" /* 184 */ "$f26\0" /* 189 */ "$f6\0" /* 193 */ "$7\0" /* 196 */ "$17\0" /* 200 */ "$f17\0" /* 205 */ "$27\0" /* 209 */ "$f27\0" /* 214 */ "$f7\0" /* 218 */ "$8\0" /* 221 */ "$18\0" /* 225 */ "$f18\0" /* 230 */ "$28\0" /* 234 */ "$f28\0" /* 239 */ "$f8\0" /* 243 */ "$9\0" /* 246 */ "$19\0" /* 250 */ "$f19\0" /* 255 */ "$29\0" /* 259 */ "$f29\0" /* 264 */ "$f9\0" }; static const uint16_t RegAsmOffset[] = { 30, 64, 89, 114, 139, 164, 189, 214, 239, 264, 7, 41, 75, 100, 125, 150, 175, 200, 225, 250, 16, 50, 84, 109, 134, 159, 184, 209, 234, 259, 25, 59, 0, 34, 68, 93, 118, 143, 168, 193, 218, 243, 3, 37, 71, 96, 121, 146, 171, 196, 221, 246, 12, 46, 80, 105, 130, 155, 180, 205, 230, 255, 21, 55, }; assert (*(AsmStrs+RegAsmOffset[RegNo-1]) && "Invalid alt name index for register!"); return AsmStrs+RegAsmOffset[RegNo-1]; #else return NULL; #endif // CAPSTONE_DIET } #ifdef PRINT_ALIAS_INSTR #undef PRINT_ALIAS_INSTR static bool printAliasInstr(MCInst *MI, uint64_t Address, SStream *OS) { return false; } #endif // PRINT_ALIAS_INSTR