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

Generated by: LCOV version 1.13