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: 0 83 0.0 %
Date: 2018-10-20 13:21:21 Functions: 0 3 0.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           0 : 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(0),
     122             :     UINT64_C(0),
     123             :     UINT64_C(0),
     124             :     UINT64_C(0),
     125             :     UINT64_C(0),
     126             :     UINT64_C(0),
     127             :     UINT64_C(0),
     128             :     UINT64_C(0),
     129             :     UINT64_C(0),
     130             :     UINT64_C(0),
     131             :     UINT64_C(0),
     132             :     UINT64_C(0),
     133             :     UINT64_C(0),
     134             :     UINT64_C(0),
     135             :     UINT64_C(0),
     136             :     UINT64_C(0),
     137             :     UINT64_C(0),
     138             :     UINT64_C(0),
     139             :     UINT64_C(0),
     140             :     UINT64_C(0),
     141             :     UINT64_C(0),
     142             :     UINT64_C(0),
     143             :     UINT64_C(0),
     144             :     UINT64_C(0),
     145             :     UINT64_C(0),
     146             :     UINT64_C(0),
     147             :     UINT64_C(0),
     148             :     UINT64_C(0),
     149             :     UINT64_C(0),
     150             :     UINT64_C(0),
     151             :     UINT64_C(0),
     152             :     UINT64_C(0),
     153             :     UINT64_C(0),
     154             :     UINT64_C(0),
     155             :     UINT64_C(0),
     156             :     UINT64_C(0),
     157             :     UINT64_C(0),
     158             :     UINT64_C(0),
     159             :     UINT64_C(0),
     160             :     UINT64_C(0),
     161             :     UINT64_C(0),
     162             :     UINT64_C(0),
     163             :     UINT64_C(0),
     164             :     UINT64_C(0),
     165             :     UINT64_C(504403158265495552),       // ADD_ri
     166             :     UINT64_C(288230376151711744),       // ADD_ri_32
     167             :     UINT64_C(1080863910568919040),      // ADD_rr
     168             :     UINT64_C(864691128455135232),       // ADD_rr_32
     169             :     UINT64_C(6269010681299730432),      // AND_ri
     170             :     UINT64_C(6052837899185946624),      // AND_ri_32
     171             :     UINT64_C(6845471433603153920),      // AND_rr
     172             :     UINT64_C(6629298651489370112),      // AND_rr_32
     173             :     UINT64_C(15852670688344145936),     // BE16
     174             :     UINT64_C(15852670688344145952),     // BE32
     175             :     UINT64_C(15852670688344145984),     // BE64
     176             :     UINT64_C(3963167672086036480),      // DIV_ri
     177             :     UINT64_C(3746994889972252672),      // DIV_ri_32
     178             :     UINT64_C(4539628424389459968),      // DIV_rr
     179             :     UINT64_C(4323455642275676160),      // DIV_rr_32
     180             :     UINT64_C(1738389456165011456),      // FI_ri
     181             :     UINT64_C(9583660007044415488),      // JAL
     182             :     UINT64_C(10160120759347838976),     // JALX
     183             :     UINT64_C(1513209474796486656),      // JEQ_ri
     184             :     UINT64_C(2089670227099910144),      // JEQ_rr
     185             :     UINT64_C(360287970189639680),       // JMP
     186             :     UINT64_C(6124895493223874560),      // JNE_ri
     187             :     UINT64_C(6701356245527298048),      // JNE_rr
     188             :     UINT64_C(8430738502437568512),      // JSGE_ri
     189             :     UINT64_C(9007199254740992000),      // JSGE_rr
     190             :     UINT64_C(7277816997830721536),      // JSGT_ri
     191             :     UINT64_C(7854277750134145024),      // JSGT_rr
     192             :     UINT64_C(15348267530078650368),     // JSLE_ri
     193             :     UINT64_C(15924728282382073856),     // JSLE_rr
     194             :     UINT64_C(14195346025471803392),     // JSLT_ri
     195             :     UINT64_C(14771806777775226880),     // JSLT_rr
     196             :     UINT64_C(3819052484010180608),      // JUGE_ri
     197             :     UINT64_C(4395513236313604096),      // JUGE_rr
     198             :     UINT64_C(2666130979403333632),      // JUGT_ri
     199             :     UINT64_C(3242591731706757120),      // JUGT_rr
     200             :     UINT64_C(13042424520864956416),     // JULE_ri
     201             :     UINT64_C(13618885273168379904),     // JULE_rr
     202             :     UINT64_C(11889503016258109440),     // JULT_ri
     203             :     UINT64_C(12465963768561532928),     // JULT_rr
     204             :     UINT64_C(8142508126285856768),      // LDB
     205             :     UINT64_C(8142508126285856768),      // LDB32
     206             :     UINT64_C(8718968878589280256),      // LDD
     207             :     UINT64_C(7566047373982433280),      // LDH
     208             :     UINT64_C(7566047373982433280),      // LDH32
     209             :     UINT64_C(6989586621679009792),      // LDW
     210             :     UINT64_C(6989586621679009792),      // LDW32
     211             :     UINT64_C(3458764513820540928),      // LD_ABS_B
     212             :     UINT64_C(2882303761517117440),      // LD_ABS_H
     213             :     UINT64_C(2305843009213693952),      // LD_ABS_W
     214             :     UINT64_C(5764607523034234880),      // LD_IND_B
     215             :     UINT64_C(5188146770730811392),      // LD_IND_H
     216             :     UINT64_C(4611686018427387904),      // LD_IND_W
     217             :     UINT64_C(1729382256910270464),      // LD_imm64
     218             :     UINT64_C(1729382256910270464),      // LD_pseudo
     219             :     UINT64_C(15276209936040722448),     // LE16
     220             :     UINT64_C(15276209936040722464),     // LE32
     221             :     UINT64_C(15276209936040722496),     // LE64
     222             :     UINT64_C(13546827679130451968),     // MOV_32_64
     223             :     UINT64_C(13186539708940812288),     // MOV_ri
     224             :     UINT64_C(12970366926827028480),     // MOV_ri_32
     225             :     UINT64_C(13763000461244235776),     // MOV_rr
     226             :     UINT64_C(13546827679130451968),     // MOV_rr_32
     227             :     UINT64_C(2810246167479189504),      // MUL_ri
     228             :     UINT64_C(2594073385365405696),      // MUL_ri_32
     229             :     UINT64_C(3386706919782612992),      // MUL_rr
     230             :     UINT64_C(3170534137668829184),      // MUL_rr_32
     231             :     UINT64_C(9511602413006487552),      // NEG_32
     232             :     UINT64_C(9727775195120271360),      // NEG_64
     233             :     UINT64_C(13763000461244235776),     // NOP
     234             :     UINT64_C(5116089176692883456),      // OR_ri
     235             :     UINT64_C(4899916394579099648),      // OR_ri_32
     236             :     UINT64_C(5692549928996306944),      // OR_rr
     237             :     UINT64_C(5476377146882523136),      // OR_rr_32
     238             :     UINT64_C(10736581511651262464),     // RET
     239             :     UINT64_C(7421932185906577408),      // SLL_ri
     240             :     UINT64_C(7205759403792793600),      // SLL_ri_32
     241             :     UINT64_C(7998392938210000896),      // SLL_rr
     242             :     UINT64_C(7782220156096217088),      // SLL_rr_32
     243             :     UINT64_C(14339461213547659264),     // SRA_ri
     244             :     UINT64_C(14123288431433875456),     // SRA_ri_32
     245             :     UINT64_C(14915921965851082752),     // SRA_rr
     246             :     UINT64_C(14699749183737298944),     // SRA_rr_32
     247             :     UINT64_C(8574853690513424384),      // SRL_ri
     248             :     UINT64_C(8358680908399640576),      // SRL_ri_32
     249             :     UINT64_C(9151314442816847872),      // SRL_rr
     250             :     UINT64_C(8935141660703064064),      // SRL_rr_32
     251             :     UINT64_C(8286623314361712640),      // STB
     252             :     UINT64_C(8286623314361712640),      // STB32
     253             :     UINT64_C(8863084066665136128),      // STD
     254             :     UINT64_C(7710162562058289152),      // STH
     255             :     UINT64_C(7710162562058289152),      // STH32
     256             :     UINT64_C(7133701809754865664),      // STW
     257             :     UINT64_C(7133701809754865664),      // STW32
     258             :     UINT64_C(1657324662872342528),      // SUB_ri
     259             :     UINT64_C(1441151880758558720),      // SUB_ri_32
     260             :     UINT64_C(2233785415175766016),      // SUB_rr
     261             :     UINT64_C(2017612633061982208),      // SUB_rr_32
     262             :     UINT64_C(14051230837395947520),     // XADD32
     263             :     UINT64_C(15780613094306217984),     // XADD64
     264             :     UINT64_C(12033618204333965312),     // XOR_ri
     265             :     UINT64_C(11817445422220181504),     // XOR_ri_32
     266             :     UINT64_C(12610078956637388800),     // XOR_rr
     267             :     UINT64_C(12393906174523604992),     // XOR_rr_32
     268             :     UINT64_C(0)
     269             :   };
     270           0 :   const unsigned opcode = MI.getOpcode();
     271           0 :   uint64_t Value = InstBits[opcode];
     272             :   uint64_t op = 0;
     273             :   (void)op;  // suppress warning
     274           0 :   switch (opcode) {
     275             :     case BPF::FI_ri:
     276             :     case BPF::NOP:
     277             :     case BPF::RET: {
     278             :       break;
     279             :     }
     280             :     case BPF::JMP: {
     281             :       // op: BrDst
     282           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     283           0 :       Value |= (op & UINT64_C(65535)) << 32;
     284           0 :       break;
     285             :     }
     286             :     case BPF::JAL:
     287             :     case BPF::JALX: {
     288             :       // op: BrDst
     289           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     290           0 :       Value |= op & UINT64_C(4294967295);
     291           0 :       break;
     292             :     }
     293             :     case BPF::BE16:
     294             :     case BPF::BE32:
     295             :     case BPF::BE64:
     296             :     case BPF::LE16:
     297             :     case BPF::LE32:
     298             :     case BPF::LE64:
     299             :     case BPF::NEG_32:
     300             :     case BPF::NEG_64: {
     301             :       // op: dst
     302           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     303           0 :       Value |= (op & UINT64_C(15)) << 48;
     304           0 :       break;
     305             :     }
     306             :     case BPF::JEQ_ri:
     307             :     case BPF::JNE_ri:
     308             :     case BPF::JSGE_ri:
     309             :     case BPF::JSGT_ri:
     310             :     case BPF::JSLE_ri:
     311             :     case BPF::JSLT_ri:
     312             :     case BPF::JUGE_ri:
     313             :     case BPF::JUGT_ri:
     314             :     case BPF::JULE_ri:
     315             :     case BPF::JULT_ri: {
     316             :       // op: dst
     317           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     318           0 :       Value |= (op & UINT64_C(15)) << 48;
     319             :       // op: BrDst
     320           0 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     321           0 :       Value |= (op & UINT64_C(65535)) << 32;
     322             :       // op: imm
     323           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     324           0 :       Value |= op & UINT64_C(4294967295);
     325           0 :       break;
     326             :     }
     327             :     case BPF::LDB:
     328             :     case BPF::LDB32:
     329             :     case BPF::LDD:
     330             :     case BPF::LDH:
     331             :     case BPF::LDH32:
     332             :     case BPF::LDW:
     333             :     case BPF::LDW32: {
     334             :       // op: dst
     335           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     336           0 :       Value |= (op & UINT64_C(15)) << 48;
     337             :       // op: addr
     338           0 :       op = getMemoryOpValue(MI, 1, Fixups, STI);
     339           0 :       Value |= (op & UINT64_C(983040)) << 36;
     340           0 :       Value |= (op & UINT64_C(65535)) << 32;
     341           0 :       break;
     342             :     }
     343             :     case BPF::LD_imm64:
     344             :     case BPF::MOV_ri:
     345             :     case BPF::MOV_ri_32: {
     346             :       // op: dst
     347           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     348           0 :       Value |= (op & UINT64_C(15)) << 48;
     349             :       // op: imm
     350           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     351           0 :       Value |= op & UINT64_C(4294967295);
     352           0 :       break;
     353             :     }
     354             :     case BPF::ADD_ri:
     355             :     case BPF::ADD_ri_32:
     356             :     case BPF::AND_ri:
     357             :     case BPF::AND_ri_32:
     358             :     case BPF::DIV_ri:
     359             :     case BPF::DIV_ri_32:
     360             :     case BPF::MUL_ri:
     361             :     case BPF::MUL_ri_32:
     362             :     case BPF::OR_ri:
     363             :     case BPF::OR_ri_32:
     364             :     case BPF::SLL_ri:
     365             :     case BPF::SLL_ri_32:
     366             :     case BPF::SRA_ri:
     367             :     case BPF::SRA_ri_32:
     368             :     case BPF::SRL_ri:
     369             :     case BPF::SRL_ri_32:
     370             :     case BPF::SUB_ri:
     371             :     case BPF::SUB_ri_32:
     372             :     case BPF::XOR_ri:
     373             :     case BPF::XOR_ri_32: {
     374             :       // op: dst
     375           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     376           0 :       Value |= (op & UINT64_C(15)) << 48;
     377             :       // op: imm
     378           0 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     379           0 :       Value |= op & UINT64_C(4294967295);
     380           0 :       break;
     381             :     }
     382             :     case BPF::LD_pseudo: {
     383             :       // op: dst
     384           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     385           0 :       Value |= (op & UINT64_C(15)) << 48;
     386             :       // op: imm
     387           0 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     388           0 :       Value |= op & UINT64_C(4294967295);
     389             :       // op: pseudo
     390           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     391           0 :       Value |= (op & UINT64_C(15)) << 52;
     392           0 :       break;
     393             :     }
     394             :     case BPF::MOV_32_64:
     395             :     case BPF::MOV_rr:
     396             :     case BPF::MOV_rr_32: {
     397             :       // op: dst
     398           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     399           0 :       Value |= (op & UINT64_C(15)) << 48;
     400             :       // op: src
     401           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     402           0 :       Value |= (op & UINT64_C(15)) << 52;
     403           0 :       break;
     404             :     }
     405             :     case BPF::JEQ_rr:
     406             :     case BPF::JNE_rr:
     407             :     case BPF::JSGE_rr:
     408             :     case BPF::JSGT_rr:
     409             :     case BPF::JSLE_rr:
     410             :     case BPF::JSLT_rr:
     411             :     case BPF::JUGE_rr:
     412             :     case BPF::JUGT_rr:
     413             :     case BPF::JULE_rr:
     414             :     case BPF::JULT_rr: {
     415             :       // op: dst
     416           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     417           0 :       Value |= (op & UINT64_C(15)) << 48;
     418             :       // op: src
     419           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     420           0 :       Value |= (op & UINT64_C(15)) << 52;
     421             :       // op: BrDst
     422           0 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     423           0 :       Value |= (op & UINT64_C(65535)) << 32;
     424           0 :       break;
     425             :     }
     426             :     case BPF::ADD_rr:
     427             :     case BPF::ADD_rr_32:
     428             :     case BPF::AND_rr:
     429             :     case BPF::AND_rr_32:
     430             :     case BPF::DIV_rr:
     431             :     case BPF::DIV_rr_32:
     432             :     case BPF::MUL_rr:
     433             :     case BPF::MUL_rr_32:
     434             :     case BPF::OR_rr:
     435             :     case BPF::OR_rr_32:
     436             :     case BPF::SLL_rr:
     437             :     case BPF::SLL_rr_32:
     438             :     case BPF::SRA_rr:
     439             :     case BPF::SRA_rr_32:
     440             :     case BPF::SRL_rr:
     441             :     case BPF::SRL_rr_32:
     442             :     case BPF::SUB_rr:
     443             :     case BPF::SUB_rr_32:
     444             :     case BPF::XOR_rr:
     445             :     case BPF::XOR_rr_32: {
     446             :       // op: dst
     447           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     448           0 :       Value |= (op & UINT64_C(15)) << 48;
     449             :       // op: src
     450           0 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     451           0 :       Value |= (op & UINT64_C(15)) << 52;
     452           0 :       break;
     453             :     }
     454             :     case BPF::XADD32:
     455             :     case BPF::XADD64: {
     456             :       // op: dst
     457           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     458           0 :       Value |= (op & UINT64_C(15)) << 52;
     459             :       // op: addr
     460           0 :       op = getMemoryOpValue(MI, 1, Fixups, STI);
     461           0 :       Value |= (op & UINT64_C(1048575)) << 32;
     462           0 :       break;
     463             :     }
     464             :     case BPF::LD_ABS_B:
     465             :     case BPF::LD_ABS_H:
     466             :     case BPF::LD_ABS_W: {
     467             :       // op: imm
     468           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     469           0 :       Value |= op & UINT64_C(4294967295);
     470           0 :       break;
     471             :     }
     472             :     case BPF::STB:
     473             :     case BPF::STB32:
     474             :     case BPF::STD:
     475             :     case BPF::STH:
     476             :     case BPF::STH32:
     477             :     case BPF::STW:
     478             :     case BPF::STW32: {
     479             :       // op: src
     480           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     481           0 :       Value |= (op & UINT64_C(15)) << 52;
     482             :       // op: addr
     483           0 :       op = getMemoryOpValue(MI, 1, Fixups, STI);
     484           0 :       Value |= (op & UINT64_C(1048575)) << 32;
     485           0 :       break;
     486             :     }
     487             :     case BPF::LD_IND_B:
     488             :     case BPF::LD_IND_H:
     489             :     case BPF::LD_IND_W: {
     490             :       // op: val
     491           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     492           0 :       Value |= (op & UINT64_C(15)) << 52;
     493           0 :       break;
     494             :     }
     495             :   default:
     496             :     std::string msg;
     497             :     raw_string_ostream Msg(msg);
     498           0 :     Msg << "Not supported instr: " << MI;
     499           0 :     report_fatal_error(Msg.str());
     500             :   }
     501           0 :   return Value;
     502             : }
     503             : 
     504             : #ifdef ENABLE_INSTR_PREDICATE_VERIFIER
     505             : #undef ENABLE_INSTR_PREDICATE_VERIFIER
     506             : #include <sstream>
     507             : 
     508             : // Flags for subtarget features that participate in instruction matching.
     509             : enum SubtargetFeatureFlag : uint8_t {
     510             :   Feature_None = 0
     511             : };
     512             : 
     513             : #ifndef NDEBUG
     514             : static const char *SubtargetFeatureNames[] = {
     515             :   nullptr
     516             : };
     517             : 
     518             : #endif // NDEBUG
     519           0 : uint64_t BPFMCCodeEmitter::
     520             : computeAvailableFeatures(const FeatureBitset& FB) const {
     521             :   uint64_t Features = 0;
     522           0 :   return Features;
     523             : }
     524             : 
     525           0 : void BPFMCCodeEmitter::verifyInstructionPredicates(
     526             :     const MCInst &Inst, uint64_t AvailableFeatures) const {
     527             : #ifndef NDEBUG
     528             :   static uint64_t RequiredFeatures[] = {
     529             :     0, // PHI = 0
     530             :     0, // INLINEASM = 1
     531             :     0, // CFI_INSTRUCTION = 2
     532             :     0, // EH_LABEL = 3
     533             :     0, // GC_LABEL = 4
     534             :     0, // ANNOTATION_LABEL = 5
     535             :     0, // KILL = 6
     536             :     0, // EXTRACT_SUBREG = 7
     537             :     0, // INSERT_SUBREG = 8
     538             :     0, // IMPLICIT_DEF = 9
     539             :     0, // SUBREG_TO_REG = 10
     540             :     0, // COPY_TO_REGCLASS = 11
     541             :     0, // DBG_VALUE = 12
     542             :     0, // DBG_LABEL = 13
     543             :     0, // REG_SEQUENCE = 14
     544             :     0, // COPY = 15
     545             :     0, // BUNDLE = 16
     546             :     0, // LIFETIME_START = 17
     547             :     0, // LIFETIME_END = 18
     548             :     0, // STACKMAP = 19
     549             :     0, // FENTRY_CALL = 20
     550             :     0, // PATCHPOINT = 21
     551             :     0, // LOAD_STACK_GUARD = 22
     552             :     0, // STATEPOINT = 23
     553             :     0, // LOCAL_ESCAPE = 24
     554             :     0, // FAULTING_OP = 25
     555             :     0, // PATCHABLE_OP = 26
     556             :     0, // PATCHABLE_FUNCTION_ENTER = 27
     557             :     0, // PATCHABLE_RET = 28
     558             :     0, // PATCHABLE_FUNCTION_EXIT = 29
     559             :     0, // PATCHABLE_TAIL_CALL = 30
     560             :     0, // PATCHABLE_EVENT_CALL = 31
     561             :     0, // PATCHABLE_TYPED_EVENT_CALL = 32
     562             :     0, // ICALL_BRANCH_FUNNEL = 33
     563             :     0, // G_ADD = 34
     564             :     0, // G_SUB = 35
     565             :     0, // G_MUL = 36
     566             :     0, // G_SDIV = 37
     567             :     0, // G_UDIV = 38
     568             :     0, // G_SREM = 39
     569             :     0, // G_UREM = 40
     570             :     0, // G_AND = 41
     571             :     0, // G_OR = 42
     572             :     0, // G_XOR = 43
     573             :     0, // G_IMPLICIT_DEF = 44
     574             :     0, // G_PHI = 45
     575             :     0, // G_FRAME_INDEX = 46
     576             :     0, // G_GLOBAL_VALUE = 47
     577             :     0, // G_EXTRACT = 48
     578             :     0, // G_UNMERGE_VALUES = 49
     579             :     0, // G_INSERT = 50
     580             :     0, // G_MERGE_VALUES = 51
     581             :     0, // G_PTRTOINT = 52
     582             :     0, // G_INTTOPTR = 53
     583             :     0, // G_BITCAST = 54
     584             :     0, // G_INTRINSIC_TRUNC = 55
     585             :     0, // G_INTRINSIC_ROUND = 56
     586             :     0, // G_LOAD = 57
     587             :     0, // G_SEXTLOAD = 58
     588             :     0, // G_ZEXTLOAD = 59
     589             :     0, // G_STORE = 60
     590             :     0, // G_ATOMIC_CMPXCHG_WITH_SUCCESS = 61
     591             :     0, // G_ATOMIC_CMPXCHG = 62
     592             :     0, // G_ATOMICRMW_XCHG = 63
     593             :     0, // G_ATOMICRMW_ADD = 64
     594             :     0, // G_ATOMICRMW_SUB = 65
     595             :     0, // G_ATOMICRMW_AND = 66
     596             :     0, // G_ATOMICRMW_NAND = 67
     597             :     0, // G_ATOMICRMW_OR = 68
     598             :     0, // G_ATOMICRMW_XOR = 69
     599             :     0, // G_ATOMICRMW_MAX = 70
     600             :     0, // G_ATOMICRMW_MIN = 71
     601             :     0, // G_ATOMICRMW_UMAX = 72
     602             :     0, // G_ATOMICRMW_UMIN = 73
     603             :     0, // G_BRCOND = 74
     604             :     0, // G_BRINDIRECT = 75
     605             :     0, // G_INTRINSIC = 76
     606             :     0, // G_INTRINSIC_W_SIDE_EFFECTS = 77
     607             :     0, // G_ANYEXT = 78
     608             :     0, // G_TRUNC = 79
     609             :     0, // G_CONSTANT = 80
     610             :     0, // G_FCONSTANT = 81
     611             :     0, // G_VASTART = 82
     612             :     0, // G_VAARG = 83
     613             :     0, // G_SEXT = 84
     614             :     0, // G_ZEXT = 85
     615             :     0, // G_SHL = 86
     616             :     0, // G_LSHR = 87
     617             :     0, // G_ASHR = 88
     618             :     0, // G_ICMP = 89
     619             :     0, // G_FCMP = 90
     620             :     0, // G_SELECT = 91
     621             :     0, // G_UADDO = 92
     622             :     0, // G_UADDE = 93
     623             :     0, // G_USUBO = 94
     624             :     0, // G_USUBE = 95
     625             :     0, // G_SADDO = 96
     626             :     0, // G_SADDE = 97
     627             :     0, // G_SSUBO = 98
     628             :     0, // G_SSUBE = 99
     629             :     0, // G_UMULO = 100
     630             :     0, // G_SMULO = 101
     631             :     0, // G_UMULH = 102
     632             :     0, // G_SMULH = 103
     633             :     0, // G_FADD = 104
     634             :     0, // G_FSUB = 105
     635             :     0, // G_FMUL = 106
     636             :     0, // G_FMA = 107
     637             :     0, // G_FDIV = 108
     638             :     0, // G_FREM = 109
     639             :     0, // G_FPOW = 110
     640             :     0, // G_FEXP = 111
     641             :     0, // G_FEXP2 = 112
     642             :     0, // G_FLOG = 113
     643             :     0, // G_FLOG2 = 114
     644             :     0, // G_FNEG = 115
     645             :     0, // G_FPEXT = 116
     646             :     0, // G_FPTRUNC = 117
     647             :     0, // G_FPTOSI = 118
     648             :     0, // G_FPTOUI = 119
     649             :     0, // G_SITOFP = 120
     650             :     0, // G_UITOFP = 121
     651             :     0, // G_FABS = 122
     652             :     0, // G_GEP = 123
     653             :     0, // G_PTR_MASK = 124
     654             :     0, // G_BR = 125
     655             :     0, // G_INSERT_VECTOR_ELT = 126
     656             :     0, // G_EXTRACT_VECTOR_ELT = 127
     657             :     0, // G_SHUFFLE_VECTOR = 128
     658             :     0, // G_CTTZ = 129
     659             :     0, // G_CTTZ_ZERO_UNDEF = 130
     660             :     0, // G_CTLZ = 131
     661             :     0, // G_CTLZ_ZERO_UNDEF = 132
     662             :     0, // G_CTPOP = 133
     663             :     0, // G_BSWAP = 134
     664             :     0, // G_ADDRSPACE_CAST = 135
     665             :     0, // G_BLOCK_ADDR = 136
     666             :     0, // ADJCALLSTACKDOWN = 137
     667             :     0, // ADJCALLSTACKUP = 138
     668             :     0, // MEMCPY = 139
     669             :     0, // Select = 140
     670             :     0, // Select_32 = 141
     671             :     0, // Select_32_64 = 142
     672             :     0, // Select_64_32 = 143
     673             :     0, // Select_Ri = 144
     674             :     0, // Select_Ri_32 = 145
     675             :     0, // Select_Ri_32_64 = 146
     676             :     0, // Select_Ri_64_32 = 147
     677             :     0, // ADD_ri = 148
     678             :     0, // ADD_ri_32 = 149
     679             :     0, // ADD_rr = 150
     680             :     0, // ADD_rr_32 = 151
     681             :     0, // AND_ri = 152
     682             :     0, // AND_ri_32 = 153
     683             :     0, // AND_rr = 154
     684             :     0, // AND_rr_32 = 155
     685             :     0, // BE16 = 156
     686             :     0, // BE32 = 157
     687             :     0, // BE64 = 158
     688             :     0, // DIV_ri = 159
     689             :     0, // DIV_ri_32 = 160
     690             :     0, // DIV_rr = 161
     691             :     0, // DIV_rr_32 = 162
     692             :     0, // FI_ri = 163
     693             :     0, // JAL = 164
     694             :     0, // JALX = 165
     695             :     0, // JEQ_ri = 166
     696             :     0, // JEQ_rr = 167
     697             :     0, // JMP = 168
     698             :     0, // JNE_ri = 169
     699             :     0, // JNE_rr = 170
     700             :     0, // JSGE_ri = 171
     701             :     0, // JSGE_rr = 172
     702             :     0, // JSGT_ri = 173
     703             :     0, // JSGT_rr = 174
     704             :     0, // JSLE_ri = 175
     705             :     0, // JSLE_rr = 176
     706             :     0, // JSLT_ri = 177
     707             :     0, // JSLT_rr = 178
     708             :     0, // JUGE_ri = 179
     709             :     0, // JUGE_rr = 180
     710             :     0, // JUGT_ri = 181
     711             :     0, // JUGT_rr = 182
     712             :     0, // JULE_ri = 183
     713             :     0, // JULE_rr = 184
     714             :     0, // JULT_ri = 185
     715             :     0, // JULT_rr = 186
     716             :     0, // LDB = 187
     717             :     0, // LDB32 = 188
     718             :     0, // LDD = 189
     719             :     0, // LDH = 190
     720             :     0, // LDH32 = 191
     721             :     0, // LDW = 192
     722             :     0, // LDW32 = 193
     723             :     0, // LD_ABS_B = 194
     724             :     0, // LD_ABS_H = 195
     725             :     0, // LD_ABS_W = 196
     726             :     0, // LD_IND_B = 197
     727             :     0, // LD_IND_H = 198
     728             :     0, // LD_IND_W = 199
     729             :     0, // LD_imm64 = 200
     730             :     0, // LD_pseudo = 201
     731             :     0, // LE16 = 202
     732             :     0, // LE32 = 203
     733             :     0, // LE64 = 204
     734             :     0, // MOV_32_64 = 205
     735             :     0, // MOV_ri = 206
     736             :     0, // MOV_ri_32 = 207
     737             :     0, // MOV_rr = 208
     738             :     0, // MOV_rr_32 = 209
     739             :     0, // MUL_ri = 210
     740             :     0, // MUL_ri_32 = 211
     741             :     0, // MUL_rr = 212
     742             :     0, // MUL_rr_32 = 213
     743             :     0, // NEG_32 = 214
     744             :     0, // NEG_64 = 215
     745             :     0, // NOP = 216
     746             :     0, // OR_ri = 217
     747             :     0, // OR_ri_32 = 218
     748             :     0, // OR_rr = 219
     749             :     0, // OR_rr_32 = 220
     750             :     0, // RET = 221
     751             :     0, // SLL_ri = 222
     752             :     0, // SLL_ri_32 = 223
     753             :     0, // SLL_rr = 224
     754             :     0, // SLL_rr_32 = 225
     755             :     0, // SRA_ri = 226
     756             :     0, // SRA_ri_32 = 227
     757             :     0, // SRA_rr = 228
     758             :     0, // SRA_rr_32 = 229
     759             :     0, // SRL_ri = 230
     760             :     0, // SRL_ri_32 = 231
     761             :     0, // SRL_rr = 232
     762             :     0, // SRL_rr_32 = 233
     763             :     0, // STB = 234
     764             :     0, // STB32 = 235
     765             :     0, // STD = 236
     766             :     0, // STH = 237
     767             :     0, // STH32 = 238
     768             :     0, // STW = 239
     769             :     0, // STW32 = 240
     770             :     0, // SUB_ri = 241
     771             :     0, // SUB_ri_32 = 242
     772             :     0, // SUB_rr = 243
     773             :     0, // SUB_rr_32 = 244
     774             :     0, // XADD32 = 245
     775             :     0, // XADD64 = 246
     776             :     0, // XOR_ri = 247
     777             :     0, // XOR_ri_32 = 248
     778             :     0, // XOR_rr = 249
     779             :     0, // XOR_rr_32 = 250
     780             :   };
     781             : 
     782             :   assert(Inst.getOpcode() < 251);
     783             :   uint64_t MissingFeatures =
     784             :       (AvailableFeatures & RequiredFeatures[Inst.getOpcode()]) ^
     785             :       RequiredFeatures[Inst.getOpcode()];
     786             :   if (MissingFeatures) {
     787             :     std::ostringstream Msg;
     788             :     Msg << "Attempting to emit " << MCII.getName(Inst.getOpcode()).str()
     789             :         << " instruction but the ";
     790             :     for (unsigned i = 0; i < 8 * sizeof(MissingFeatures); ++i)
     791             :       if (MissingFeatures & (1ULL << i))
     792             :         Msg << SubtargetFeatureNames[i] << " ";
     793             :     Msg << "predicate(s) are not met";
     794             :     report_fatal_error(Msg.str());
     795             :   }
     796             : #else
     797             : // Silence unused variable warning on targets that don't use MCII for other purposes (e.g. BPF).
     798             : (void)MCII;
     799             : #endif // NDEBUG
     800           0 : }
     801             : #endif

Generated by: LCOV version 1.13