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

Generated by: LCOV version 1.13