LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/Lanai - LanaiGenAsmWriter.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 167 190 87.9 %
Date: 2018-07-13 00:08:38 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Assembly Writer Source Fragment                                            *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : /// printInstruction - This method is automatically generated by tablegen
      10             : /// from the instruction set description.
      11        1389 : void LanaiInstPrinter::printInstruction(const MCInst *MI, raw_ostream &O) {
      12             :   static const char AsmStrs[] = {
      13             :   /* 0 */ 's', 'h', 'a', 9, 0,
      14             :   /* 5 */ 'u', 'l', 'd', '.', 'b', 9, 0,
      15             :   /* 12 */ 's', 't', '.', 'b', 9, 0,
      16             :   /* 18 */ 's', 'u', 'b', 'b', 9, 0,
      17             :   /* 24 */ 's', 'u', 'b', 9, 0,
      18             :   /* 29 */ 'a', 'd', 'd', 'c', 9, 0,
      19             :   /* 35 */ 'p', 'o', 'p', 'c', 9, 0,
      20             :   /* 41 */ 'a', 'd', 'd', 9, 0,
      21             :   /* 46 */ 'u', 'l', 'd', 9, 0,
      22             :   /* 51 */ 'a', 'n', 'd', 9, 0,
      23             :   /* 56 */ 's', 'h', 'a', '.', 'f', 9, 0,
      24             :   /* 63 */ 's', 'u', 'b', 'b', '.', 'f', 9, 0,
      25             :   /* 71 */ 's', 'u', 'b', '.', 'f', 9, 0,
      26             :   /* 78 */ 'a', 'd', 'd', 'c', '.', 'f', 9, 0,
      27             :   /* 86 */ 'a', 'd', 'd', '.', 'f', 9, 0,
      28             :   /* 93 */ 'a', 'n', 'd', '.', 'f', 9, 0,
      29             :   /* 100 */ 's', 'h', '.', 'f', 9, 0,
      30             :   /* 106 */ 'x', 'o', 'r', '.', 'f', 9, 0,
      31             :   /* 113 */ 'u', 'l', 'd', '.', 'h', 9, 0,
      32             :   /* 120 */ 's', 't', '.', 'h', 9, 0,
      33             :   /* 126 */ 's', 'h', 9, 0,
      34             :   /* 130 */ 'x', 'o', 'r', 9, 0,
      35             :   /* 135 */ 'b', 't', 9, 0,
      36             :   /* 139 */ 's', 't', 9, 0,
      37             :   /* 143 */ 'm', 'o', 'v', 9, 0,
      38             :   /* 148 */ 'l', 'e', 'a', 'd', 'z', 9, 0,
      39             :   /* 155 */ 't', 'r', 'a', 'i', 'l', 'z', 9, 0,
      40             :   /* 163 */ '#', 'A', 'D', 'J', 'D', 'Y', 'N', 'A', 'L', 'L', 'O', 'C', 32, 0,
      41             :   /* 177 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 32, 0,
      42             :   /* 196 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 32, 0,
      43             :   /* 213 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'P', 'a', 't', 'c', 'h', 'a', 'b', 'l', 'e', 32, 'R', 'E', 'T', '.', 0,
      44             :   /* 244 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
      45             :   /* 268 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
      46             :   /* 293 */ 's', 'e', 'l', '.', 0,
      47             :   /* 298 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
      48             :   /* 321 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
      49             :   /* 344 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
      50             :   /* 366 */ 'l', 'o', 'g', '_', '0', 0,
      51             :   /* 372 */ 'l', 'o', 'g', '_', '1', 0,
      52             :   /* 378 */ 'l', 'o', 'g', '_', '2', 0,
      53             :   /* 384 */ 'l', 'o', 'g', '_', '3', 0,
      54             :   /* 390 */ 'l', 'o', 'g', '_', '4', 0,
      55             :   /* 396 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
      56             :   /* 409 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
      57             :   /* 416 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
      58             :   /* 426 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
      59             :   /* 436 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
      60             :   /* 451 */ 's', 'h', 'a', 0,
      61             :   /* 455 */ 's', 'u', 'b', 'b', 0,
      62             :   /* 460 */ 's', 'u', 'b', 0,
      63             :   /* 464 */ 'a', 'd', 'd', 'c', 0,
      64             :   /* 469 */ 'a', 'd', 'd', 0,
      65             :   /* 473 */ 'a', 'n', 'd', 0,
      66             :   /* 477 */ 's', 'h', 'a', '.', 'f', 0,
      67             :   /* 483 */ 's', 'u', 'b', 'b', '.', 'f', 0,
      68             :   /* 490 */ 's', 'u', 'b', '.', 'f', 0,
      69             :   /* 496 */ 'a', 'd', 'd', 'c', '.', 'f', 0,
      70             :   /* 503 */ 'a', 'd', 'd', '.', 'f', 0,
      71             :   /* 509 */ 'a', 'n', 'd', '.', 'f', 0,
      72             :   /* 515 */ 's', 'h', '.', 'f', 0,
      73             :   /* 520 */ 'x', 'o', 'r', '.', 'f', 0,
      74             :   /* 526 */ 's', 'h', 0,
      75             :   /* 529 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
      76             :   /* 543 */ 'l', 'd', 9, '-', '4', '[', '%', 'f', 'p', ']', ',', 32, '%', 'p', 'c', 32, '!', 32, 'r', 'e', 't', 'u', 'r', 'n', 0,
      77             :   /* 568 */ 'n', 'o', 'p', 0,
      78             :   /* 572 */ 'x', 'o', 'r', 0,
      79             :   /* 576 */ 's', 0,
      80             :   };
      81             : 
      82             :   static const uint16_t OpInfo0[] = {
      83             :     0U, // PHI
      84             :     0U, // INLINEASM
      85             :     0U, // CFI_INSTRUCTION
      86             :     0U, // EH_LABEL
      87             :     0U, // GC_LABEL
      88             :     0U, // ANNOTATION_LABEL
      89             :     0U, // KILL
      90             :     0U, // EXTRACT_SUBREG
      91             :     0U, // INSERT_SUBREG
      92             :     0U, // IMPLICIT_DEF
      93             :     0U, // SUBREG_TO_REG
      94             :     0U, // COPY_TO_REGCLASS
      95             :     417U,       // DBG_VALUE
      96             :     427U,       // DBG_LABEL
      97             :     0U, // REG_SEQUENCE
      98             :     0U, // COPY
      99             :     410U,       // BUNDLE
     100             :     437U,       // LIFETIME_START
     101             :     397U,       // LIFETIME_END
     102             :     0U, // STACKMAP
     103             :     530U,       // FENTRY_CALL
     104             :     0U, // PATCHPOINT
     105             :     0U, // LOAD_STACK_GUARD
     106             :     0U, // STATEPOINT
     107             :     0U, // LOCAL_ESCAPE
     108             :     0U, // FAULTING_OP
     109             :     0U, // PATCHABLE_OP
     110             :     299U,       // PATCHABLE_FUNCTION_ENTER
     111             :     214U,       // PATCHABLE_RET
     112             :     345U,       // PATCHABLE_FUNCTION_EXIT
     113             :     322U,       // PATCHABLE_TAIL_CALL
     114             :     269U,       // PATCHABLE_EVENT_CALL
     115             :     245U,       // PATCHABLE_TYPED_EVENT_CALL
     116             :     0U, // ICALL_BRANCH_FUNNEL
     117             :     0U, // G_ADD
     118             :     0U, // G_SUB
     119             :     0U, // G_MUL
     120             :     0U, // G_SDIV
     121             :     0U, // G_UDIV
     122             :     0U, // G_SREM
     123             :     0U, // G_UREM
     124             :     0U, // G_AND
     125             :     0U, // G_OR
     126             :     0U, // G_XOR
     127             :     0U, // G_IMPLICIT_DEF
     128             :     0U, // G_PHI
     129             :     0U, // G_FRAME_INDEX
     130             :     0U, // G_GLOBAL_VALUE
     131             :     0U, // G_EXTRACT
     132             :     0U, // G_UNMERGE_VALUES
     133             :     0U, // G_INSERT
     134             :     0U, // G_MERGE_VALUES
     135             :     0U, // G_PTRTOINT
     136             :     0U, // G_INTTOPTR
     137             :     0U, // G_BITCAST
     138             :     0U, // G_LOAD
     139             :     0U, // G_SEXTLOAD
     140             :     0U, // G_ZEXTLOAD
     141             :     0U, // G_STORE
     142             :     0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
     143             :     0U, // G_ATOMIC_CMPXCHG
     144             :     0U, // G_ATOMICRMW_XCHG
     145             :     0U, // G_ATOMICRMW_ADD
     146             :     0U, // G_ATOMICRMW_SUB
     147             :     0U, // G_ATOMICRMW_AND
     148             :     0U, // G_ATOMICRMW_NAND
     149             :     0U, // G_ATOMICRMW_OR
     150             :     0U, // G_ATOMICRMW_XOR
     151             :     0U, // G_ATOMICRMW_MAX
     152             :     0U, // G_ATOMICRMW_MIN
     153             :     0U, // G_ATOMICRMW_UMAX
     154             :     0U, // G_ATOMICRMW_UMIN
     155             :     0U, // G_BRCOND
     156             :     0U, // G_BRINDIRECT
     157             :     0U, // G_INTRINSIC
     158             :     0U, // G_INTRINSIC_W_SIDE_EFFECTS
     159             :     0U, // G_ANYEXT
     160             :     0U, // G_TRUNC
     161             :     0U, // G_CONSTANT
     162             :     0U, // G_FCONSTANT
     163             :     0U, // G_VASTART
     164             :     0U, // G_VAARG
     165             :     0U, // G_SEXT
     166             :     0U, // G_ZEXT
     167             :     0U, // G_SHL
     168             :     0U, // G_LSHR
     169             :     0U, // G_ASHR
     170             :     0U, // G_ICMP
     171             :     0U, // G_FCMP
     172             :     0U, // G_SELECT
     173             :     0U, // G_UADDE
     174             :     0U, // G_USUBE
     175             :     0U, // G_SADDO
     176             :     0U, // G_SSUBO
     177             :     0U, // G_UMULO
     178             :     0U, // G_SMULO
     179             :     0U, // G_UMULH
     180             :     0U, // G_SMULH
     181             :     0U, // G_FADD
     182             :     0U, // G_FSUB
     183             :     0U, // G_FMUL
     184             :     0U, // G_FMA
     185             :     0U, // G_FDIV
     186             :     0U, // G_FREM
     187             :     0U, // G_FPOW
     188             :     0U, // G_FEXP
     189             :     0U, // G_FEXP2
     190             :     0U, // G_FLOG
     191             :     0U, // G_FLOG2
     192             :     0U, // G_FNEG
     193             :     0U, // G_FPEXT
     194             :     0U, // G_FPTRUNC
     195             :     0U, // G_FPTOSI
     196             :     0U, // G_FPTOUI
     197             :     0U, // G_SITOFP
     198             :     0U, // G_UITOFP
     199             :     0U, // G_FABS
     200             :     0U, // G_GEP
     201             :     0U, // G_PTR_MASK
     202             :     0U, // G_BR
     203             :     0U, // G_INSERT_VECTOR_ELT
     204             :     0U, // G_EXTRACT_VECTOR_ELT
     205             :     0U, // G_SHUFFLE_VECTOR
     206             :     0U, // G_BSWAP
     207             :     0U, // G_ADDRSPACE_CAST
     208             :     1202U,      // ADJCALLSTACKDOWN
     209             :     1221U,      // ADJCALLSTACKUP
     210             :     1188U,      // ADJDYNALLOC
     211             :     0U, // CALL
     212             :     0U, // CALLR
     213             :     18511U,     // ADDC_F_I_HI
     214             :     34895U,     // ADDC_F_I_LO
     215             :     3569U,      // ADDC_F_R
     216             :     18462U,     // ADDC_I_HI
     217             :     34846U,     // ADDC_I_LO
     218             :     3537U,      // ADDC_R
     219             :     18519U,     // ADD_F_I_HI
     220             :     34903U,     // ADD_F_I_LO
     221             :     3576U,      // ADD_F_R
     222             :     18474U,     // ADD_I_HI
     223             :     34858U,     // ADD_I_LO
     224             :     3542U,      // ADD_R
     225             :     51294U,     // AND_F_I_HI
     226             :     2142U,      // AND_F_I_LO
     227             :     3582U,      // AND_F_R
     228             :     51252U,     // AND_I_HI
     229             :     2100U,      // AND_I_LO
     230             :     3546U,      // AND_R
     231             :     20939U,     // BRCC
     232             :     20939U,     // BRIND_CC
     233             :     5579U,      // BRIND_CCA
     234             :     37323U,     // BRR
     235             :     50312U,     // BT
     236             :     50312U,     // JR
     237             :     6192U,      // LDADDR
     238             :     7175U,      // LDBs_RI
     239             :     8199U,      // LDBs_RR
     240             :     7174U,      // LDBz_RI
     241             :     8198U,      // LDBz_RR
     242             :     7283U,      // LDHs_RI
     243             :     8307U,      // LDHs_RR
     244             :     7282U,      // LDHz_RI
     245             :     8306U,      // LDHz_RR
     246             :     9263U,      // LDW_RI
     247             :     8240U,      // LDW_RR
     248             :     8239U,      // LDWz_RR
     249             :     2197U,      // LEADZ
     250             :     367U,       // LOG0
     251             :     373U,       // LOG1
     252             :     379U,       // LOG2
     253             :     385U,       // LOG3
     254             :     391U,       // LOG4
     255             :     10384U,     // MOVHI
     256             :     569U,       // NOP
     257             :     18540U,     // OR_F_I_HI
     258             :     34924U,     // OR_F_I_LO
     259             :     3594U,      // OR_F_R
     260             :     18564U,     // OR_I_HI
     261             :     34948U,     // OR_I_LO
     262             :     3646U,      // OR_R
     263             :     2084U,      // POPC
     264             :     544U,       // RET
     265             :     34873U,     // SA_F_I
     266             :     34817U,     // SA_I
     267             :     21057U,     // SCC
     268             :     11558U,     // SELECT
     269             :     17480U,     // SFSUB_F_RI_HI
     270             :     17480U,     // SFSUB_F_RI_LO
     271             :     17480U,     // SFSUB_F_RR
     272             :     3588U,      // SHL_F_R
     273             :     3599U,      // SHL_R
     274             :     2192U,      // SLI
     275             :     34917U,     // SL_F_I
     276             :     34943U,     // SL_I
     277             :     3550U,      // SRA_F_R
     278             :     3524U,      // SRA_R
     279             :     3588U,      // SRL_F_R
     280             :     3599U,      // SRL_R
     281             :     17548U,     // STADDR
     282             :     17421U,     // STB_RI
     283             :     17421U,     // STB_RR
     284             :     17529U,     // STH_RI
     285             :     17529U,     // STH_RR
     286             :     18496U,     // SUBB_F_I_HI
     287             :     34880U,     // SUBB_F_I_LO
     288             :     3556U,      // SUBB_F_R
     289             :     18451U,     // SUBB_I_HI
     290             :     34835U,     // SUBB_I_LO
     291             :     3528U,      // SUBB_R
     292             :     18504U,     // SUB_F_I_HI
     293             :     34888U,     // SUB_F_I_LO
     294             :     3563U,      // SUB_F_R
     295             :     18457U,     // SUB_I_HI
     296             :     34841U,     // SUB_I_LO
     297             :     3533U,      // SUB_R
     298             :     17548U,     // SW_RI
     299             :     17548U,     // SW_RR
     300             :     2204U,      // TRAILZ
     301             :     18539U,     // XOR_F_I_HI
     302             :     34923U,     // XOR_F_I_LO
     303             :     3593U,      // XOR_F_R
     304             :     18563U,     // XOR_I_HI
     305             :     34947U,     // XOR_I_LO
     306             :     3645U,      // XOR_R
     307             :   };
     308             : 
     309             :   static const uint8_t OpInfo1[] = {
     310             :     0U, // PHI
     311             :     0U, // INLINEASM
     312             :     0U, // CFI_INSTRUCTION
     313             :     0U, // EH_LABEL
     314             :     0U, // GC_LABEL
     315             :     0U, // ANNOTATION_LABEL
     316             :     0U, // KILL
     317             :     0U, // EXTRACT_SUBREG
     318             :     0U, // INSERT_SUBREG
     319             :     0U, // IMPLICIT_DEF
     320             :     0U, // SUBREG_TO_REG
     321             :     0U, // COPY_TO_REGCLASS
     322             :     0U, // DBG_VALUE
     323             :     0U, // DBG_LABEL
     324             :     0U, // REG_SEQUENCE
     325             :     0U, // COPY
     326             :     0U, // BUNDLE
     327             :     0U, // LIFETIME_START
     328             :     0U, // LIFETIME_END
     329             :     0U, // STACKMAP
     330             :     0U, // FENTRY_CALL
     331             :     0U, // PATCHPOINT
     332             :     0U, // LOAD_STACK_GUARD
     333             :     0U, // STATEPOINT
     334             :     0U, // LOCAL_ESCAPE
     335             :     0U, // FAULTING_OP
     336             :     0U, // PATCHABLE_OP
     337             :     0U, // PATCHABLE_FUNCTION_ENTER
     338             :     0U, // PATCHABLE_RET
     339             :     0U, // PATCHABLE_FUNCTION_EXIT
     340             :     0U, // PATCHABLE_TAIL_CALL
     341             :     0U, // PATCHABLE_EVENT_CALL
     342             :     0U, // PATCHABLE_TYPED_EVENT_CALL
     343             :     0U, // ICALL_BRANCH_FUNNEL
     344             :     0U, // G_ADD
     345             :     0U, // G_SUB
     346             :     0U, // G_MUL
     347             :     0U, // G_SDIV
     348             :     0U, // G_UDIV
     349             :     0U, // G_SREM
     350             :     0U, // G_UREM
     351             :     0U, // G_AND
     352             :     0U, // G_OR
     353             :     0U, // G_XOR
     354             :     0U, // G_IMPLICIT_DEF
     355             :     0U, // G_PHI
     356             :     0U, // G_FRAME_INDEX
     357             :     0U, // G_GLOBAL_VALUE
     358             :     0U, // G_EXTRACT
     359             :     0U, // G_UNMERGE_VALUES
     360             :     0U, // G_INSERT
     361             :     0U, // G_MERGE_VALUES
     362             :     0U, // G_PTRTOINT
     363             :     0U, // G_INTTOPTR
     364             :     0U, // G_BITCAST
     365             :     0U, // G_LOAD
     366             :     0U, // G_SEXTLOAD
     367             :     0U, // G_ZEXTLOAD
     368             :     0U, // G_STORE
     369             :     0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
     370             :     0U, // G_ATOMIC_CMPXCHG
     371             :     0U, // G_ATOMICRMW_XCHG
     372             :     0U, // G_ATOMICRMW_ADD
     373             :     0U, // G_ATOMICRMW_SUB
     374             :     0U, // G_ATOMICRMW_AND
     375             :     0U, // G_ATOMICRMW_NAND
     376             :     0U, // G_ATOMICRMW_OR
     377             :     0U, // G_ATOMICRMW_XOR
     378             :     0U, // G_ATOMICRMW_MAX
     379             :     0U, // G_ATOMICRMW_MIN
     380             :     0U, // G_ATOMICRMW_UMAX
     381             :     0U, // G_ATOMICRMW_UMIN
     382             :     0U, // G_BRCOND
     383             :     0U, // G_BRINDIRECT
     384             :     0U, // G_INTRINSIC
     385             :     0U, // G_INTRINSIC_W_SIDE_EFFECTS
     386             :     0U, // G_ANYEXT
     387             :     0U, // G_TRUNC
     388             :     0U, // G_CONSTANT
     389             :     0U, // G_FCONSTANT
     390             :     0U, // G_VASTART
     391             :     0U, // G_VAARG
     392             :     0U, // G_SEXT
     393             :     0U, // G_ZEXT
     394             :     0U, // G_SHL
     395             :     0U, // G_LSHR
     396             :     0U, // G_ASHR
     397             :     0U, // G_ICMP
     398             :     0U, // G_FCMP
     399             :     0U, // G_SELECT
     400             :     0U, // G_UADDE
     401             :     0U, // G_USUBE
     402             :     0U, // G_SADDO
     403             :     0U, // G_SSUBO
     404             :     0U, // G_UMULO
     405             :     0U, // G_SMULO
     406             :     0U, // G_UMULH
     407             :     0U, // G_SMULH
     408             :     0U, // G_FADD
     409             :     0U, // G_FSUB
     410             :     0U, // G_FMUL
     411             :     0U, // G_FMA
     412             :     0U, // G_FDIV
     413             :     0U, // G_FREM
     414             :     0U, // G_FPOW
     415             :     0U, // G_FEXP
     416             :     0U, // G_FEXP2
     417             :     0U, // G_FLOG
     418             :     0U, // G_FLOG2
     419             :     0U, // G_FNEG
     420             :     0U, // G_FPEXT
     421             :     0U, // G_FPTRUNC
     422             :     0U, // G_FPTOSI
     423             :     0U, // G_FPTOUI
     424             :     0U, // G_SITOFP
     425             :     0U, // G_UITOFP
     426             :     0U, // G_FABS
     427             :     0U, // G_GEP
     428             :     0U, // G_PTR_MASK
     429             :     0U, // G_BR
     430             :     0U, // G_INSERT_VECTOR_ELT
     431             :     0U, // G_EXTRACT_VECTOR_ELT
     432             :     0U, // G_SHUFFLE_VECTOR
     433             :     0U, // G_BSWAP
     434             :     0U, // G_ADDRSPACE_CAST
     435             :     0U, // ADJCALLSTACKDOWN
     436             :     0U, // ADJCALLSTACKUP
     437             :     0U, // ADJDYNALLOC
     438             :     0U, // CALL
     439             :     0U, // CALLR
     440             :     0U, // ADDC_F_I_HI
     441             :     0U, // ADDC_F_I_LO
     442             :     0U, // ADDC_F_R
     443             :     0U, // ADDC_I_HI
     444             :     0U, // ADDC_I_LO
     445             :     0U, // ADDC_R
     446             :     0U, // ADD_F_I_HI
     447             :     0U, // ADD_F_I_LO
     448             :     0U, // ADD_F_R
     449             :     0U, // ADD_I_HI
     450             :     0U, // ADD_I_LO
     451             :     0U, // ADD_R
     452             :     0U, // AND_F_I_HI
     453             :     1U, // AND_F_I_LO
     454             :     0U, // AND_F_R
     455             :     0U, // AND_I_HI
     456             :     1U, // AND_I_LO
     457             :     0U, // AND_R
     458             :     1U, // BRCC
     459             :     1U, // BRIND_CC
     460             :     0U, // BRIND_CCA
     461             :     1U, // BRR
     462             :     1U, // BT
     463             :     1U, // JR
     464             :     0U, // LDADDR
     465             :     0U, // LDBs_RI
     466             :     0U, // LDBs_RR
     467             :     0U, // LDBz_RI
     468             :     0U, // LDBz_RR
     469             :     0U, // LDHs_RI
     470             :     0U, // LDHs_RR
     471             :     0U, // LDHz_RI
     472             :     0U, // LDHz_RR
     473             :     0U, // LDW_RI
     474             :     0U, // LDW_RR
     475             :     0U, // LDWz_RR
     476             :     2U, // LEADZ
     477             :     0U, // LOG0
     478             :     0U, // LOG1
     479             :     0U, // LOG2
     480             :     0U, // LOG3
     481             :     0U, // LOG4
     482             :     0U, // MOVHI
     483             :     0U, // NOP
     484             :     0U, // OR_F_I_HI
     485             :     0U, // OR_F_I_LO
     486             :     0U, // OR_F_R
     487             :     0U, // OR_I_HI
     488             :     0U, // OR_I_LO
     489             :     0U, // OR_R
     490             :     2U, // POPC
     491             :     0U, // RET
     492             :     0U, // SA_F_I
     493             :     0U, // SA_I
     494             :     1U, // SCC
     495             :     0U, // SELECT
     496             :     2U, // SFSUB_F_RI_HI
     497             :     6U, // SFSUB_F_RI_LO
     498             :     6U, // SFSUB_F_RR
     499             :     0U, // SHL_F_R
     500             :     0U, // SHL_R
     501             :     2U, // SLI
     502             :     0U, // SL_F_I
     503             :     0U, // SL_I
     504             :     0U, // SRA_F_R
     505             :     0U, // SRA_R
     506             :     0U, // SRL_F_R
     507             :     0U, // SRL_R
     508             :     10U,        // STADDR
     509             :     14U,        // STB_RI
     510             :     18U,        // STB_RR
     511             :     14U,        // STH_RI
     512             :     18U,        // STH_RR
     513             :     0U, // SUBB_F_I_HI
     514             :     0U, // SUBB_F_I_LO
     515             :     0U, // SUBB_F_R
     516             :     0U, // SUBB_I_HI
     517             :     0U, // SUBB_I_LO
     518             :     0U, // SUBB_R
     519             :     0U, // SUB_F_I_HI
     520             :     0U, // SUB_F_I_LO
     521             :     0U, // SUB_F_R
     522             :     0U, // SUB_I_HI
     523             :     0U, // SUB_I_LO
     524             :     0U, // SUB_R
     525             :     22U,        // SW_RI
     526             :     18U,        // SW_RR
     527             :     2U, // TRAILZ
     528             :     0U, // XOR_F_I_HI
     529             :     0U, // XOR_F_I_LO
     530             :     0U, // XOR_F_R
     531             :     0U, // XOR_I_HI
     532             :     0U, // XOR_I_LO
     533             :     0U, // XOR_R
     534             :   };
     535             : 
     536        1389 :   O << "\t";
     537             : 
     538             :   // Emit the opcode for the instruction.
     539             :   uint32_t Bits = 0;
     540        1389 :   Bits |= OpInfo0[MI->getOpcode()] << 0;
     541        1389 :   Bits |= OpInfo1[MI->getOpcode()] << 16;
     542             :   assert(Bits != 0 && "Cannot print this instruction.");
     543        1389 :   O << AsmStrs+(Bits & 1023)-1;
     544             : 
     545             : 
     546             :   // Fragment 0 encoded into 4 bits for 12 unique commands.
     547        1389 :   switch ((Bits >> 10) & 15) {
     548           0 :   default: llvm_unreachable("Invalid command number.");
     549             :   case 0:
     550             :     // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
     551             :     return;
     552             :     break;
     553         350 :   case 1:
     554             :     // ADJCALLSTACKDOWN, ADJCALLSTACKUP, ADJDYNALLOC, BT, JR, SFSUB_F_RI_HI, ...
     555         350 :     printOperand(MI, 0, O);
     556         350 :     break;
     557         464 :   case 2:
     558             :     // ADDC_F_I_HI, ADDC_F_I_LO, ADDC_I_HI, ADDC_I_LO, ADD_F_I_HI, ADD_F_I_LO...
     559         464 :     printOperand(MI, 1, O);
     560         464 :     O << ", ";
     561         464 :     break;
     562          96 :   case 3:
     563             :     // ADDC_F_R, ADDC_R, ADD_F_R, ADD_R, AND_F_R, AND_R, OR_F_R, OR_R, SHL_F_...
     564          96 :     printPredicateOperand(MI, 3, O);
     565          96 :     O << "\t";
     566          96 :     printOperand(MI, 1, O);
     567          96 :     O << ", ";
     568          96 :     printOperand(MI, 2, O);
     569          96 :     O << ", ";
     570          96 :     printOperand(MI, 0, O);
     571          96 :     return;
     572             :     break;
     573         155 :   case 4:
     574             :     // BRCC, BRIND_CC, BRR, SCC
     575         155 :     printCCOperand(MI, 1, O);
     576         155 :     break;
     577           0 :   case 5:
     578             :     // BRIND_CCA
     579           0 :     printCCOperand(MI, 2, O);
     580           0 :     O << "\t";
     581           0 :     printOperand(MI, 0, O);
     582           0 :     O << " add ";
     583           0 :     printOperand(MI, 1, O);
     584           0 :     return;
     585             :     break;
     586           5 :   case 6:
     587             :     // LDADDR
     588           5 :     printMemImmOperand(MI, 1, O);
     589           5 :     O << ", ";
     590           5 :     printOperand(MI, 0, O);
     591           5 :     return;
     592             :     break;
     593          98 :   case 7:
     594             :     // LDBs_RI, LDBz_RI, LDHs_RI, LDHz_RI
     595          98 :     printMemSplsOperand(MI, 1, O);
     596          98 :     O << ", ";
     597          98 :     printOperand(MI, 0, O);
     598          98 :     return;
     599             :     break;
     600          70 :   case 8:
     601             :     // LDBs_RR, LDBz_RR, LDHs_RR, LDHz_RR, LDW_RR, LDWz_RR
     602          70 :     printMemRrOperand(MI, 1, O);
     603          70 :     O << ", ";
     604          70 :     printOperand(MI, 0, O);
     605          70 :     return;
     606             :     break;
     607           0 :   case 9:
     608             :     // LDW_RI
     609           0 :     printMemRiOperand(MI, 1, O);
     610           0 :     O << ", ";
     611           0 :     printOperand(MI, 0, O);
     612           0 :     return;
     613             :     break;
     614           9 :   case 10:
     615             :     // MOVHI
     616           9 :     printHi16ImmOperand(MI, 1, O);
     617           9 :     O << ", ";
     618           9 :     printOperand(MI, 0, O);
     619           9 :     return;
     620             :     break;
     621          40 :   case 11:
     622             :     // SELECT
     623          40 :     printCCOperand(MI, 3, O);
     624             :     O << ' ';
     625          40 :     printOperand(MI, 1, O);
     626          40 :     O << ", ";
     627          40 :     printOperand(MI, 2, O);
     628          40 :     O << ", ";
     629          40 :     printOperand(MI, 0, O);
     630          40 :     return;
     631             :     break;
     632             :   }
     633             : 
     634             : 
     635             :   // Fragment 1 encoded into 4 bits for 10 unique commands.
     636         969 :   switch ((Bits >> 14) & 15) {
     637           0 :   default: llvm_unreachable("Invalid command number.");
     638             :   case 0:
     639             :     // ADJCALLSTACKDOWN, ADJCALLSTACKUP, ADJDYNALLOC
     640             :     O << ' ';
     641           0 :     printOperand(MI, 1, O);
     642           0 :     return;
     643             :     break;
     644          24 :   case 1:
     645             :     // ADDC_F_I_HI, ADDC_I_HI, ADD_F_I_HI, ADD_I_HI, OR_F_I_HI, OR_I_HI, SUBB...
     646          24 :     printHi16ImmOperand(MI, 2, O);
     647          24 :     O << ", ";
     648          24 :     printOperand(MI, 0, O);
     649          24 :     return;
     650             :     break;
     651         413 :   case 2:
     652             :     // ADDC_F_I_LO, ADDC_I_LO, ADD_F_I_LO, ADD_I_LO, OR_F_I_LO, OR_I_LO, SA_F...
     653         413 :     printOperand(MI, 2, O);
     654         413 :     O << ", ";
     655         413 :     printOperand(MI, 0, O);
     656         413 :     return;
     657             :     break;
     658           4 :   case 3:
     659             :     // AND_F_I_HI, AND_I_HI
     660           4 :     printHi16AndImmOperand(MI, 2, O);
     661           4 :     O << ", ";
     662           4 :     printOperand(MI, 0, O);
     663           4 :     return;
     664             :     break;
     665           4 :   case 4:
     666             :     // AND_F_I_LO, AND_I_LO
     667           4 :     printLo16AndImmOperand(MI, 2, O);
     668           4 :     O << ", ";
     669           4 :     printOperand(MI, 0, O);
     670           4 :     return;
     671             :     break;
     672         120 :   case 5:
     673             :     // BRCC, BRIND_CC, SCC
     674         120 :     O << "\t";
     675         120 :     printOperand(MI, 0, O);
     676         120 :     return;
     677             :     break;
     678          35 :   case 6:
     679             :     // BRR
     680          35 :     O << ".r\t";
     681          35 :     printOperand(MI, 0, O);
     682          35 :     return;
     683             :     break;
     684             :   case 7:
     685             :     // BT, JR
     686             :     return;
     687             :     break;
     688          19 :   case 8:
     689             :     // LEADZ, POPC, SLI, TRAILZ
     690          19 :     printOperand(MI, 0, O);
     691          19 :     return;
     692             :     break;
     693         323 :   case 9:
     694             :     // SFSUB_F_RI_HI, SFSUB_F_RI_LO, SFSUB_F_RR, STADDR, STB_RI, STB_RR, STH_...
     695         323 :     O << ", ";
     696             :     break;
     697             :   }
     698             : 
     699             : 
     700             :   // Fragment 2 encoded into 3 bits for 6 unique commands.
     701         323 :   switch ((Bits >> 18) & 7) {
     702           0 :   default: llvm_unreachable("Invalid command number.");
     703           0 :   case 0:
     704             :     // SFSUB_F_RI_HI
     705           0 :     printHi16ImmOperand(MI, 1, O);
     706           0 :     O << ", %r0";
     707           0 :     return;
     708             :     break;
     709          59 :   case 1:
     710             :     // SFSUB_F_RI_LO, SFSUB_F_RR
     711          59 :     printOperand(MI, 1, O);
     712          59 :     O << ", %r0";
     713          59 :     return;
     714             :     break;
     715           3 :   case 2:
     716             :     // STADDR
     717           3 :     printMemImmOperand(MI, 1, O);
     718           3 :     return;
     719             :     break;
     720          52 :   case 3:
     721             :     // STB_RI, STH_RI
     722          52 :     printMemSplsOperand(MI, 1, O);
     723          52 :     return;
     724             :     break;
     725         175 :   case 4:
     726             :     // STB_RR, STH_RR, SW_RR
     727         175 :     printMemRrOperand(MI, 1, O);
     728         175 :     return;
     729             :     break;
     730          34 :   case 5:
     731             :     // SW_RI
     732          34 :     printMemRiOperand(MI, 1, O);
     733          34 :     return;
     734             :     break;
     735             :   }
     736             : 
     737             : }
     738             : 
     739             : 
     740             : /// getRegisterName - This method is automatically generated by tblgen
     741             : /// from the register set description.  This returns the assembler name
     742             : /// for the specified register.
     743        3389 : const char *LanaiInstPrinter::getRegisterName(unsigned RegNo) {
     744             :   assert(RegNo && RegNo < 41 && "Invalid register number!");
     745             : 
     746             :   static const char AsmStrs[] = {
     747             :   /* 0 */ 'r', '1', '0', 0,
     748             :   /* 4 */ 'r', '2', '0', 0,
     749             :   /* 8 */ 'r', '3', '0', 0,
     750             :   /* 12 */ 'r', '0', 0,
     751             :   /* 15 */ 'r', '1', '1', 0,
     752             :   /* 19 */ 'r', '2', '1', 0,
     753             :   /* 23 */ 'r', '3', '1', 0,
     754             :   /* 27 */ 'r', 'r', '1', 0,
     755             :   /* 31 */ 'r', '1', '2', 0,
     756             :   /* 35 */ 'r', '2', '2', 0,
     757             :   /* 39 */ 'r', 'r', '2', 0,
     758             :   /* 43 */ 'r', '1', '3', 0,
     759             :   /* 47 */ 'r', '2', '3', 0,
     760             :   /* 51 */ 'r', '3', 0,
     761             :   /* 54 */ 'r', '1', '4', 0,
     762             :   /* 58 */ 'r', '2', '4', 0,
     763             :   /* 62 */ 'r', '4', 0,
     764             :   /* 65 */ 'r', '1', '5', 0,
     765             :   /* 69 */ 'r', '2', '5', 0,
     766             :   /* 73 */ 'r', '5', 0,
     767             :   /* 76 */ 'r', '1', '6', 0,
     768             :   /* 80 */ 'r', '2', '6', 0,
     769             :   /* 84 */ 'r', '6', 0,
     770             :   /* 87 */ 'r', '1', '7', 0,
     771             :   /* 91 */ 'r', '2', '7', 0,
     772             :   /* 95 */ 'r', '7', 0,
     773             :   /* 98 */ 'r', '1', '8', 0,
     774             :   /* 102 */ 'r', '2', '8', 0,
     775             :   /* 106 */ 'r', '8', 0,
     776             :   /* 109 */ 'r', '1', '9', 0,
     777             :   /* 113 */ 'r', '2', '9', 0,
     778             :   /* 117 */ 'r', '9', 0,
     779             :   /* 120 */ 'r', 'c', 'a', 0,
     780             :   /* 124 */ 'p', 'c', 0,
     781             :   /* 127 */ 'f', 'p', 0,
     782             :   /* 130 */ 's', 'p', 0,
     783             :   /* 133 */ 'r', 'v', 0,
     784             :   /* 136 */ 's', 'w', 0,
     785             :   };
     786             : 
     787             :   static const uint8_t RegAsmOffset[] = {
     788             :     127, 124, 120, 133, 130, 136, 12, 28, 40, 51, 62, 73, 84, 95, 
     789             :     106, 117, 0, 15, 31, 43, 54, 65, 76, 87, 98, 109, 4, 19, 
     790             :     35, 47, 58, 69, 80, 91, 102, 113, 8, 23, 27, 39, 
     791             :   };
     792             : 
     793             :   assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
     794             :           "Invalid alt name index for register!");
     795        3389 :   return AsmStrs+RegAsmOffset[RegNo-1];
     796             : }
     797             : 
     798             : #ifdef PRINT_ALIAS_INSTR
     799             : #undef PRINT_ALIAS_INSTR
     800             : 
     801        1608 : bool LanaiInstPrinter::printAliasInstr(const MCInst *MI, raw_ostream &OS) {
     802             :   const char *AsmString;
     803        1608 :   switch (MI->getOpcode()) {
     804             :   default: return false;
     805             :   case Lanai::ADD_I_HI:
     806           8 :     if (MI->getNumOperands() == 3 &&
     807          16 :         MI->getOperand(0).isReg() &&
     808          24 :         MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
     809           8 :         MI->getOperand(1).getReg() == Lanai::R0) {
     810             :       // (ADD_I_HI GPR:$dst, R0, i32hi16:$imm16)
     811             :       AsmString = "mov $\xFF\x03\x01, $\x01";
     812             :       break;
     813             :     }
     814             :     return false;
     815             :   case Lanai::ADD_I_LO:
     816         199 :     if (MI->getNumOperands() == 3 &&
     817         398 :         MI->getOperand(0).isReg() &&
     818         597 :         MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
     819         199 :         MI->getOperand(1).getReg() == Lanai::R0) {
     820             :       // (ADD_I_LO GPR:$dst, R0, i32lo16z:$imm16)
     821             :       AsmString = "mov $\x03, $\x01";
     822             :       break;
     823             :     }
     824             :     return false;
     825             :   case Lanai::ADD_R:
     826          12 :     if (MI->getNumOperands() == 4 &&
     827          24 :         MI->getOperand(0).isReg() &&
     828          24 :         MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
     829          24 :         MI->getOperand(1).isReg() &&
     830          24 :         MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(1).getReg()) &&
     831          14 :         MI->getOperand(2).getReg() == Lanai::R0 &&
     832          16 :         MI->getOperand(3).isImm() &&
     833           2 :         MI->getOperand(3).getImm() == 0) {
     834             :       // (ADD_R GPR:$dst, GPR:$src, R0, 0)
     835             :       AsmString = "mov $\x02, $\x01";
     836             :       break;
     837             :     }
     838             :     return false;
     839             :   case Lanai::AND_I_HI:
     840           4 :     if (MI->getNumOperands() == 3 &&
     841           8 :         MI->getOperand(0).isReg() &&
     842          12 :         MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
     843           4 :         MI->getOperand(1).getReg() == Lanai::R1) {
     844             :       // (AND_I_HI GPR:$dst, R1, i32hi16and:$imm16)
     845             :       AsmString = "mov $\xFF\x03\x02, $\x01";
     846             :       break;
     847             :     }
     848             :     return false;
     849             :   case Lanai::AND_I_LO:
     850           5 :     if (MI->getNumOperands() == 3 &&
     851          10 :         MI->getOperand(0).isReg() &&
     852          15 :         MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg()) &&
     853           5 :         MI->getOperand(1).getReg() == Lanai::R1) {
     854             :       // (AND_I_LO GPR:$dst, R1, i32lo16and:$imm16)
     855             :       AsmString = "mov $\xFF\x03\x03, $\x01";
     856             :       break;
     857             :     }
     858             :     return false;
     859             :   case Lanai::LDW_RI:
     860         202 :     if (MI->getNumOperands() == 4 &&
     861         404 :         MI->getOperand(0).isReg() &&
     862         202 :         MRI.getRegClass(Lanai::GPRRegClassID).contains(MI->getOperand(0).getReg())) {
     863             :       // (LDW_RI GPR:$dst, MEMri:$src)
     864             :       AsmString = "ld $\xFF\x02\x04, $\x01";
     865             :       break;
     866             :     }
     867             :     return false;
     868             :   }
     869             : 
     870             :   unsigned I = 0;
     871        1584 :   while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
     872        1129 :          AsmString[I] != '$' && AsmString[I] != '\0')
     873         455 :     ++I;
     874         219 :   OS << '\t' << StringRef(AsmString, I);
     875         219 :   if (AsmString[I] != '\0') {
     876         219 :     if (AsmString[I] == ' ' || AsmString[I] == '\t') {
     877             :       OS << '\t';
     878         219 :       ++I;
     879             :     }
     880             :     do {
     881         876 :       if (AsmString[I] == '$') {
     882         438 :         ++I;
     883         438 :         if (AsmString[I] == (char)0xff) {
     884         213 :           ++I;
     885         213 :           int OpIdx = AsmString[I++] - 1;
     886         213 :           int PrintMethodIdx = AsmString[I++] - 1;
     887         213 :           printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
     888             :         } else
     889         225 :           printOperand(MI, unsigned(AsmString[I++]) - 1, OS);
     890             :       } else {
     891         438 :         OS << AsmString[I++];
     892             :       }
     893         876 :     } while (AsmString[I] != '\0');
     894             :   }
     895             : 
     896             :   return true;
     897             : }
     898             : 
     899         213 : void LanaiInstPrinter::printCustomAliasOperand(
     900             :          const MCInst *MI, unsigned OpIdx,
     901             :          unsigned PrintMethodIdx,
     902             :          raw_ostream &OS) {
     903         213 :   switch (PrintMethodIdx) {
     904           0 :   default:
     905           0 :     llvm_unreachable("Unknown PrintMethod kind");
     906             :     break;
     907           6 :   case 0:
     908           6 :     printHi16ImmOperand(MI, OpIdx, OS);
     909           6 :     break;
     910           2 :   case 1:
     911           2 :     printHi16AndImmOperand(MI, OpIdx, OS);
     912           2 :     break;
     913           3 :   case 2:
     914           3 :     printLo16AndImmOperand(MI, OpIdx, OS);
     915           3 :     break;
     916         202 :   case 3:
     917         202 :     printMemRiOperand(MI, OpIdx, OS);
     918         202 :     break;
     919             :   }
     920         213 : }
     921             : 
     922             : #endif // PRINT_ALIAS_INSTR

Generated by: LCOV version 1.13