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: 156 177 88.1 %
Date: 2017-09-14 15:23:50 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        1284 : void BPFInstPrinter::printInstruction(const MCInst *MI, raw_ostream &O) {
      12             :   static const char AsmStrs[] = {
      13             :   /* 0 */ 'b', 's', 'w', 'a', 'p', '3', '2', 9, 0,
      14             :   /* 9 */ 'b', 's', 'w', 'a', 'p', '6', '4', 9, 0,
      15             :   /* 18 */ 'b', 's', 'w', 'a', 'p', '1', '6', 9, 0,
      16             :   /* 27 */ 'l', 'e', 'a', 9, 0,
      17             :   /* 32 */ 'l', 'd', '_', 'p', 's', 'e', 'u', 'd', 'o', 9, 0,
      18             :   /* 43 */ 'n', 'o', 'p', 9, 0,
      19             :   /* 48 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 32, 0,
      20             :   /* 67 */ '#', 32, 'S', 'e', 'l', 'e', 'c', 't', 32, 'P', 'S', 'E', 'U', 'D', 'O', 32, 0,
      21             :   /* 84 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 32, 0,
      22             :   /* 101 */ 'i', 'f', 32, 0,
      23             :   /* 105 */ 'c', 'a', 'l', 'l', 32, 0,
      24             :   /* 111 */ 'g', 'o', 't', 'o', 32, 0,
      25             :   /* 117 */ 'l', 'o', 'c', 'k', 32, '*', '(', 'u', '3', '2', 32, '*', ')', '(', 0,
      26             :   /* 132 */ 'l', 'o', 'c', 'k', 32, '*', '(', 'u', '6', '4', 32, '*', ')', '(', 0,
      27             :   /* 147 */ '*', '(', 'u', '1', '6', 32, '*', ')', '(', 0,
      28             :   /* 157 */ '*', '(', 'u', '8', 32, '*', ')', '(', 0,
      29             :   /* 166 */ '#', 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,
      30             :   /* 197 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
      31             :   /* 222 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
      32             :   /* 245 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
      33             :   /* 268 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
      34             :   /* 290 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
      35             :   /* 303 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
      36             :   /* 310 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
      37             :   /* 320 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
      38             :   /* 335 */ 'r', '0', 32, '=', 32, '*', '(', 'u', '3', '2', 32, '*', ')', 's', 'k', 'b', '[', 0,
      39             :   /* 353 */ 'r', '0', 32, '=', 32, '*', '(', 'u', '1', '6', 32, '*', ')', 's', 'k', 'b', '[', 0,
      40             :   /* 371 */ 'r', '0', 32, '=', 32, '*', '(', 'u', '8', 32, '*', ')', 's', 'k', 'b', '[', 0,
      41             :   /* 388 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
      42             :   /* 402 */ 'e', 'x', 'i', 't', 0,
      43             :   };
      44             : 
      45             :   static const uint16_t OpInfo0[] = {
      46             :     0U, // PHI
      47             :     0U, // INLINEASM
      48             :     0U, // CFI_INSTRUCTION
      49             :     0U, // EH_LABEL
      50             :     0U, // GC_LABEL
      51             :     0U, // ANNOTATION_LABEL
      52             :     0U, // KILL
      53             :     0U, // EXTRACT_SUBREG
      54             :     0U, // INSERT_SUBREG
      55             :     0U, // IMPLICIT_DEF
      56             :     0U, // SUBREG_TO_REG
      57             :     0U, // COPY_TO_REGCLASS
      58             :     311U,       // DBG_VALUE
      59             :     0U, // REG_SEQUENCE
      60             :     0U, // COPY
      61             :     304U,       // BUNDLE
      62             :     321U,       // LIFETIME_START
      63             :     291U,       // LIFETIME_END
      64             :     0U, // STACKMAP
      65             :     389U,       // FENTRY_CALL
      66             :     0U, // PATCHPOINT
      67             :     0U, // LOAD_STACK_GUARD
      68             :     0U, // STATEPOINT
      69             :     0U, // LOCAL_ESCAPE
      70             :     0U, // FAULTING_OP
      71             :     0U, // PATCHABLE_OP
      72             :     223U,       // PATCHABLE_FUNCTION_ENTER
      73             :     167U,       // PATCHABLE_RET
      74             :     269U,       // PATCHABLE_FUNCTION_EXIT
      75             :     246U,       // PATCHABLE_TAIL_CALL
      76             :     198U,       // PATCHABLE_EVENT_CALL
      77             :     0U, // G_ADD
      78             :     0U, // G_SUB
      79             :     0U, // G_MUL
      80             :     0U, // G_SDIV
      81             :     0U, // G_UDIV
      82             :     0U, // G_SREM
      83             :     0U, // G_UREM
      84             :     0U, // G_AND
      85             :     0U, // G_OR
      86             :     0U, // G_XOR
      87             :     0U, // G_IMPLICIT_DEF
      88             :     0U, // G_PHI
      89             :     0U, // G_FRAME_INDEX
      90             :     0U, // G_GLOBAL_VALUE
      91             :     0U, // G_EXTRACT
      92             :     0U, // G_UNMERGE_VALUES
      93             :     0U, // G_INSERT
      94             :     0U, // G_MERGE_VALUES
      95             :     0U, // G_PTRTOINT
      96             :     0U, // G_INTTOPTR
      97             :     0U, // G_BITCAST
      98             :     0U, // G_LOAD
      99             :     0U, // G_STORE
     100             :     0U, // G_BRCOND
     101             :     0U, // G_BRINDIRECT
     102             :     0U, // G_INTRINSIC
     103             :     0U, // G_INTRINSIC_W_SIDE_EFFECTS
     104             :     0U, // G_ANYEXT
     105             :     0U, // G_TRUNC
     106             :     0U, // G_CONSTANT
     107             :     0U, // G_FCONSTANT
     108             :     0U, // G_VASTART
     109             :     0U, // G_VAARG
     110             :     0U, // G_SEXT
     111             :     0U, // G_ZEXT
     112             :     0U, // G_SHL
     113             :     0U, // G_LSHR
     114             :     0U, // G_ASHR
     115             :     0U, // G_ICMP
     116             :     0U, // G_FCMP
     117             :     0U, // G_SELECT
     118             :     0U, // G_UADDE
     119             :     0U, // G_USUBE
     120             :     0U, // G_SADDO
     121             :     0U, // G_SSUBO
     122             :     0U, // G_UMULO
     123             :     0U, // G_SMULO
     124             :     0U, // G_UMULH
     125             :     0U, // G_SMULH
     126             :     0U, // G_FADD
     127             :     0U, // G_FSUB
     128             :     0U, // G_FMUL
     129             :     0U, // G_FMA
     130             :     0U, // G_FDIV
     131             :     0U, // G_FREM
     132             :     0U, // G_FPOW
     133             :     0U, // G_FEXP
     134             :     0U, // G_FEXP2
     135             :     0U, // G_FLOG
     136             :     0U, // G_FLOG2
     137             :     0U, // G_FNEG
     138             :     0U, // G_FPEXT
     139             :     0U, // G_FPTRUNC
     140             :     0U, // G_FPTOSI
     141             :     0U, // G_FPTOUI
     142             :     0U, // G_SITOFP
     143             :     0U, // G_UITOFP
     144             :     0U, // G_GEP
     145             :     0U, // G_PTR_MASK
     146             :     0U, // G_BR
     147             :     0U, // G_INSERT_VECTOR_ELT
     148             :     0U, // G_EXTRACT_VECTOR_ELT
     149             :     0U, // G_SHUFFLE_VECTOR
     150             :     521U,       // ADD_ri
     151             :     521U,       // ADD_rr
     152             :     2609U,      // ADJCALLSTACKDOWN
     153             :     2645U,      // ADJCALLSTACKUP
     154             :     4617U,      // AND_ri
     155             :     4617U,      // AND_rr
     156             :     6675U,      // BSWAP16
     157             :     6657U,      // BSWAP32
     158             :     6666U,      // BSWAP64
     159             :     8713U,      // DIV_ri
     160             :     8713U,      // DIV_rr
     161             :     10780U,     // FI_ri
     162             :     6762U,      // JAL
     163             :     12902U,     // JEQ_ri
     164             :     12902U,     // JEQ_rr
     165             :     6768U,      // JMP
     166             :     14950U,     // JNE_ri
     167             :     14950U,     // JNE_rr
     168             :     16998U,     // JSGE_ri
     169             :     16998U,     // JSGE_rr
     170             :     19046U,     // JSGT_ri
     171             :     19046U,     // JSGT_rr
     172             :     21094U,     // JSLE_ri
     173             :     21094U,     // JSLE_rr
     174             :     23142U,     // JSLT_ri
     175             :     23142U,     // JSLT_rr
     176             :     25190U,     // JUGE_ri
     177             :     25190U,     // JUGE_rr
     178             :     27238U,     // JUGT_ri
     179             :     27238U,     // JUGT_rr
     180             :     29286U,     // JULE_ri
     181             :     29286U,     // JULE_rr
     182             :     31334U,     // JULT_ri
     183             :     31334U,     // JULT_rr
     184             :     33289U,     // LDB
     185             :     35337U,     // LDD
     186             :     37385U,     // LDH
     187             :     39433U,     // LDW
     188             :     1396U,      // LD_ABS_B
     189             :     1378U,      // LD_ABS_H
     190             :     1360U,      // LD_ABS_W
     191             :     1396U,      // LD_IND_B
     192             :     1378U,      // LD_IND_H
     193             :     1360U,      // LD_IND_W
     194             :     41481U,     // LD_imm64
     195             :     10785U,     // LD_pseudo
     196             :     41481U,     // MOV_ri
     197             :     41481U,     // MOV_rr
     198             :     43529U,     // MUL_ri
     199             :     43529U,     // MUL_rr
     200             :     6700U,      // NOP
     201             :     45577U,     // OR_ri
     202             :     45577U,     // OR_rr
     203             :     403U,       // RET
     204             :     47625U,     // SLL_ri
     205             :     47625U,     // SLL_rr
     206             :     49673U,     // SRA_ri
     207             :     49673U,     // SRA_rr
     208             :     51721U,     // SRL_ri
     209             :     51721U,     // SRL_rr
     210             :     54942U,     // STB
     211             :     54922U,     // STD
     212             :     54932U,     // STH
     213             :     54907U,     // STW
     214             :     55817U,     // SUB_ri
     215             :     55817U,     // SUB_rr
     216             :     41540U,     // Select
     217             :     41540U,     // Select_Ri
     218             :     58998U,     // XADD32
     219             :     59013U,     // XADD64
     220             :     59913U,     // XOR_ri
     221             :     59913U,     // XOR_rr
     222             :   };
     223             : 
     224             :   static const uint8_t OpInfo1[] = {
     225             :     0U, // PHI
     226             :     0U, // INLINEASM
     227             :     0U, // CFI_INSTRUCTION
     228             :     0U, // EH_LABEL
     229             :     0U, // GC_LABEL
     230             :     0U, // ANNOTATION_LABEL
     231             :     0U, // KILL
     232             :     0U, // EXTRACT_SUBREG
     233             :     0U, // INSERT_SUBREG
     234             :     0U, // IMPLICIT_DEF
     235             :     0U, // SUBREG_TO_REG
     236             :     0U, // COPY_TO_REGCLASS
     237             :     0U, // DBG_VALUE
     238             :     0U, // REG_SEQUENCE
     239             :     0U, // COPY
     240             :     0U, // BUNDLE
     241             :     0U, // LIFETIME_START
     242             :     0U, // LIFETIME_END
     243             :     0U, // STACKMAP
     244             :     0U, // FENTRY_CALL
     245             :     0U, // PATCHPOINT
     246             :     0U, // LOAD_STACK_GUARD
     247             :     0U, // STATEPOINT
     248             :     0U, // LOCAL_ESCAPE
     249             :     0U, // FAULTING_OP
     250             :     0U, // PATCHABLE_OP
     251             :     0U, // PATCHABLE_FUNCTION_ENTER
     252             :     0U, // PATCHABLE_RET
     253             :     0U, // PATCHABLE_FUNCTION_EXIT
     254             :     0U, // PATCHABLE_TAIL_CALL
     255             :     0U, // PATCHABLE_EVENT_CALL
     256             :     0U, // G_ADD
     257             :     0U, // G_SUB
     258             :     0U, // G_MUL
     259             :     0U, // G_SDIV
     260             :     0U, // G_UDIV
     261             :     0U, // G_SREM
     262             :     0U, // G_UREM
     263             :     0U, // G_AND
     264             :     0U, // G_OR
     265             :     0U, // G_XOR
     266             :     0U, // G_IMPLICIT_DEF
     267             :     0U, // G_PHI
     268             :     0U, // G_FRAME_INDEX
     269             :     0U, // G_GLOBAL_VALUE
     270             :     0U, // G_EXTRACT
     271             :     0U, // G_UNMERGE_VALUES
     272             :     0U, // G_INSERT
     273             :     0U, // G_MERGE_VALUES
     274             :     0U, // G_PTRTOINT
     275             :     0U, // G_INTTOPTR
     276             :     0U, // G_BITCAST
     277             :     0U, // G_LOAD
     278             :     0U, // G_STORE
     279             :     0U, // G_BRCOND
     280             :     0U, // G_BRINDIRECT
     281             :     0U, // G_INTRINSIC
     282             :     0U, // G_INTRINSIC_W_SIDE_EFFECTS
     283             :     0U, // G_ANYEXT
     284             :     0U, // G_TRUNC
     285             :     0U, // G_CONSTANT
     286             :     0U, // G_FCONSTANT
     287             :     0U, // G_VASTART
     288             :     0U, // G_VAARG
     289             :     0U, // G_SEXT
     290             :     0U, // G_ZEXT
     291             :     0U, // G_SHL
     292             :     0U, // G_LSHR
     293             :     0U, // G_ASHR
     294             :     0U, // G_ICMP
     295             :     0U, // G_FCMP
     296             :     0U, // G_SELECT
     297             :     0U, // G_UADDE
     298             :     0U, // G_USUBE
     299             :     0U, // G_SADDO
     300             :     0U, // G_SSUBO
     301             :     0U, // G_UMULO
     302             :     0U, // G_SMULO
     303             :     0U, // G_UMULH
     304             :     0U, // G_SMULH
     305             :     0U, // G_FADD
     306             :     0U, // G_FSUB
     307             :     0U, // G_FMUL
     308             :     0U, // G_FMA
     309             :     0U, // G_FDIV
     310             :     0U, // G_FREM
     311             :     0U, // G_FPOW
     312             :     0U, // G_FEXP
     313             :     0U, // G_FEXP2
     314             :     0U, // G_FLOG
     315             :     0U, // G_FLOG2
     316             :     0U, // G_FNEG
     317             :     0U, // G_FPEXT
     318             :     0U, // G_FPTRUNC
     319             :     0U, // G_FPTOSI
     320             :     0U, // G_FPTOUI
     321             :     0U, // G_SITOFP
     322             :     0U, // G_UITOFP
     323             :     0U, // G_GEP
     324             :     0U, // G_PTR_MASK
     325             :     0U, // G_BR
     326             :     0U, // G_INSERT_VECTOR_ELT
     327             :     0U, // G_EXTRACT_VECTOR_ELT
     328             :     0U, // G_SHUFFLE_VECTOR
     329             :     0U, // ADD_ri
     330             :     0U, // ADD_rr
     331             :     0U, // ADJCALLSTACKDOWN
     332             :     0U, // ADJCALLSTACKUP
     333             :     0U, // AND_ri
     334             :     0U, // AND_rr
     335             :     0U, // BSWAP16
     336             :     0U, // BSWAP32
     337             :     0U, // BSWAP64
     338             :     0U, // DIV_ri
     339             :     0U, // DIV_rr
     340             :     0U, // FI_ri
     341             :     0U, // JAL
     342             :     0U, // JEQ_ri
     343             :     0U, // JEQ_rr
     344             :     0U, // JMP
     345             :     0U, // JNE_ri
     346             :     0U, // JNE_rr
     347             :     0U, // JSGE_ri
     348             :     0U, // JSGE_rr
     349             :     0U, // JSGT_ri
     350             :     0U, // JSGT_rr
     351             :     0U, // JSLE_ri
     352             :     0U, // JSLE_rr
     353             :     0U, // JSLT_ri
     354             :     0U, // JSLT_rr
     355             :     0U, // JUGE_ri
     356             :     0U, // JUGE_rr
     357             :     0U, // JUGT_ri
     358             :     0U, // JUGT_rr
     359             :     0U, // JULE_ri
     360             :     0U, // JULE_rr
     361             :     0U, // JULT_ri
     362             :     0U, // JULT_rr
     363             :     0U, // LDB
     364             :     0U, // LDD
     365             :     0U, // LDH
     366             :     0U, // LDW
     367             :     0U, // LD_ABS_B
     368             :     0U, // LD_ABS_H
     369             :     0U, // LD_ABS_W
     370             :     0U, // LD_IND_B
     371             :     0U, // LD_IND_H
     372             :     0U, // LD_IND_W
     373             :     1U, // LD_imm64
     374             :     2U, // LD_pseudo
     375             :     6U, // MOV_ri
     376             :     6U, // MOV_rr
     377             :     0U, // MUL_ri
     378             :     0U, // MUL_rr
     379             :     0U, // NOP
     380             :     0U, // OR_ri
     381             :     0U, // OR_rr
     382             :     0U, // RET
     383             :     0U, // SLL_ri
     384             :     0U, // SLL_rr
     385             :     0U, // SRA_ri
     386             :     0U, // SRA_rr
     387             :     0U, // SRL_ri
     388             :     0U, // SRL_rr
     389             :     0U, // STB
     390             :     0U, // STD
     391             :     0U, // STH
     392             :     0U, // STW
     393             :     0U, // SUB_ri
     394             :     0U, // SUB_rr
     395             :     10U,        // Select
     396             :     10U,        // Select_Ri
     397             :     0U, // XADD32
     398             :     0U, // XADD64
     399             :     0U, // XOR_ri
     400             :     0U, // XOR_rr
     401             :   };
     402             : 
     403        1284 :   O << "\t";
     404             : 
     405             :   // Emit the opcode for the instruction.
     406        1284 :   uint32_t Bits = 0;
     407        1284 :   Bits |= OpInfo0[MI->getOpcode()] << 0;
     408        1284 :   Bits |= OpInfo1[MI->getOpcode()] << 16;
     409             :   assert(Bits != 0 && "Cannot print this instruction.");
     410        1284 :   O << AsmStrs+(Bits & 511)-1;
     411             : 
     412             : 
     413             :   // Fragment 0 encoded into 2 bits for 4 unique commands.
     414        1284 :   switch ((Bits >> 9) & 3) {
     415           0 :   default: llvm_unreachable("Invalid command number.");
     416             :   case 0:
     417             :     // DBG_VALUE, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CALL, PATCHABL...
     418             :     return;
     419             :     break;
     420         935 :   case 1:
     421             :     // ADD_ri, ADD_rr, ADJCALLSTACKDOWN, ADJCALLSTACKUP, AND_ri, AND_rr, BSWA...
     422         935 :     printOperand(MI, 0, O);
     423         935 :     break;
     424          52 :   case 2:
     425             :     // LD_ABS_B, LD_ABS_H, LD_ABS_W, LD_IND_B, LD_IND_H, LD_IND_W
     426          52 :     printOperand(MI, 1, O);
     427             :     O << ']';
     428             :     return;
     429             :     break;
     430         161 :   case 3:
     431             :     // STB, STD, STH, STW, XADD32, XADD64
     432         161 :     printMemOperand(MI, 1, O);
     433         161 :     break;
     434             :   }
     435             : 
     436             : 
     437             :   // Fragment 1 encoded into 5 bits for 30 unique commands.
     438        1096 :   switch ((Bits >> 11) & 31) {
     439           0 :   default: llvm_unreachable("Invalid command number.");
     440          92 :   case 0:
     441             :     // ADD_ri, ADD_rr
     442          92 :     O << " += ";
     443          92 :     printOperand(MI, 2, O);
     444          92 :     return;
     445             :     break;
     446           0 :   case 1:
     447             :     // ADJCALLSTACKDOWN, ADJCALLSTACKUP
     448           0 :     O << ' ';
     449           0 :     printOperand(MI, 1, O);
     450           0 :     return;
     451             :     break;
     452          61 :   case 2:
     453             :     // AND_ri, AND_rr
     454          61 :     O << " &= ";
     455          61 :     printOperand(MI, 2, O);
     456          61 :     return;
     457             :     break;
     458             :   case 3:
     459             :     // BSWAP16, BSWAP32, BSWAP64, JAL, JMP, NOP
     460             :     return;
     461             :     break;
     462           3 :   case 4:
     463             :     // DIV_ri, DIV_rr
     464           3 :     O << " /= ";
     465           3 :     printOperand(MI, 2, O);
     466           3 :     return;
     467             :     break;
     468           2 :   case 5:
     469             :     // FI_ri, LD_pseudo
     470           2 :     O << ", ";
     471           2 :     break;
     472          35 :   case 6:
     473             :     // JEQ_ri, JEQ_rr
     474          35 :     O << " == ";
     475          35 :     printOperand(MI, 1, O);
     476          35 :     O << " goto ";
     477          35 :     printOperand(MI, 2, O);
     478          35 :     return;
     479             :     break;
     480          25 :   case 7:
     481             :     // JNE_ri, JNE_rr
     482          25 :     O << " != ";
     483          25 :     printOperand(MI, 1, O);
     484          25 :     O << " goto ";
     485          25 :     printOperand(MI, 2, O);
     486          25 :     return;
     487             :     break;
     488           7 :   case 8:
     489             :     // JSGE_ri, JSGE_rr
     490           7 :     O << " s>= ";
     491           7 :     printOperand(MI, 1, O);
     492           7 :     O << " goto ";
     493           7 :     printOperand(MI, 2, O);
     494           7 :     return;
     495             :     break;
     496          11 :   case 9:
     497             :     // JSGT_ri, JSGT_rr
     498          11 :     O << " s> ";
     499          11 :     printOperand(MI, 1, O);
     500          11 :     O << " goto ";
     501          11 :     printOperand(MI, 2, O);
     502          11 :     return;
     503             :     break;
     504           3 :   case 10:
     505             :     // JSLE_ri, JSLE_rr
     506           3 :     O << " s<= ";
     507           3 :     printOperand(MI, 1, O);
     508           3 :     O << " goto ";
     509           3 :     printOperand(MI, 2, O);
     510           3 :     return;
     511             :     break;
     512           3 :   case 11:
     513             :     // JSLT_ri, JSLT_rr
     514           3 :     O << " s< ";
     515           3 :     printOperand(MI, 1, O);
     516           3 :     O << " goto ";
     517           3 :     printOperand(MI, 2, O);
     518           3 :     return;
     519             :     break;
     520           5 :   case 12:
     521             :     // JUGE_ri, JUGE_rr
     522           5 :     O << " >= ";
     523           5 :     printOperand(MI, 1, O);
     524           5 :     O << " goto ";
     525           5 :     printOperand(MI, 2, O);
     526           5 :     return;
     527             :     break;
     528           6 :   case 13:
     529             :     // JUGT_ri, JUGT_rr
     530           6 :     O << " > ";
     531           6 :     printOperand(MI, 1, O);
     532           6 :     O << " goto ";
     533           6 :     printOperand(MI, 2, O);
     534           6 :     return;
     535             :     break;
     536           3 :   case 14:
     537             :     // JULE_ri, JULE_rr
     538           3 :     O << " <= ";
     539           3 :     printOperand(MI, 1, O);
     540           3 :     O << " goto ";
     541           3 :     printOperand(MI, 2, O);
     542           3 :     return;
     543             :     break;
     544           3 :   case 15:
     545             :     // JULT_ri, JULT_rr
     546           3 :     O << " < ";
     547           3 :     printOperand(MI, 1, O);
     548           3 :     O << " goto ";
     549           3 :     printOperand(MI, 2, O);
     550           3 :     return;
     551             :     break;
     552           6 :   case 16:
     553             :     // LDB
     554           6 :     O << " = *(u8 *)(";
     555           6 :     printMemOperand(MI, 1, O);
     556             :     O << ')';
     557             :     return;
     558             :     break;
     559          26 :   case 17:
     560             :     // LDD
     561          26 :     O << " = *(u64 *)(";
     562          26 :     printMemOperand(MI, 1, O);
     563             :     O << ')';
     564             :     return;
     565             :     break;
     566          11 :   case 18:
     567             :     // LDH
     568          11 :     O << " = *(u16 *)(";
     569          11 :     printMemOperand(MI, 1, O);
     570             :     O << ')';
     571             :     return;
     572             :     break;
     573           9 :   case 19:
     574             :     // LDW
     575           9 :     O << " = *(u32 *)(";
     576           9 :     printMemOperand(MI, 1, O);
     577             :     O << ')';
     578             :     return;
     579             :     break;
     580         420 :   case 20:
     581             :     // LD_imm64, MOV_ri, MOV_rr, Select, Select_Ri
     582         420 :     O << " = ";
     583         420 :     break;
     584           7 :   case 21:
     585             :     // MUL_ri, MUL_rr
     586           7 :     O << " *= ";
     587           7 :     printOperand(MI, 2, O);
     588           7 :     return;
     589             :     break;
     590           4 :   case 22:
     591             :     // OR_ri, OR_rr
     592           4 :     O << " |= ";
     593           4 :     printOperand(MI, 2, O);
     594           4 :     return;
     595             :     break;
     596          56 :   case 23:
     597             :     // SLL_ri, SLL_rr
     598          56 :     O << " <<= ";
     599          56 :     printOperand(MI, 2, O);
     600          56 :     return;
     601             :     break;
     602          38 :   case 24:
     603             :     // SRA_ri, SRA_rr
     604          38 :     O << " s>>= ";
     605          38 :     printOperand(MI, 2, O);
     606          38 :     return;
     607             :     break;
     608          16 :   case 25:
     609             :     // SRL_ri, SRL_rr
     610          16 :     O << " >>= ";
     611          16 :     printOperand(MI, 2, O);
     612          16 :     return;
     613             :     break;
     614         154 :   case 26:
     615             :     // STB, STD, STH, STW
     616         154 :     O << ") = ";
     617         154 :     printOperand(MI, 0, O);
     618         154 :     return;
     619             :     break;
     620           4 :   case 27:
     621             :     // SUB_ri, SUB_rr
     622           4 :     O << " -= ";
     623           4 :     printOperand(MI, 2, O);
     624           4 :     return;
     625             :     break;
     626           7 :   case 28:
     627             :     // XADD32, XADD64
     628           7 :     O << ") += ";
     629           7 :     printOperand(MI, 3, O);
     630           7 :     return;
     631             :     break;
     632          14 :   case 29:
     633             :     // XOR_ri, XOR_rr
     634          14 :     O << " ^= ";
     635          14 :     printOperand(MI, 2, O);
     636          14 :     return;
     637             :     break;
     638             :   }
     639             : 
     640             : 
     641             :   // Fragment 2 encoded into 2 bits for 3 unique commands.
     642         422 :   switch ((Bits >> 16) & 3) {
     643           0 :   default: llvm_unreachable("Invalid command number.");
     644           0 :   case 0:
     645             :     // FI_ri
     646           0 :     printMemOperand(MI, 1, O);
     647           0 :     return;
     648             :     break;
     649          54 :   case 1:
     650             :     // LD_imm64
     651          54 :     printImm64Operand(MI, 1, O);
     652          54 :     O << " ll";
     653          54 :     return;
     654             :     break;
     655         368 :   case 2:
     656             :     // LD_pseudo, MOV_ri, MOV_rr, Select, Select_Ri
     657         368 :     printOperand(MI, 1, O);
     658             :     break;
     659             :   }
     660             : 
     661             : 
     662             :   // Fragment 3 encoded into 2 bits for 3 unique commands.
     663         368 :   switch ((Bits >> 18) & 3) {
     664           0 :   default: llvm_unreachable("Invalid command number.");
     665           2 :   case 0:
     666             :     // LD_pseudo
     667           2 :     O << ", ";
     668           2 :     printImm64Operand(MI, 2, O);
     669           2 :     return;
     670             :     break;
     671             :   case 1:
     672             :     // MOV_ri, MOV_rr
     673             :     return;
     674             :     break;
     675           0 :   case 2:
     676             :     // Select, Select_Ri
     677           0 :     O << ' ';
     678           0 :     printOperand(MI, 3, O);
     679           0 :     O << ' ';
     680           0 :     printOperand(MI, 2, O);
     681           0 :     O << " ? ";
     682           0 :     printOperand(MI, 4, O);
     683           0 :     O << " : ";
     684           0 :     printOperand(MI, 5, O);
     685           0 :     return;
     686             :     break;
     687             :   }
     688             : 
     689             : }
     690             : 
     691             : 
     692             : /// getRegisterName - This method is automatically generated by tblgen
     693             : /// from the register set description.  This returns the assembler name
     694             : /// for the specified register.
     695        1608 : const char *BPFInstPrinter::getRegisterName(unsigned RegNo) {
     696             :   assert(RegNo && RegNo < 13 && "Invalid register number!");
     697             : 
     698             :   static const char AsmStrs[] = {
     699             :   /* 0 */ 'r', '1', '0', 0,
     700             :   /* 4 */ 'r', '0', 0,
     701             :   /* 7 */ 'r', '1', '1', 0,
     702             :   /* 11 */ 'r', '1', 0,
     703             :   /* 14 */ 'r', '2', 0,
     704             :   /* 17 */ 'r', '3', 0,
     705             :   /* 20 */ 'r', '4', 0,
     706             :   /* 23 */ 'r', '5', 0,
     707             :   /* 26 */ 'r', '6', 0,
     708             :   /* 29 */ 'r', '7', 0,
     709             :   /* 32 */ 'r', '8', 0,
     710             :   /* 35 */ 'r', '9', 0,
     711             :   };
     712             : 
     713             :   static const uint8_t RegAsmOffset[] = {
     714             :     4, 11, 14, 17, 20, 23, 26, 29, 32, 35, 0, 7, 
     715             :   };
     716             : 
     717             :   assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
     718             :           "Invalid alt name index for register!");
     719        1608 :   return AsmStrs+RegAsmOffset[RegNo-1];
     720             : }
     721             : 
     722             : #ifdef PRINT_ALIAS_INSTR
     723             : #undef PRINT_ALIAS_INSTR
     724             : 
     725             : bool BPFInstPrinter::printAliasInstr(const MCInst *MI, raw_ostream &OS) {
     726             :   return false;
     727             : }
     728             : 
     729             : #endif // PRINT_ALIAS_INSTR

Generated by: LCOV version 1.13