LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/BPF - BPFGenMCCodeEmitter.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 79 84 94.0 %
Date: 2017-09-14 15:23:50 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
       2             : |*                                                                            *|
       3             : |* Machine Code Emitter                                                       *|
       4             : |*                                                                            *|
       5             : |* Automatically generated file, do not edit!                                 *|
       6             : |*                                                                            *|
       7             : \*===----------------------------------------------------------------------===*/
       8             : 
       9             : // Undef for HURD
      10             : #ifdef EIEIO
      11             : #undef EIEIO
      12             : #endif
      13         659 : uint64_t BPFMCCodeEmitter::getBinaryCodeForInstr(const MCInst &MI,
      14             :     SmallVectorImpl<MCFixup> &Fixups,
      15             :     const MCSubtargetInfo &STI) const {
      16             :   static const uint64_t InstBits[] = {
      17             :     UINT64_C(0),
      18             :     UINT64_C(0),
      19             :     UINT64_C(0),
      20             :     UINT64_C(0),
      21             :     UINT64_C(0),
      22             :     UINT64_C(0),
      23             :     UINT64_C(0),
      24             :     UINT64_C(0),
      25             :     UINT64_C(0),
      26             :     UINT64_C(0),
      27             :     UINT64_C(0),
      28             :     UINT64_C(0),
      29             :     UINT64_C(0),
      30             :     UINT64_C(0),
      31             :     UINT64_C(0),
      32             :     UINT64_C(0),
      33             :     UINT64_C(0),
      34             :     UINT64_C(0),
      35             :     UINT64_C(0),
      36             :     UINT64_C(0),
      37             :     UINT64_C(0),
      38             :     UINT64_C(0),
      39             :     UINT64_C(0),
      40             :     UINT64_C(0),
      41             :     UINT64_C(0),
      42             :     UINT64_C(0),
      43             :     UINT64_C(0),
      44             :     UINT64_C(0),
      45             :     UINT64_C(0),
      46             :     UINT64_C(0),
      47             :     UINT64_C(0),
      48             :     UINT64_C(0),
      49             :     UINT64_C(0),
      50             :     UINT64_C(0),
      51             :     UINT64_C(0),
      52             :     UINT64_C(0),
      53             :     UINT64_C(0),
      54             :     UINT64_C(0),
      55             :     UINT64_C(0),
      56             :     UINT64_C(0),
      57             :     UINT64_C(0),
      58             :     UINT64_C(0),
      59             :     UINT64_C(0),
      60             :     UINT64_C(0),
      61             :     UINT64_C(0),
      62             :     UINT64_C(0),
      63             :     UINT64_C(0),
      64             :     UINT64_C(0),
      65             :     UINT64_C(0),
      66             :     UINT64_C(0),
      67             :     UINT64_C(0),
      68             :     UINT64_C(0),
      69             :     UINT64_C(0),
      70             :     UINT64_C(0),
      71             :     UINT64_C(0),
      72             :     UINT64_C(0),
      73             :     UINT64_C(0),
      74             :     UINT64_C(0),
      75             :     UINT64_C(0),
      76             :     UINT64_C(0),
      77             :     UINT64_C(0),
      78             :     UINT64_C(0),
      79             :     UINT64_C(0),
      80             :     UINT64_C(0),
      81             :     UINT64_C(0),
      82             :     UINT64_C(0),
      83             :     UINT64_C(0),
      84             :     UINT64_C(0),
      85             :     UINT64_C(0),
      86             :     UINT64_C(0),
      87             :     UINT64_C(0),
      88             :     UINT64_C(0),
      89             :     UINT64_C(0),
      90             :     UINT64_C(0),
      91             :     UINT64_C(0),
      92             :     UINT64_C(0),
      93             :     UINT64_C(0),
      94             :     UINT64_C(0),
      95             :     UINT64_C(0),
      96             :     UINT64_C(0),
      97             :     UINT64_C(0),
      98             :     UINT64_C(0),
      99             :     UINT64_C(0),
     100             :     UINT64_C(0),
     101             :     UINT64_C(0),
     102             :     UINT64_C(0),
     103             :     UINT64_C(0),
     104             :     UINT64_C(0),
     105             :     UINT64_C(0),
     106             :     UINT64_C(0),
     107             :     UINT64_C(0),
     108             :     UINT64_C(0),
     109             :     UINT64_C(0),
     110             :     UINT64_C(0),
     111             :     UINT64_C(0),
     112             :     UINT64_C(0),
     113             :     UINT64_C(0),
     114             :     UINT64_C(0),
     115             :     UINT64_C(0),
     116             :     UINT64_C(0),
     117             :     UINT64_C(0),
     118             :     UINT64_C(0),
     119             :     UINT64_C(0),
     120             :     UINT64_C(0),
     121             :     UINT64_C(504403158265495552),       // ADD_ri
     122             :     UINT64_C(1080863910568919040),      // ADD_rr
     123             :     UINT64_C(0),
     124             :     UINT64_C(0),
     125             :     UINT64_C(6269010681299730432),      // AND_ri
     126             :     UINT64_C(6845471433603153920),      // AND_rr
     127             :     UINT64_C(15852670688344145936),     // BSWAP16
     128             :     UINT64_C(15852670688344145952),     // BSWAP32
     129             :     UINT64_C(15852670688344145984),     // BSWAP64
     130             :     UINT64_C(3963167672086036480),      // DIV_ri
     131             :     UINT64_C(4539628424389459968),      // DIV_rr
     132             :     UINT64_C(1738389456165011456),      // FI_ri
     133             :     UINT64_C(9583660007044415488),      // JAL
     134             :     UINT64_C(1513209474796486656),      // JEQ_ri
     135             :     UINT64_C(2089670227099910144),      // JEQ_rr
     136             :     UINT64_C(360287970189639680),       // JMP
     137             :     UINT64_C(6124895493223874560),      // JNE_ri
     138             :     UINT64_C(6701356245527298048),      // JNE_rr
     139             :     UINT64_C(8430738502437568512),      // JSGE_ri
     140             :     UINT64_C(9007199254740992000),      // JSGE_rr
     141             :     UINT64_C(7277816997830721536),      // JSGT_ri
     142             :     UINT64_C(7854277750134145024),      // JSGT_rr
     143             :     UINT64_C(15348267530078650368),     // JSLE_ri
     144             :     UINT64_C(15924728282382073856),     // JSLE_rr
     145             :     UINT64_C(14195346025471803392),     // JSLT_ri
     146             :     UINT64_C(14771806777775226880),     // JSLT_rr
     147             :     UINT64_C(3819052484010180608),      // JUGE_ri
     148             :     UINT64_C(4395513236313604096),      // JUGE_rr
     149             :     UINT64_C(2666130979403333632),      // JUGT_ri
     150             :     UINT64_C(3242591731706757120),      // JUGT_rr
     151             :     UINT64_C(13042424520864956416),     // JULE_ri
     152             :     UINT64_C(13618885273168379904),     // JULE_rr
     153             :     UINT64_C(11889503016258109440),     // JULT_ri
     154             :     UINT64_C(12465963768561532928),     // JULT_rr
     155             :     UINT64_C(8142508126285856768),      // LDB
     156             :     UINT64_C(8718968878589280256),      // LDD
     157             :     UINT64_C(7566047373982433280),      // LDH
     158             :     UINT64_C(6989586621679009792),      // LDW
     159             :     UINT64_C(3458764513820540928),      // LD_ABS_B
     160             :     UINT64_C(2882303761517117440),      // LD_ABS_H
     161             :     UINT64_C(2305843009213693952),      // LD_ABS_W
     162             :     UINT64_C(5764607523034234880),      // LD_IND_B
     163             :     UINT64_C(5188146770730811392),      // LD_IND_H
     164             :     UINT64_C(4611686018427387904),      // LD_IND_W
     165             :     UINT64_C(1729382256910270464),      // LD_imm64
     166             :     UINT64_C(1729382256910270464),      // LD_pseudo
     167             :     UINT64_C(13186539708940812288),     // MOV_ri
     168             :     UINT64_C(13763000461244235776),     // MOV_rr
     169             :     UINT64_C(2810246167479189504),      // MUL_ri
     170             :     UINT64_C(3386706919782612992),      // MUL_rr
     171             :     UINT64_C(13763000461244235776),     // NOP
     172             :     UINT64_C(5116089176692883456),      // OR_ri
     173             :     UINT64_C(5692549928996306944),      // OR_rr
     174             :     UINT64_C(10736581511651262464),     // RET
     175             :     UINT64_C(7421932185906577408),      // SLL_ri
     176             :     UINT64_C(7998392938210000896),      // SLL_rr
     177             :     UINT64_C(14339461213547659264),     // SRA_ri
     178             :     UINT64_C(14915921965851082752),     // SRA_rr
     179             :     UINT64_C(8574853690513424384),      // SRL_ri
     180             :     UINT64_C(9151314442816847872),      // SRL_rr
     181             :     UINT64_C(8286623314361712640),      // STB
     182             :     UINT64_C(8863084066665136128),      // STD
     183             :     UINT64_C(7710162562058289152),      // STH
     184             :     UINT64_C(7133701809754865664),      // STW
     185             :     UINT64_C(1657324662872342528),      // SUB_ri
     186             :     UINT64_C(2233785415175766016),      // SUB_rr
     187             :     UINT64_C(0),
     188             :     UINT64_C(0),
     189             :     UINT64_C(14051230837395947520),     // XADD32
     190             :     UINT64_C(15780613094306217984),     // XADD64
     191             :     UINT64_C(12033618204333965312),     // XOR_ri
     192             :     UINT64_C(12610078956637388800),     // XOR_rr
     193             :     UINT64_C(0)
     194             :   };
     195         659 :   const unsigned opcode = MI.getOpcode();
     196         659 :   uint64_t Value = InstBits[opcode];
     197         659 :   uint64_t op = 0;
     198             :   (void)op;  // suppress warning
     199         659 :   switch (opcode) {
     200             :     case BPF::FI_ri:
     201             :     case BPF::NOP:
     202             :     case BPF::RET: {
     203             :       break;
     204             :     }
     205           9 :     case BPF::JMP: {
     206             :       // op: BrDst
     207           9 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     208           9 :       Value |= (op & UINT64_C(65535)) << 32;
     209             :       break;
     210             :     }
     211          22 :     case BPF::JAL: {
     212             :       // op: BrDst
     213          22 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     214          22 :       Value |= op & UINT64_C(4294967295);
     215             :       break;
     216             :     }
     217           9 :     case BPF::BSWAP16:
     218             :     case BPF::BSWAP32:
     219             :     case BPF::BSWAP64: {
     220             :       // op: dst
     221           9 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     222           9 :       Value |= (op & UINT64_C(15)) << 48;
     223             :       break;
     224             :     }
     225          37 :     case BPF::JEQ_ri:
     226             :     case BPF::JNE_ri:
     227             :     case BPF::JSGE_ri:
     228             :     case BPF::JSGT_ri:
     229             :     case BPF::JSLE_ri:
     230             :     case BPF::JSLT_ri:
     231             :     case BPF::JUGE_ri:
     232             :     case BPF::JUGT_ri:
     233             :     case BPF::JULE_ri:
     234             :     case BPF::JULT_ri: {
     235             :       // op: dst
     236          37 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     237          37 :       Value |= (op & UINT64_C(15)) << 48;
     238             :       // op: BrDst
     239          37 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     240          37 :       Value |= (op & UINT64_C(65535)) << 32;
     241             :       // op: imm
     242          37 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     243          37 :       Value |= op & UINT64_C(4294967295);
     244             :       break;
     245             :     }
     246          31 :     case BPF::LDB:
     247             :     case BPF::LDD:
     248             :     case BPF::LDH:
     249             :     case BPF::LDW: {
     250             :       // op: dst
     251          31 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     252          31 :       Value |= (op & UINT64_C(15)) << 48;
     253             :       // op: addr
     254          62 :       op = getMemoryOpValue(MI, 1, Fixups, STI);
     255          31 :       Value |= (op & UINT64_C(983040)) << 36;
     256          31 :       Value |= (op & UINT64_C(65535)) << 32;
     257             :       break;
     258             :     }
     259          78 :     case BPF::LD_imm64:
     260             :     case BPF::MOV_ri: {
     261             :       // op: dst
     262          78 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     263          78 :       Value |= (op & UINT64_C(15)) << 48;
     264             :       // op: imm
     265          78 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     266          78 :       Value |= op & UINT64_C(4294967295);
     267             :       break;
     268             :     }
     269          96 :     case BPF::ADD_ri:
     270             :     case BPF::AND_ri:
     271             :     case BPF::DIV_ri:
     272             :     case BPF::MUL_ri:
     273             :     case BPF::OR_ri:
     274             :     case BPF::SLL_ri:
     275             :     case BPF::SRA_ri:
     276             :     case BPF::SRL_ri:
     277             :     case BPF::SUB_ri:
     278             :     case BPF::XOR_ri: {
     279             :       // op: dst
     280          96 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     281          96 :       Value |= (op & UINT64_C(15)) << 48;
     282             :       // op: imm
     283          96 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     284          96 :       Value |= op & UINT64_C(4294967295);
     285             :       break;
     286             :     }
     287           2 :     case BPF::LD_pseudo: {
     288             :       // op: dst
     289           2 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     290           2 :       Value |= (op & UINT64_C(15)) << 48;
     291             :       // op: imm
     292           2 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     293           2 :       Value |= op & UINT64_C(4294967295);
     294             :       // op: pseudo
     295           2 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     296           2 :       Value |= (op & UINT64_C(15)) << 52;
     297             :       break;
     298             :     }
     299         132 :     case BPF::MOV_rr: {
     300             :       // op: dst
     301         132 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     302         132 :       Value |= (op & UINT64_C(15)) << 48;
     303             :       // op: src
     304         132 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     305         132 :       Value |= (op & UINT64_C(15)) << 52;
     306             :       break;
     307             :     }
     308          11 :     case BPF::JEQ_rr:
     309             :     case BPF::JNE_rr:
     310             :     case BPF::JSGE_rr:
     311             :     case BPF::JSGT_rr:
     312             :     case BPF::JSLE_rr:
     313             :     case BPF::JSLT_rr:
     314             :     case BPF::JUGE_rr:
     315             :     case BPF::JUGT_rr:
     316             :     case BPF::JULE_rr:
     317             :     case BPF::JULT_rr: {
     318             :       // op: dst
     319          11 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     320          11 :       Value |= (op & UINT64_C(15)) << 48;
     321             :       // op: src
     322          11 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     323          11 :       Value |= (op & UINT64_C(15)) << 52;
     324             :       // op: BrDst
     325          11 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     326          11 :       Value |= (op & UINT64_C(65535)) << 32;
     327             :       break;
     328             :     }
     329          61 :     case BPF::ADD_rr:
     330             :     case BPF::AND_rr:
     331             :     case BPF::DIV_rr:
     332             :     case BPF::MUL_rr:
     333             :     case BPF::OR_rr:
     334             :     case BPF::SLL_rr:
     335             :     case BPF::SRA_rr:
     336             :     case BPF::SRL_rr:
     337             :     case BPF::SUB_rr:
     338             :     case BPF::XOR_rr: {
     339             :       // op: dst
     340          61 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     341          61 :       Value |= (op & UINT64_C(15)) << 48;
     342             :       // op: src
     343          61 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     344          61 :       Value |= (op & UINT64_C(15)) << 52;
     345             :       break;
     346             :     }
     347           7 :     case BPF::XADD32:
     348             :     case BPF::XADD64: {
     349             :       // op: dst
     350           7 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     351           7 :       Value |= (op & UINT64_C(15)) << 52;
     352             :       // op: addr
     353          14 :       op = getMemoryOpValue(MI, 1, Fixups, STI);
     354           7 :       Value |= (op & UINT64_C(1048575)) << 32;
     355             :       break;
     356             :     }
     357          11 :     case BPF::LD_ABS_B:
     358             :     case BPF::LD_ABS_H:
     359             :     case BPF::LD_ABS_W: {
     360             :       // op: imm
     361          11 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     362          11 :       Value |= op & UINT64_C(4294967295);
     363             :       break;
     364             :     }
     365          57 :     case BPF::STB:
     366             :     case BPF::STD:
     367             :     case BPF::STH:
     368             :     case BPF::STW: {
     369             :       // op: src
     370          57 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     371          57 :       Value |= (op & UINT64_C(15)) << 52;
     372             :       // op: addr
     373         114 :       op = getMemoryOpValue(MI, 1, Fixups, STI);
     374          57 :       Value |= (op & UINT64_C(1048575)) << 32;
     375             :       break;
     376             :     }
     377          41 :     case BPF::LD_IND_B:
     378             :     case BPF::LD_IND_H:
     379             :     case BPF::LD_IND_W: {
     380             :       // op: val
     381          41 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     382          41 :       Value |= (op & UINT64_C(15)) << 52;
     383             :       break;
     384             :     }
     385           0 :   default:
     386           0 :     std::string msg;
     387           0 :     raw_string_ostream Msg(msg);
     388           0 :     Msg << "Not supported instr: " << MI;
     389           0 :     report_fatal_error(Msg.str());
     390             :   }
     391         659 :   return Value;
     392             : }
     393             : 
     394             : #ifdef ENABLE_INSTR_PREDICATE_VERIFIER
     395             : #undef ENABLE_INSTR_PREDICATE_VERIFIER
     396             : #include <sstream>
     397             : 
     398             : // Flags for subtarget features that participate in instruction matching.
     399             : enum SubtargetFeatureFlag : uint8_t {
     400             :   Feature_None = 0
     401             : };
     402             : 
     403             : #ifndef NDEBUG
     404             : static const char *SubtargetFeatureNames[] = {
     405             :   nullptr
     406             : };
     407             : 
     408             : #endif // NDEBUG
     409             : uint64_t BPFMCCodeEmitter::
     410             : computeAvailableFeatures(const FeatureBitset& FB) const {
     411         659 :   uint64_t Features = 0;
     412             :   return Features;
     413             : }
     414             : 
     415             : void BPFMCCodeEmitter::verifyInstructionPredicates(
     416             :     const MCInst &Inst, uint64_t AvailableFeatures) const {
     417             : #ifndef NDEBUG
     418             :   static uint64_t RequiredFeatures[] = {
     419             :     0, // PHI = 0
     420             :     0, // INLINEASM = 1
     421             :     0, // CFI_INSTRUCTION = 2
     422             :     0, // EH_LABEL = 3
     423             :     0, // GC_LABEL = 4
     424             :     0, // ANNOTATION_LABEL = 5
     425             :     0, // KILL = 6
     426             :     0, // EXTRACT_SUBREG = 7
     427             :     0, // INSERT_SUBREG = 8
     428             :     0, // IMPLICIT_DEF = 9
     429             :     0, // SUBREG_TO_REG = 10
     430             :     0, // COPY_TO_REGCLASS = 11
     431             :     0, // DBG_VALUE = 12
     432             :     0, // REG_SEQUENCE = 13
     433             :     0, // COPY = 14
     434             :     0, // BUNDLE = 15
     435             :     0, // LIFETIME_START = 16
     436             :     0, // LIFETIME_END = 17
     437             :     0, // STACKMAP = 18
     438             :     0, // FENTRY_CALL = 19
     439             :     0, // PATCHPOINT = 20
     440             :     0, // LOAD_STACK_GUARD = 21
     441             :     0, // STATEPOINT = 22
     442             :     0, // LOCAL_ESCAPE = 23
     443             :     0, // FAULTING_OP = 24
     444             :     0, // PATCHABLE_OP = 25
     445             :     0, // PATCHABLE_FUNCTION_ENTER = 26
     446             :     0, // PATCHABLE_RET = 27
     447             :     0, // PATCHABLE_FUNCTION_EXIT = 28
     448             :     0, // PATCHABLE_TAIL_CALL = 29
     449             :     0, // PATCHABLE_EVENT_CALL = 30
     450             :     0, // G_ADD = 31
     451             :     0, // G_SUB = 32
     452             :     0, // G_MUL = 33
     453             :     0, // G_SDIV = 34
     454             :     0, // G_UDIV = 35
     455             :     0, // G_SREM = 36
     456             :     0, // G_UREM = 37
     457             :     0, // G_AND = 38
     458             :     0, // G_OR = 39
     459             :     0, // G_XOR = 40
     460             :     0, // G_IMPLICIT_DEF = 41
     461             :     0, // G_PHI = 42
     462             :     0, // G_FRAME_INDEX = 43
     463             :     0, // G_GLOBAL_VALUE = 44
     464             :     0, // G_EXTRACT = 45
     465             :     0, // G_UNMERGE_VALUES = 46
     466             :     0, // G_INSERT = 47
     467             :     0, // G_MERGE_VALUES = 48
     468             :     0, // G_PTRTOINT = 49
     469             :     0, // G_INTTOPTR = 50
     470             :     0, // G_BITCAST = 51
     471             :     0, // G_LOAD = 52
     472             :     0, // G_STORE = 53
     473             :     0, // G_BRCOND = 54
     474             :     0, // G_BRINDIRECT = 55
     475             :     0, // G_INTRINSIC = 56
     476             :     0, // G_INTRINSIC_W_SIDE_EFFECTS = 57
     477             :     0, // G_ANYEXT = 58
     478             :     0, // G_TRUNC = 59
     479             :     0, // G_CONSTANT = 60
     480             :     0, // G_FCONSTANT = 61
     481             :     0, // G_VASTART = 62
     482             :     0, // G_VAARG = 63
     483             :     0, // G_SEXT = 64
     484             :     0, // G_ZEXT = 65
     485             :     0, // G_SHL = 66
     486             :     0, // G_LSHR = 67
     487             :     0, // G_ASHR = 68
     488             :     0, // G_ICMP = 69
     489             :     0, // G_FCMP = 70
     490             :     0, // G_SELECT = 71
     491             :     0, // G_UADDE = 72
     492             :     0, // G_USUBE = 73
     493             :     0, // G_SADDO = 74
     494             :     0, // G_SSUBO = 75
     495             :     0, // G_UMULO = 76
     496             :     0, // G_SMULO = 77
     497             :     0, // G_UMULH = 78
     498             :     0, // G_SMULH = 79
     499             :     0, // G_FADD = 80
     500             :     0, // G_FSUB = 81
     501             :     0, // G_FMUL = 82
     502             :     0, // G_FMA = 83
     503             :     0, // G_FDIV = 84
     504             :     0, // G_FREM = 85
     505             :     0, // G_FPOW = 86
     506             :     0, // G_FEXP = 87
     507             :     0, // G_FEXP2 = 88
     508             :     0, // G_FLOG = 89
     509             :     0, // G_FLOG2 = 90
     510             :     0, // G_FNEG = 91
     511             :     0, // G_FPEXT = 92
     512             :     0, // G_FPTRUNC = 93
     513             :     0, // G_FPTOSI = 94
     514             :     0, // G_FPTOUI = 95
     515             :     0, // G_SITOFP = 96
     516             :     0, // G_UITOFP = 97
     517             :     0, // G_GEP = 98
     518             :     0, // G_PTR_MASK = 99
     519             :     0, // G_BR = 100
     520             :     0, // G_INSERT_VECTOR_ELT = 101
     521             :     0, // G_EXTRACT_VECTOR_ELT = 102
     522             :     0, // G_SHUFFLE_VECTOR = 103
     523             :     0, // ADD_ri = 104
     524             :     0, // ADD_rr = 105
     525             :     0, // ADJCALLSTACKDOWN = 106
     526             :     0, // ADJCALLSTACKUP = 107
     527             :     0, // AND_ri = 108
     528             :     0, // AND_rr = 109
     529             :     0, // BSWAP16 = 110
     530             :     0, // BSWAP32 = 111
     531             :     0, // BSWAP64 = 112
     532             :     0, // DIV_ri = 113
     533             :     0, // DIV_rr = 114
     534             :     0, // FI_ri = 115
     535             :     0, // JAL = 116
     536             :     0, // JEQ_ri = 117
     537             :     0, // JEQ_rr = 118
     538             :     0, // JMP = 119
     539             :     0, // JNE_ri = 120
     540             :     0, // JNE_rr = 121
     541             :     0, // JSGE_ri = 122
     542             :     0, // JSGE_rr = 123
     543             :     0, // JSGT_ri = 124
     544             :     0, // JSGT_rr = 125
     545             :     0, // JSLE_ri = 126
     546             :     0, // JSLE_rr = 127
     547             :     0, // JSLT_ri = 128
     548             :     0, // JSLT_rr = 129
     549             :     0, // JUGE_ri = 130
     550             :     0, // JUGE_rr = 131
     551             :     0, // JUGT_ri = 132
     552             :     0, // JUGT_rr = 133
     553             :     0, // JULE_ri = 134
     554             :     0, // JULE_rr = 135
     555             :     0, // JULT_ri = 136
     556             :     0, // JULT_rr = 137
     557             :     0, // LDB = 138
     558             :     0, // LDD = 139
     559             :     0, // LDH = 140
     560             :     0, // LDW = 141
     561             :     0, // LD_ABS_B = 142
     562             :     0, // LD_ABS_H = 143
     563             :     0, // LD_ABS_W = 144
     564             :     0, // LD_IND_B = 145
     565             :     0, // LD_IND_H = 146
     566             :     0, // LD_IND_W = 147
     567             :     0, // LD_imm64 = 148
     568             :     0, // LD_pseudo = 149
     569             :     0, // MOV_ri = 150
     570             :     0, // MOV_rr = 151
     571             :     0, // MUL_ri = 152
     572             :     0, // MUL_rr = 153
     573             :     0, // NOP = 154
     574             :     0, // OR_ri = 155
     575             :     0, // OR_rr = 156
     576             :     0, // RET = 157
     577             :     0, // SLL_ri = 158
     578             :     0, // SLL_rr = 159
     579             :     0, // SRA_ri = 160
     580             :     0, // SRA_rr = 161
     581             :     0, // SRL_ri = 162
     582             :     0, // SRL_rr = 163
     583             :     0, // STB = 164
     584             :     0, // STD = 165
     585             :     0, // STH = 166
     586             :     0, // STW = 167
     587             :     0, // SUB_ri = 168
     588             :     0, // SUB_rr = 169
     589             :     0, // Select = 170
     590             :     0, // Select_Ri = 171
     591             :     0, // XADD32 = 172
     592             :     0, // XADD64 = 173
     593             :     0, // XOR_ri = 174
     594             :     0, // XOR_rr = 175
     595             :   };
     596             : 
     597             :   assert(Inst.getOpcode() < 176);
     598             :   uint64_t MissingFeatures =
     599             :       (AvailableFeatures & RequiredFeatures[Inst.getOpcode()]) ^
     600             :       RequiredFeatures[Inst.getOpcode()];
     601             :   if (MissingFeatures) {
     602             :     std::ostringstream Msg;
     603             :     Msg << "Attempting to emit " << MCII.getName(Inst.getOpcode()).str()
     604             :         << " instruction but the ";
     605             :     for (unsigned i = 0; i < 8 * sizeof(MissingFeatures); ++i)
     606             :       if (MissingFeatures & (1ULL << i))
     607             :         Msg << SubtargetFeatureNames[i] << " ";
     608             :     Msg << "predicate(s) are not met";
     609             :     report_fatal_error(Msg.str());
     610             :   }
     611             : #else
     612             : // Silence unused variable warning on targets that don't use MCII for other purposes (e.g. BPF).
     613             : (void)MCII;
     614             : #endif // NDEBUG
     615             : }
     616             : #endif

Generated by: LCOV version 1.13