XenonRecomp/thirdparty/capstone/arch/Alpha/AlphaGenAsmWriter.inc
2024-09-07 18:15:29 +06:00

1508 lines
33 KiB
PHP

/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2022, */
/* Rot127 <unisono@quyllur.org> 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 <capstone/platform.h>
#include <assert.h>
/// 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