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

Generated by: LCOV version 1.13