LCOV - code coverage report
Current view: top level - build-llvm/lib/Target/RISCV - RISCVGenMCCodeEmitter.inc (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 0 21 0.0 %
Date: 2017-08-13 15:02:11 Functions: 0 1 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 RISCVMCCodeEmitter::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(51),       // ADD
     120             :     UINT64_C(19),       // ADDI
     121             :     UINT64_C(28723),    // AND
     122             :     UINT64_C(28691),    // ANDI
     123             :     UINT64_C(24627),    // OR
     124             :     UINT64_C(24595),    // ORI
     125             :     UINT64_C(4147),     // SLL
     126             :     UINT64_C(8243),     // SLT
     127             :     UINT64_C(8211),     // SLTI
     128             :     UINT64_C(12307),    // SLTIU
     129             :     UINT64_C(12339),    // SLTU
     130             :     UINT64_C(1073762355),       // SRA
     131             :     UINT64_C(20531),    // SRL
     132             :     UINT64_C(1073741875),       // SUB
     133             :     UINT64_C(16435),    // XOR
     134             :     UINT64_C(16403),    // XORI
     135             :     UINT64_C(0)
     136             :   };
     137           0 :   const unsigned opcode = MI.getOpcode();
     138           0 :   uint64_t Value = InstBits[opcode];
     139           0 :   uint64_t op = 0;
     140             :   (void)op;  // suppress warning
     141             :   switch (opcode) {
     142             :     case RISCV::ADDI:
     143             :     case RISCV::ANDI:
     144             :     case RISCV::ORI:
     145             :     case RISCV::SLTI:
     146             :     case RISCV::SLTIU:
     147             :     case RISCV::XORI: {
     148             :       // op: imm12
     149           0 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     150           0 :       Value |= (op & UINT64_C(4095)) << 20;
     151             :       // op: rs1
     152           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     153           0 :       Value |= (op & UINT64_C(31)) << 15;
     154             :       // op: rd
     155           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     156           0 :       Value |= (op & UINT64_C(31)) << 7;
     157             :       break;
     158             :     }
     159             :     case RISCV::ADD:
     160             :     case RISCV::AND:
     161             :     case RISCV::OR:
     162             :     case RISCV::SLL:
     163             :     case RISCV::SLT:
     164             :     case RISCV::SLTU:
     165             :     case RISCV::SRA:
     166             :     case RISCV::SRL:
     167             :     case RISCV::SUB:
     168             :     case RISCV::XOR: {
     169             :       // op: rs2
     170           0 :       op = getMachineOpValue(MI, MI.getOperand(2), Fixups, STI);
     171           0 :       Value |= (op & UINT64_C(31)) << 20;
     172             :       // op: rs1
     173           0 :       op = getMachineOpValue(MI, MI.getOperand(1), Fixups, STI);
     174           0 :       Value |= (op & UINT64_C(31)) << 15;
     175             :       // op: rd
     176           0 :       op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);
     177           0 :       Value |= (op & UINT64_C(31)) << 7;
     178             :       break;
     179             :     }
     180             :   default:
     181           0 :     std::string msg;
     182           0 :     raw_string_ostream Msg(msg);
     183           0 :     Msg << "Not supported instr: " << MI;
     184           0 :     report_fatal_error(Msg.str());
     185             :   }
     186           0 :   return Value;
     187             : }
     188             : 
     189             : #ifdef ENABLE_INSTR_PREDICATE_VERIFIER
     190             : #undef ENABLE_INSTR_PREDICATE_VERIFIER
     191             : #include <sstream>
     192             : 
     193             : // Flags for subtarget features that participate in instruction matching.
     194             : enum SubtargetFeatureFlag : uint8_t {
     195             :   Feature_None = 0
     196             : };
     197             : 
     198             : #ifndef NDEBUG
     199             : static const char *SubtargetFeatureNames[] = {
     200             :   nullptr
     201             : };
     202             : 
     203             : #endif // NDEBUG
     204             : uint64_t RISCVMCCodeEmitter::
     205             : computeAvailableFeatures(const FeatureBitset& FB) const {
     206             :   uint64_t Features = 0;
     207             :   return Features;
     208             : }
     209             : 
     210             : void RISCVMCCodeEmitter::verifyInstructionPredicates(
     211             :     const MCInst &Inst, uint64_t AvailableFeatures) const {
     212             : #ifndef NDEBUG
     213             :   static uint64_t RequiredFeatures[] = {
     214             :     0, // PHI = 0
     215             :     0, // INLINEASM = 1
     216             :     0, // CFI_INSTRUCTION = 2
     217             :     0, // EH_LABEL = 3
     218             :     0, // GC_LABEL = 4
     219             :     0, // KILL = 5
     220             :     0, // EXTRACT_SUBREG = 6
     221             :     0, // INSERT_SUBREG = 7
     222             :     0, // IMPLICIT_DEF = 8
     223             :     0, // SUBREG_TO_REG = 9
     224             :     0, // COPY_TO_REGCLASS = 10
     225             :     0, // DBG_VALUE = 11
     226             :     0, // REG_SEQUENCE = 12
     227             :     0, // COPY = 13
     228             :     0, // BUNDLE = 14
     229             :     0, // LIFETIME_START = 15
     230             :     0, // LIFETIME_END = 16
     231             :     0, // STACKMAP = 17
     232             :     0, // FENTRY_CALL = 18
     233             :     0, // PATCHPOINT = 19
     234             :     0, // LOAD_STACK_GUARD = 20
     235             :     0, // STATEPOINT = 21
     236             :     0, // LOCAL_ESCAPE = 22
     237             :     0, // FAULTING_OP = 23
     238             :     0, // PATCHABLE_OP = 24
     239             :     0, // PATCHABLE_FUNCTION_ENTER = 25
     240             :     0, // PATCHABLE_RET = 26
     241             :     0, // PATCHABLE_FUNCTION_EXIT = 27
     242             :     0, // PATCHABLE_TAIL_CALL = 28
     243             :     0, // PATCHABLE_EVENT_CALL = 29
     244             :     0, // G_ADD = 30
     245             :     0, // G_SUB = 31
     246             :     0, // G_MUL = 32
     247             :     0, // G_SDIV = 33
     248             :     0, // G_UDIV = 34
     249             :     0, // G_SREM = 35
     250             :     0, // G_UREM = 36
     251             :     0, // G_AND = 37
     252             :     0, // G_OR = 38
     253             :     0, // G_XOR = 39
     254             :     0, // G_IMPLICIT_DEF = 40
     255             :     0, // G_FRAME_INDEX = 41
     256             :     0, // G_GLOBAL_VALUE = 42
     257             :     0, // G_EXTRACT = 43
     258             :     0, // G_UNMERGE_VALUES = 44
     259             :     0, // G_INSERT = 45
     260             :     0, // G_MERGE_VALUES = 46
     261             :     0, // G_PTRTOINT = 47
     262             :     0, // G_INTTOPTR = 48
     263             :     0, // G_BITCAST = 49
     264             :     0, // G_LOAD = 50
     265             :     0, // G_STORE = 51
     266             :     0, // G_BRCOND = 52
     267             :     0, // G_BRINDIRECT = 53
     268             :     0, // G_INTRINSIC = 54
     269             :     0, // G_INTRINSIC_W_SIDE_EFFECTS = 55
     270             :     0, // G_ANYEXT = 56
     271             :     0, // G_TRUNC = 57
     272             :     0, // G_CONSTANT = 58
     273             :     0, // G_FCONSTANT = 59
     274             :     0, // G_VASTART = 60
     275             :     0, // G_VAARG = 61
     276             :     0, // G_SEXT = 62
     277             :     0, // G_ZEXT = 63
     278             :     0, // G_SHL = 64
     279             :     0, // G_LSHR = 65
     280             :     0, // G_ASHR = 66
     281             :     0, // G_ICMP = 67
     282             :     0, // G_FCMP = 68
     283             :     0, // G_SELECT = 69
     284             :     0, // G_UADDE = 70
     285             :     0, // G_USUBE = 71
     286             :     0, // G_SADDO = 72
     287             :     0, // G_SSUBO = 73
     288             :     0, // G_UMULO = 74
     289             :     0, // G_SMULO = 75
     290             :     0, // G_UMULH = 76
     291             :     0, // G_SMULH = 77
     292             :     0, // G_FADD = 78
     293             :     0, // G_FSUB = 79
     294             :     0, // G_FMUL = 80
     295             :     0, // G_FMA = 81
     296             :     0, // G_FDIV = 82
     297             :     0, // G_FREM = 83
     298             :     0, // G_FPOW = 84
     299             :     0, // G_FEXP = 85
     300             :     0, // G_FEXP2 = 86
     301             :     0, // G_FLOG = 87
     302             :     0, // G_FLOG2 = 88
     303             :     0, // G_FNEG = 89
     304             :     0, // G_FPEXT = 90
     305             :     0, // G_FPTRUNC = 91
     306             :     0, // G_FPTOSI = 92
     307             :     0, // G_FPTOUI = 93
     308             :     0, // G_SITOFP = 94
     309             :     0, // G_UITOFP = 95
     310             :     0, // G_GEP = 96
     311             :     0, // G_PTR_MASK = 97
     312             :     0, // G_BR = 98
     313             :     0, // G_INSERT_VECTOR_ELT = 99
     314             :     0, // G_EXTRACT_VECTOR_ELT = 100
     315             :     0, // G_SHUFFLE_VECTOR = 101
     316             :     0, // ADD = 102
     317             :     0, // ADDI = 103
     318             :     0, // AND = 104
     319             :     0, // ANDI = 105
     320             :     0, // OR = 106
     321             :     0, // ORI = 107
     322             :     0, // SLL = 108
     323             :     0, // SLT = 109
     324             :     0, // SLTI = 110
     325             :     0, // SLTIU = 111
     326             :     0, // SLTU = 112
     327             :     0, // SRA = 113
     328             :     0, // SRL = 114
     329             :     0, // SUB = 115
     330             :     0, // XOR = 116
     331             :     0, // XORI = 117
     332             :   };
     333             : 
     334             :   assert(Inst.getOpcode() < 118);
     335             :   uint64_t MissingFeatures =
     336             :       (AvailableFeatures & RequiredFeatures[Inst.getOpcode()]) ^
     337             :       RequiredFeatures[Inst.getOpcode()];
     338             :   if (MissingFeatures) {
     339             :     std::ostringstream Msg;
     340             :     Msg << "Attempting to emit " << MCII.getName(Inst.getOpcode()).str()
     341             :         << " instruction but the ";
     342             :     for (unsigned i = 0; i < 8 * sizeof(MissingFeatures); ++i)
     343             :       if (MissingFeatures & (1ULL << i))
     344             :         Msg << SubtargetFeatureNames[i] << " ";
     345             :     Msg << "predicate(s) are not met";
     346             :     report_fatal_error(Msg.str());
     347             :   }
     348             : #else
     349             : // Silence unused variable warning on targets that don't use MCII for other purposes (e.g. BPF).
     350             : (void)MCII;
     351             : #endif // NDEBUG
     352             : }
     353             : #endif

Generated by: LCOV version 1.13