LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/BPF - BPFGenAsmWriter.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 186 202 92.1 %
Date: 2018-02-23 15:42:53 Functions: 2 2 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        1555 : void BPFInstPrinter::printInstruction(const MCInst *MI, raw_ostream &O) {
      12             :   static const char AsmStrs[] = {
      13             :   /* 0 */ 'l', 'e', 'a', 9, 0,
      14             :   /* 5 */ 'l', 'd', '_', 'p', 's', 'e', 'u', 'd', 'o', 9, 0,
      15             :   /* 16 */ 'n', 'o', 'p', 9, 0,
      16             :   /* 21 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 32, 0,
      17             :   /* 40 */ '#', 32, 'S', 'e', 'l', 'e', 'c', 't', 32, 'P', 'S', 'E', 'U', 'D', 'O', 32, 0,
      18             :   /* 57 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 32, 0,
      19             :   /* 74 */ 'i', 'f', 32, 0,
      20             :   /* 78 */ 'c', 'a', 'l', 'l', 32, 0,
      21             :   /* 84 */ 'g', 'o', 't', 'o', 32, 0,
      22             :   /* 90 */ 'c', 'a', 'l', 'l', 'x', 32, 0,
      23             :   /* 97 */ 'l', 'o', 'c', 'k', 32, '*', '(', 'u', '3', '2', 32, '*', ')', '(', 0,
      24             :   /* 112 */ 'l', 'o', 'c', 'k', 32, '*', '(', 'u', '6', '4', 32, '*', ')', '(', 0,
      25             :   /* 127 */ '*', '(', 'u', '1', '6', 32, '*', ')', '(', 0,
      26             :   /* 137 */ '*', '(', 'u', '8', 32, '*', ')', '(', 0,
      27             :   /* 146 */ '#', 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,
      28             :   /* 177 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
      29             :   /* 202 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
      30             :   /* 225 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
      31             :   /* 248 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
      32             :   /* 270 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
      33             :   /* 283 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
      34             :   /* 290 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
      35             :   /* 300 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
      36             :   /* 315 */ 'r', '0', 32, '=', 32, '*', '(', 'u', '3', '2', 32, '*', ')', 's', 'k', 'b', '[', 0,
      37             :   /* 333 */ 'r', '0', 32, '=', 32, '*', '(', 'u', '1', '6', 32, '*', ')', 's', 'k', 'b', '[', 0,
      38             :   /* 351 */ 'r', '0', 32, '=', 32, '*', '(', 'u', '8', 32, '*', ')', 's', 'k', 'b', '[', 0,
      39             :   /* 368 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
      40             :   /* 382 */ 'e', 'x', 'i', 't', 0,
      41             :   };
      42             : 
      43             :   static const uint16_t OpInfo0[] = {
      44             :     0U, // PHI
      45             :     0U, // INLINEASM
      46             :     0U, // CFI_INSTRUCTION
      47             :     0U, // EH_LABEL
      48             :     0U, // GC_LABEL
      49             :     0U, // ANNOTATION_LABEL
      50             :     0U, // KILL
      51             :     0U, // EXTRACT_SUBREG
      52             :     0U, // INSERT_SUBREG
      53             :     0U, // IMPLICIT_DEF
      54             :     0U, // SUBREG_TO_REG
      55             :     0U, // COPY_TO_REGCLASS
      56             :     291U,       // DBG_VALUE
      57             :     0U, // REG_SEQUENCE
      58             :     0U, // COPY
      59             :     284U,       // BUNDLE
      60             :     301U,       // LIFETIME_START
      61             :     271U,       // LIFETIME_END
      62             :     0U, // STACKMAP
      63             :     369U,       // FENTRY_CALL
      64             :     0U, // PATCHPOINT
      65             :     0U, // LOAD_STACK_GUARD
      66             :     0U, // STATEPOINT
      67             :     0U, // LOCAL_ESCAPE
      68             :     0U, // FAULTING_OP
      69             :     0U, // PATCHABLE_OP
      70             :     203U,       // PATCHABLE_FUNCTION_ENTER
      71             :     147U,       // PATCHABLE_RET
      72             :     249U,       // PATCHABLE_FUNCTION_EXIT
      73             :     226U,       // PATCHABLE_TAIL_CALL
      74             :     178U,       // PATCHABLE_EVENT_CALL
      75             :     0U, // G_ADD
      76             :     0U, // G_SUB
      77             :     0U, // G_MUL
      78             :     0U, // G_SDIV
      79             :     0U, // G_UDIV
      80             :     0U, // G_SREM
      81             :     0U, // G_UREM
      82             :     0U, // G_AND
      83             :     0U, // G_OR
      84             :     0U, // G_XOR
      85             :     0U, // G_IMPLICIT_DEF
      86             :     0U, // G_PHI
      87             :     0U, // G_FRAME_INDEX
      88             :     0U, // G_GLOBAL_VALUE
      89             :     0U, // G_EXTRACT
      90             :     0U, // G_UNMERGE_VALUES
      91             :     0U, // G_INSERT
      92             :     0U, // G_MERGE_VALUES
      93             :     0U, // G_PTRTOINT
      94             :     0U, // G_INTTOPTR
      95             :     0U, // G_BITCAST
      96             :     0U, // G_LOAD
      97             :     0U, // G_STORE
      98             :     0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
      99             :     0U, // G_ATOMIC_CMPXCHG
     100             :     0U, // G_ATOMICRMW_XCHG
     101             :     0U, // G_ATOMICRMW_ADD
     102             :     0U, // G_ATOMICRMW_SUB
     103             :     0U, // G_ATOMICRMW_AND
     104             :     0U, // G_ATOMICRMW_NAND
     105             :     0U, // G_ATOMICRMW_OR
     106             :     0U, // G_ATOMICRMW_XOR
     107             :     0U, // G_ATOMICRMW_MAX
     108             :     0U, // G_ATOMICRMW_MIN
     109             :     0U, // G_ATOMICRMW_UMAX
     110             :     0U, // G_ATOMICRMW_UMIN
     111             :     0U, // G_BRCOND
     112             :     0U, // G_BRINDIRECT
     113             :     0U, // G_INTRINSIC
     114             :     0U, // G_INTRINSIC_W_SIDE_EFFECTS
     115             :     0U, // G_ANYEXT
     116             :     0U, // G_TRUNC
     117             :     0U, // G_CONSTANT
     118             :     0U, // G_FCONSTANT
     119             :     0U, // G_VASTART
     120             :     0U, // G_VAARG
     121             :     0U, // G_SEXT
     122             :     0U, // G_ZEXT
     123             :     0U, // G_SHL
     124             :     0U, // G_LSHR
     125             :     0U, // G_ASHR
     126             :     0U, // G_ICMP
     127             :     0U, // G_FCMP
     128             :     0U, // G_SELECT
     129             :     0U, // G_UADDE
     130             :     0U, // G_USUBE
     131             :     0U, // G_SADDO
     132             :     0U, // G_SSUBO
     133             :     0U, // G_UMULO
     134             :     0U, // G_SMULO
     135             :     0U, // G_UMULH
     136             :     0U, // G_SMULH
     137             :     0U, // G_FADD
     138             :     0U, // G_FSUB
     139             :     0U, // G_FMUL
     140             :     0U, // G_FMA
     141             :     0U, // G_FDIV
     142             :     0U, // G_FREM
     143             :     0U, // G_FPOW
     144             :     0U, // G_FEXP
     145             :     0U, // G_FEXP2
     146             :     0U, // G_FLOG
     147             :     0U, // G_FLOG2
     148             :     0U, // G_FNEG
     149             :     0U, // G_FPEXT
     150             :     0U, // G_FPTRUNC
     151             :     0U, // G_FPTOSI
     152             :     0U, // G_FPTOUI
     153             :     0U, // G_SITOFP
     154             :     0U, // G_UITOFP
     155             :     0U, // G_GEP
     156             :     0U, // G_PTR_MASK
     157             :     0U, // G_BR
     158             :     0U, // G_INSERT_VECTOR_ELT
     159             :     0U, // G_EXTRACT_VECTOR_ELT
     160             :     0U, // G_SHUFFLE_VECTOR
     161             :     0U, // G_BSWAP
     162             :     517U,       // ADD_ri
     163             :     517U,       // ADD_ri_32
     164             :     517U,       // ADD_rr
     165             :     517U,       // ADD_rr_32
     166             :     4630U,      // ADJCALLSTACKDOWN
     167             :     4666U,      // ADJCALLSTACKUP
     168             :     8709U,      // AND_ri
     169             :     8709U,      // AND_ri_32
     170             :     8709U,      // AND_rr
     171             :     8709U,      // AND_rr_32
     172             :     12805U,     // BE16
     173             :     16901U,     // BE32
     174             :     20997U,     // BE64
     175             :     25093U,     // DIV_ri
     176             :     25093U,     // DIV_ri_32
     177             :     25093U,     // DIV_rr
     178             :     25093U,     // DIV_rr_32
     179             :     29185U,     // FI_ri
     180             :     33359U,     // JAL
     181             :     33371U,     // JALX
     182             :     37451U,     // JEQ_ri
     183             :     37451U,     // JEQ_rr
     184             :     1109U,      // JMP
     185             :     41547U,     // JNE_ri
     186             :     41547U,     // JNE_rr
     187             :     45643U,     // JSGE_ri
     188             :     45643U,     // JSGE_rr
     189             :     49739U,     // JSGT_ri
     190             :     49739U,     // JSGT_rr
     191             :     53835U,     // JSLE_ri
     192             :     53835U,     // JSLE_rr
     193             :     57931U,     // JSLT_ri
     194             :     57931U,     // JSLT_rr
     195             :     62027U,     // JUGE_ri
     196             :     62027U,     // JUGE_rr
     197             :     587U,       // JUGT_ri
     198             :     587U,       // JUGT_rr
     199             :     4683U,      // JULE_ri
     200             :     4683U,      // JULE_rr
     201             :     8779U,      // JULT_ri
     202             :     8779U,      // JULT_rr
     203             :     12805U,     // LDB
     204             :     16901U,     // LDD
     205             :     20997U,     // LDH
     206             :     25093U,     // LDW
     207             :     1888U,      // LD_ABS_B
     208             :     1870U,      // LD_ABS_H
     209             :     1852U,      // LD_ABS_W
     210             :     1888U,      // LD_IND_B
     211             :     1870U,      // LD_IND_H
     212             :     1852U,      // LD_IND_W
     213             :     29189U,     // LD_imm64
     214             :     29190U,     // LD_pseudo
     215             :     33285U,     // LE16
     216             :     37381U,     // LE32
     217             :     41477U,     // LE64
     218             :     29189U,     // MOV_ri
     219             :     29189U,     // MOV_ri_32
     220             :     29189U,     // MOV_rr
     221             :     29189U,     // MOV_rr_32
     222             :     45573U,     // MUL_ri
     223             :     45573U,     // MUL_ri_32
     224             :     45573U,     // MUL_rr
     225             :     45573U,     // MUL_rr_32
     226             :     49669U,     // NEG_32
     227             :     49669U,     // NEG_64
     228             :     33297U,     // NOP
     229             :     53765U,     // OR_ri
     230             :     53765U,     // OR_ri_32
     231             :     53765U,     // OR_rr
     232             :     53765U,     // OR_rr_32
     233             :     383U,       // RET
     234             :     57861U,     // SLL_ri
     235             :     57861U,     // SLL_ri_32
     236             :     57861U,     // SLL_rr
     237             :     57861U,     // SLL_rr_32
     238             :     61957U,     // SRA_ri
     239             :     61957U,     // SRA_ri_32
     240             :     61957U,     // SRA_rr
     241             :     61957U,     // SRA_rr_32
     242             :     517U,       // SRL_ri
     243             :     517U,       // SRL_ri_32
     244             :     517U,       // SRL_rr
     245             :     517U,       // SRL_rr_32
     246             :     6282U,      // STB
     247             :     6262U,      // STD
     248             :     6272U,      // STH
     249             :     6247U,      // STW
     250             :     8709U,      // SUB_ri
     251             :     8709U,      // SUB_ri_32
     252             :     8709U,      // SUB_rr
     253             :     8709U,      // SUB_rr_32
     254             :     29225U,     // Select
     255             :     29225U,     // Select_Ri
     256             :     14434U,     // XADD32
     257             :     14449U,     // XADD64
     258             :     16901U,     // XOR_ri
     259             :     16901U,     // XOR_ri_32
     260             :     16901U,     // XOR_rr
     261             :     16901U,     // XOR_rr_32
     262             :   };
     263             : 
     264             :   static const uint8_t OpInfo1[] = {
     265             :     0U, // PHI
     266             :     0U, // INLINEASM
     267             :     0U, // CFI_INSTRUCTION
     268             :     0U, // EH_LABEL
     269             :     0U, // GC_LABEL
     270             :     0U, // ANNOTATION_LABEL
     271             :     0U, // KILL
     272             :     0U, // EXTRACT_SUBREG
     273             :     0U, // INSERT_SUBREG
     274             :     0U, // IMPLICIT_DEF
     275             :     0U, // SUBREG_TO_REG
     276             :     0U, // COPY_TO_REGCLASS
     277             :     0U, // DBG_VALUE
     278             :     0U, // REG_SEQUENCE
     279             :     0U, // COPY
     280             :     0U, // BUNDLE
     281             :     0U, // LIFETIME_START
     282             :     0U, // LIFETIME_END
     283             :     0U, // STACKMAP
     284             :     0U, // FENTRY_CALL
     285             :     0U, // PATCHPOINT
     286             :     0U, // LOAD_STACK_GUARD
     287             :     0U, // STATEPOINT
     288             :     0U, // LOCAL_ESCAPE
     289             :     0U, // FAULTING_OP
     290             :     0U, // PATCHABLE_OP
     291             :     0U, // PATCHABLE_FUNCTION_ENTER
     292             :     0U, // PATCHABLE_RET
     293             :     0U, // PATCHABLE_FUNCTION_EXIT
     294             :     0U, // PATCHABLE_TAIL_CALL
     295             :     0U, // PATCHABLE_EVENT_CALL
     296             :     0U, // G_ADD
     297             :     0U, // G_SUB
     298             :     0U, // G_MUL
     299             :     0U, // G_SDIV
     300             :     0U, // G_UDIV
     301             :     0U, // G_SREM
     302             :     0U, // G_UREM
     303             :     0U, // G_AND
     304             :     0U, // G_OR
     305             :     0U, // G_XOR
     306             :     0U, // G_IMPLICIT_DEF
     307             :     0U, // G_PHI
     308             :     0U, // G_FRAME_INDEX
     309             :     0U, // G_GLOBAL_VALUE
     310             :     0U, // G_EXTRACT
     311             :     0U, // G_UNMERGE_VALUES
     312             :     0U, // G_INSERT
     313             :     0U, // G_MERGE_VALUES
     314             :     0U, // G_PTRTOINT
     315             :     0U, // G_INTTOPTR
     316             :     0U, // G_BITCAST
     317             :     0U, // G_LOAD
     318             :     0U, // G_STORE
     319             :     0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
     320             :     0U, // G_ATOMIC_CMPXCHG
     321             :     0U, // G_ATOMICRMW_XCHG
     322             :     0U, // G_ATOMICRMW_ADD
     323             :     0U, // G_ATOMICRMW_SUB
     324             :     0U, // G_ATOMICRMW_AND
     325             :     0U, // G_ATOMICRMW_NAND
     326             :     0U, // G_ATOMICRMW_OR
     327             :     0U, // G_ATOMICRMW_XOR
     328             :     0U, // G_ATOMICRMW_MAX
     329             :     0U, // G_ATOMICRMW_MIN
     330             :     0U, // G_ATOMICRMW_UMAX
     331             :     0U, // G_ATOMICRMW_UMIN
     332             :     0U, // G_BRCOND
     333             :     0U, // G_BRINDIRECT
     334             :     0U, // G_INTRINSIC
     335             :     0U, // G_INTRINSIC_W_SIDE_EFFECTS
     336             :     0U, // G_ANYEXT
     337             :     0U, // G_TRUNC
     338             :     0U, // G_CONSTANT
     339             :     0U, // G_FCONSTANT
     340             :     0U, // G_VASTART
     341             :     0U, // G_VAARG
     342             :     0U, // G_SEXT
     343             :     0U, // G_ZEXT
     344             :     0U, // G_SHL
     345             :     0U, // G_LSHR
     346             :     0U, // G_ASHR
     347             :     0U, // G_ICMP
     348             :     0U, // G_FCMP
     349             :     0U, // G_SELECT
     350             :     0U, // G_UADDE
     351             :     0U, // G_USUBE
     352             :     0U, // G_SADDO
     353             :     0U, // G_SSUBO
     354             :     0U, // G_UMULO
     355             :     0U, // G_SMULO
     356             :     0U, // G_UMULH
     357             :     0U, // G_SMULH
     358             :     0U, // G_FADD
     359             :     0U, // G_FSUB
     360             :     0U, // G_FMUL
     361             :     0U, // G_FMA
     362             :     0U, // G_FDIV
     363             :     0U, // G_FREM
     364             :     0U, // G_FPOW
     365             :     0U, // G_FEXP
     366             :     0U, // G_FEXP2
     367             :     0U, // G_FLOG
     368             :     0U, // G_FLOG2
     369             :     0U, // G_FNEG
     370             :     0U, // G_FPEXT
     371             :     0U, // G_FPTRUNC
     372             :     0U, // G_FPTOSI
     373             :     0U, // G_FPTOUI
     374             :     0U, // G_SITOFP
     375             :     0U, // G_UITOFP
     376             :     0U, // G_GEP
     377             :     0U, // G_PTR_MASK
     378             :     0U, // G_BR
     379             :     0U, // G_INSERT_VECTOR_ELT
     380             :     0U, // G_EXTRACT_VECTOR_ELT
     381             :     0U, // G_SHUFFLE_VECTOR
     382             :     0U, // G_BSWAP
     383             :     0U, // ADD_ri
     384             :     0U, // ADD_ri_32
     385             :     0U, // ADD_rr
     386             :     0U, // ADD_rr_32
     387             :     0U, // ADJCALLSTACKDOWN
     388             :     0U, // ADJCALLSTACKUP
     389             :     0U, // AND_ri
     390             :     0U, // AND_ri_32
     391             :     0U, // AND_rr
     392             :     0U, // AND_rr_32
     393             :     0U, // BE16
     394             :     0U, // BE32
     395             :     0U, // BE64
     396             :     0U, // DIV_ri
     397             :     0U, // DIV_ri_32
     398             :     0U, // DIV_rr
     399             :     0U, // DIV_rr_32
     400             :     0U, // FI_ri
     401             :     0U, // JAL
     402             :     0U, // JALX
     403             :     0U, // JEQ_ri
     404             :     0U, // JEQ_rr
     405             :     0U, // JMP
     406             :     0U, // JNE_ri
     407             :     0U, // JNE_rr
     408             :     0U, // JSGE_ri
     409             :     0U, // JSGE_rr
     410             :     0U, // JSGT_ri
     411             :     0U, // JSGT_rr
     412             :     0U, // JSLE_ri
     413             :     0U, // JSLE_rr
     414             :     0U, // JSLT_ri
     415             :     0U, // JSLT_rr
     416             :     0U, // JUGE_ri
     417             :     0U, // JUGE_rr
     418             :     1U, // JUGT_ri
     419             :     1U, // JUGT_rr
     420             :     1U, // JULE_ri
     421             :     1U, // JULE_rr
     422             :     1U, // JULT_ri
     423             :     1U, // JULT_rr
     424             :     1U, // LDB
     425             :     1U, // LDD
     426             :     1U, // LDH
     427             :     1U, // LDW
     428             :     0U, // LD_ABS_B
     429             :     0U, // LD_ABS_H
     430             :     0U, // LD_ABS_W
     431             :     0U, // LD_IND_B
     432             :     0U, // LD_IND_H
     433             :     0U, // LD_IND_W
     434             :     5U, // LD_imm64
     435             :     8U, // LD_pseudo
     436             :     1U, // LE16
     437             :     1U, // LE32
     438             :     1U, // LE64
     439             :     25U,        // MOV_ri
     440             :     25U,        // MOV_ri_32
     441             :     25U,        // MOV_rr
     442             :     25U,        // MOV_rr_32
     443             :     1U, // MUL_ri
     444             :     1U, // MUL_ri_32
     445             :     1U, // MUL_rr
     446             :     1U, // MUL_rr_32
     447             :     1U, // NEG_32
     448             :     1U, // NEG_64
     449             :     0U, // NOP
     450             :     1U, // OR_ri
     451             :     1U, // OR_ri_32
     452             :     1U, // OR_rr
     453             :     1U, // OR_rr_32
     454             :     0U, // RET
     455             :     1U, // SLL_ri
     456             :     1U, // SLL_ri_32
     457             :     1U, // SLL_rr
     458             :     1U, // SLL_rr_32
     459             :     1U, // SRA_ri
     460             :     1U, // SRA_ri_32
     461             :     1U, // SRA_rr
     462             :     1U, // SRA_rr_32
     463             :     2U, // SRL_ri
     464             :     2U, // SRL_ri_32
     465             :     2U, // SRL_rr
     466             :     2U, // SRL_rr_32
     467             :     2U, // STB
     468             :     2U, // STD
     469             :     2U, // STH
     470             :     2U, // STW
     471             :     2U, // SUB_ri
     472             :     2U, // SUB_ri_32
     473             :     2U, // SUB_rr
     474             :     2U, // SUB_rr_32
     475             :     41U,        // Select
     476             :     41U,        // Select_Ri
     477             :     2U, // XADD32
     478             :     2U, // XADD64
     479             :     2U, // XOR_ri
     480             :     2U, // XOR_ri_32
     481             :     2U, // XOR_rr
     482             :     2U, // XOR_rr_32
     483             :   };
     484             : 
     485        1555 :   O << "\t";
     486             : 
     487             :   // Emit the opcode for the instruction.
     488             :   uint32_t Bits = 0;
     489        1555 :   Bits |= OpInfo0[MI->getOpcode()] << 0;
     490        1555 :   Bits |= OpInfo1[MI->getOpcode()] << 16;
     491             :   assert(Bits != 0 && "Cannot print this instruction.");
     492        1555 :   O << AsmStrs+(Bits & 511)-1;
     493             : 
     494             : 
     495             :   // Fragment 0 encoded into 3 bits for 5 unique commands.
     496        1555 :   switch ((Bits >> 9) & 7) {
     497           0 :   default: llvm_unreachable("Invalid command number.");
     498             :   case 0:
     499             :     // DBG_VALUE, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CALL, PATCHABL...
     500             :     return;
     501             :     break;
     502        1143 :   case 1:
     503             :     // ADD_ri, ADD_ri_32, ADD_rr, ADD_rr_32, ADJCALLSTACKDOWN, ADJCALLSTACKUP...
     504        1143 :     printOperand(MI, 0, O);
     505        1143 :     break;
     506          20 :   case 2:
     507             :     // JMP
     508          20 :     printBrTargetOperand(MI, 0, O);
     509          20 :     return;
     510             :     break;
     511          68 :   case 3:
     512             :     // LD_ABS_B, LD_ABS_H, LD_ABS_W, LD_IND_B, LD_IND_H, LD_IND_W
     513          68 :     printOperand(MI, 1, O);
     514             :     O << ']';
     515             :     return;
     516             :     break;
     517         165 :   case 4:
     518             :     // STB, STD, STH, STW, XADD32, XADD64
     519         165 :     printMemOperand(MI, 1, O);
     520         165 :     break;
     521             :   }
     522             : 
     523             : 
     524             :   // Fragment 1 encoded into 6 bits for 37 unique commands.
     525        1308 :   switch ((Bits >> 12) & 63) {
     526           0 :   default: llvm_unreachable("Invalid command number.");
     527         114 :   case 0:
     528             :     // ADD_ri, ADD_ri_32, ADD_rr, ADD_rr_32
     529         114 :     O << " += ";
     530         114 :     printOperand(MI, 2, O);
     531         114 :     return;
     532             :     break;
     533             :   case 1:
     534             :     // ADJCALLSTACKDOWN, ADJCALLSTACKUP
     535             :     O << ' ';
     536           0 :     printOperand(MI, 1, O);
     537           0 :     return;
     538             :     break;
     539          64 :   case 2:
     540             :     // AND_ri, AND_ri_32, AND_rr, AND_rr_32
     541          64 :     O << " &= ";
     542          64 :     printOperand(MI, 2, O);
     543          64 :     return;
     544             :     break;
     545           3 :   case 3:
     546             :     // BE16
     547           3 :     O << " = be16 ";
     548           3 :     printOperand(MI, 1, O);
     549           3 :     return;
     550             :     break;
     551           3 :   case 4:
     552             :     // BE32
     553           3 :     O << " = be32 ";
     554           3 :     printOperand(MI, 1, O);
     555           3 :     return;
     556             :     break;
     557           3 :   case 5:
     558             :     // BE64
     559           3 :     O << " = be64 ";
     560           3 :     printOperand(MI, 1, O);
     561           3 :     return;
     562             :     break;
     563           5 :   case 6:
     564             :     // DIV_ri, DIV_ri_32, DIV_rr, DIV_rr_32
     565           5 :     O << " /= ";
     566           5 :     printOperand(MI, 2, O);
     567           5 :     return;
     568             :     break;
     569           4 :   case 7:
     570             :     // FI_ri, LD_pseudo
     571           4 :     O << ", ";
     572           4 :     break;
     573             :   case 8:
     574             :     // JAL, JALX, NOP
     575             :     return;
     576             :     break;
     577          40 :   case 9:
     578             :     // JEQ_ri, JEQ_rr
     579          40 :     O << " == ";
     580          40 :     printOperand(MI, 1, O);
     581          40 :     O << " goto ";
     582          40 :     printBrTargetOperand(MI, 2, O);
     583          40 :     return;
     584             :     break;
     585          31 :   case 10:
     586             :     // JNE_ri, JNE_rr
     587          31 :     O << " != ";
     588          31 :     printOperand(MI, 1, O);
     589          31 :     O << " goto ";
     590          31 :     printBrTargetOperand(MI, 2, O);
     591          31 :     return;
     592             :     break;
     593           8 :   case 11:
     594             :     // JSGE_ri, JSGE_rr
     595           8 :     O << " s>= ";
     596           8 :     printOperand(MI, 1, O);
     597           8 :     O << " goto ";
     598           8 :     printBrTargetOperand(MI, 2, O);
     599           8 :     return;
     600             :     break;
     601          13 :   case 12:
     602             :     // JSGT_ri, JSGT_rr
     603          13 :     O << " s> ";
     604          13 :     printOperand(MI, 1, O);
     605          13 :     O << " goto ";
     606          13 :     printBrTargetOperand(MI, 2, O);
     607          13 :     return;
     608             :     break;
     609           3 :   case 13:
     610             :     // JSLE_ri, JSLE_rr
     611           3 :     O << " s<= ";
     612           3 :     printOperand(MI, 1, O);
     613           3 :     O << " goto ";
     614           3 :     printBrTargetOperand(MI, 2, O);
     615           3 :     return;
     616             :     break;
     617           3 :   case 14:
     618             :     // JSLT_ri, JSLT_rr
     619           3 :     O << " s< ";
     620           3 :     printOperand(MI, 1, O);
     621           3 :     O << " goto ";
     622           3 :     printBrTargetOperand(MI, 2, O);
     623           3 :     return;
     624             :     break;
     625           5 :   case 15:
     626             :     // JUGE_ri, JUGE_rr
     627           5 :     O << " >= ";
     628           5 :     printOperand(MI, 1, O);
     629           5 :     O << " goto ";
     630           5 :     printBrTargetOperand(MI, 2, O);
     631           5 :     return;
     632             :     break;
     633           6 :   case 16:
     634             :     // JUGT_ri, JUGT_rr
     635           6 :     O << " > ";
     636           6 :     printOperand(MI, 1, O);
     637           6 :     O << " goto ";
     638           6 :     printBrTargetOperand(MI, 2, O);
     639           6 :     return;
     640             :     break;
     641           3 :   case 17:
     642             :     // JULE_ri, JULE_rr
     643           3 :     O << " <= ";
     644           3 :     printOperand(MI, 1, O);
     645           3 :     O << " goto ";
     646           3 :     printBrTargetOperand(MI, 2, O);
     647           3 :     return;
     648             :     break;
     649           3 :   case 18:
     650             :     // JULT_ri, JULT_rr
     651           3 :     O << " < ";
     652           3 :     printOperand(MI, 1, O);
     653           3 :     O << " goto ";
     654           3 :     printBrTargetOperand(MI, 2, O);
     655           3 :     return;
     656             :     break;
     657           9 :   case 19:
     658             :     // LDB
     659           9 :     O << " = *(u8 *)(";
     660           9 :     printMemOperand(MI, 1, O);
     661             :     O << ')';
     662             :     return;
     663             :     break;
     664          32 :   case 20:
     665             :     // LDD
     666          32 :     O << " = *(u64 *)(";
     667          32 :     printMemOperand(MI, 1, O);
     668             :     O << ')';
     669             :     return;
     670             :     break;
     671          11 :   case 21:
     672             :     // LDH
     673          11 :     O << " = *(u16 *)(";
     674          11 :     printMemOperand(MI, 1, O);
     675             :     O << ')';
     676             :     return;
     677             :     break;
     678          21 :   case 22:
     679             :     // LDW
     680          21 :     O << " = *(u32 *)(";
     681          21 :     printMemOperand(MI, 1, O);
     682             :     O << ')';
     683             :     return;
     684             :     break;
     685         512 :   case 23:
     686             :     // LD_imm64, MOV_ri, MOV_ri_32, MOV_rr, MOV_rr_32, Select, Select_Ri
     687         512 :     O << " = ";
     688         512 :     break;
     689           2 :   case 24:
     690             :     // LE16
     691           2 :     O << " = le16 ";
     692           2 :     printOperand(MI, 1, O);
     693           2 :     return;
     694             :     break;
     695           2 :   case 25:
     696             :     // LE32
     697           2 :     O << " = le32 ";
     698           2 :     printOperand(MI, 1, O);
     699           2 :     return;
     700             :     break;
     701           2 :   case 26:
     702             :     // LE64
     703           2 :     O << " = le64 ";
     704           2 :     printOperand(MI, 1, O);
     705           2 :     return;
     706             :     break;
     707          12 :   case 27:
     708             :     // MUL_ri, MUL_ri_32, MUL_rr, MUL_rr_32
     709          12 :     O << " *= ";
     710          12 :     printOperand(MI, 2, O);
     711          12 :     return;
     712             :     break;
     713           3 :   case 28:
     714             :     // NEG_32, NEG_64
     715           3 :     O << " = -";
     716           3 :     printOperand(MI, 1, O);
     717           3 :     return;
     718             :     break;
     719           9 :   case 29:
     720             :     // OR_ri, OR_ri_32, OR_rr, OR_rr_32
     721           9 :     O << " |= ";
     722           9 :     printOperand(MI, 2, O);
     723           9 :     return;
     724             :     break;
     725          79 :   case 30:
     726             :     // SLL_ri, SLL_ri_32, SLL_rr, SLL_rr_32
     727          79 :     O << " <<= ";
     728          79 :     printOperand(MI, 2, O);
     729          79 :     return;
     730             :     break;
     731          49 :   case 31:
     732             :     // SRA_ri, SRA_ri_32, SRA_rr, SRA_rr_32
     733          49 :     O << " s>>= ";
     734          49 :     printOperand(MI, 2, O);
     735          49 :     return;
     736             :     break;
     737          23 :   case 32:
     738             :     // SRL_ri, SRL_ri_32, SRL_rr, SRL_rr_32
     739          23 :     O << " >>= ";
     740          23 :     printOperand(MI, 2, O);
     741          23 :     return;
     742             :     break;
     743         158 :   case 33:
     744             :     // STB, STD, STH, STW
     745         158 :     O << ") = ";
     746         158 :     printOperand(MI, 0, O);
     747         158 :     return;
     748             :     break;
     749           7 :   case 34:
     750             :     // SUB_ri, SUB_ri_32, SUB_rr, SUB_rr_32
     751           7 :     O << " -= ";
     752           7 :     printOperand(MI, 2, O);
     753           7 :     return;
     754             :     break;
     755           7 :   case 35:
     756             :     // XADD32, XADD64
     757           7 :     O << ") += ";
     758           7 :     printOperand(MI, 3, O);
     759           7 :     return;
     760             :     break;
     761          16 :   case 36:
     762             :     // XOR_ri, XOR_ri_32, XOR_rr, XOR_rr_32
     763          16 :     O << " ^= ";
     764          16 :     printOperand(MI, 2, O);
     765          16 :     return;
     766             :     break;
     767             :   }
     768             : 
     769             : 
     770             :   // Fragment 2 encoded into 2 bits for 3 unique commands.
     771         516 :   switch ((Bits >> 18) & 3) {
     772           0 :   default: llvm_unreachable("Invalid command number.");
     773           0 :   case 0:
     774             :     // FI_ri
     775           0 :     printMemOperand(MI, 1, O);
     776           0 :     return;
     777             :     break;
     778          75 :   case 1:
     779             :     // LD_imm64
     780          75 :     printImm64Operand(MI, 1, O);
     781          75 :     O << " ll";
     782          75 :     return;
     783             :     break;
     784         441 :   case 2:
     785             :     // LD_pseudo, MOV_ri, MOV_ri_32, MOV_rr, MOV_rr_32, Select, Select_Ri
     786         441 :     printOperand(MI, 1, O);
     787             :     break;
     788             :   }
     789             : 
     790             : 
     791             :   // Fragment 3 encoded into 2 bits for 3 unique commands.
     792         441 :   switch ((Bits >> 20) & 3) {
     793           0 :   default: llvm_unreachable("Invalid command number.");
     794           4 :   case 0:
     795             :     // LD_pseudo
     796           4 :     O << ", ";
     797           4 :     printImm64Operand(MI, 2, O);
     798           4 :     return;
     799             :     break;
     800             :   case 1:
     801             :     // MOV_ri, MOV_ri_32, MOV_rr, MOV_rr_32
     802             :     return;
     803             :     break;
     804             :   case 2:
     805             :     // Select, Select_Ri
     806             :     O << ' ';
     807           0 :     printOperand(MI, 3, O);
     808             :     O << ' ';
     809           0 :     printOperand(MI, 2, O);
     810           0 :     O << " ? ";
     811           0 :     printOperand(MI, 4, O);
     812           0 :     O << " : ";
     813           0 :     printOperand(MI, 5, O);
     814           0 :     return;
     815             :     break;
     816             :   }
     817             : 
     818             : }
     819             : 
     820             : 
     821             : /// getRegisterName - This method is automatically generated by tblgen
     822             : /// from the register set description.  This returns the assembler name
     823             : /// for the specified register.
     824        1991 : const char *BPFInstPrinter::getRegisterName(unsigned RegNo) {
     825             :   assert(RegNo && RegNo < 25 && "Invalid register number!");
     826             : 
     827             :   static const char AsmStrs[] = {
     828             :   /* 0 */ 'r', '1', '0', 0,
     829             :   /* 4 */ 'w', '1', '0', 0,
     830             :   /* 8 */ 'r', '0', 0,
     831             :   /* 11 */ 'w', '0', 0,
     832             :   /* 14 */ 'r', '1', '1', 0,
     833             :   /* 18 */ 'w', '1', '1', 0,
     834             :   /* 22 */ 'r', '1', 0,
     835             :   /* 25 */ 'w', '1', 0,
     836             :   /* 28 */ 'r', '2', 0,
     837             :   /* 31 */ 'w', '2', 0,
     838             :   /* 34 */ 'r', '3', 0,
     839             :   /* 37 */ 'w', '3', 0,
     840             :   /* 40 */ 'r', '4', 0,
     841             :   /* 43 */ 'w', '4', 0,
     842             :   /* 46 */ 'r', '5', 0,
     843             :   /* 49 */ 'w', '5', 0,
     844             :   /* 52 */ 'r', '6', 0,
     845             :   /* 55 */ 'w', '6', 0,
     846             :   /* 58 */ 'r', '7', 0,
     847             :   /* 61 */ 'w', '7', 0,
     848             :   /* 64 */ 'r', '8', 0,
     849             :   /* 67 */ 'w', '8', 0,
     850             :   /* 70 */ 'r', '9', 0,
     851             :   /* 73 */ 'w', '9', 0,
     852             :   };
     853             : 
     854             :   static const uint8_t RegAsmOffset[] = {
     855             :     8, 22, 28, 34, 40, 46, 52, 58, 64, 70, 0, 14, 11, 25, 
     856             :     31, 37, 43, 49, 55, 61, 67, 73, 4, 18, 
     857             :   };
     858             : 
     859             :   assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
     860             :           "Invalid alt name index for register!");
     861        1991 :   return AsmStrs+RegAsmOffset[RegNo-1];
     862             : }
     863             : 
     864             : #ifdef PRINT_ALIAS_INSTR
     865             : #undef PRINT_ALIAS_INSTR
     866             : 
     867             : bool BPFInstPrinter::printAliasInstr(const MCInst *MI, raw_ostream &OS) {
     868             :   return false;
     869             : }
     870             : 
     871             : #endif // PRINT_ALIAS_INSTR

Generated by: LCOV version 1.13