llvm/lib/Target/Lanai/LanaiGenMCCodeEmitter.inc

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Machine Code Emitter                                                       *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/

uint64_t LanaiMCCodeEmitter::getBinaryCodeForInstr(const MCInst &MI,
    SmallVectorImpl<MCFixup> &Fixups,
    const MCSubtargetInfo &STI) const {}

#ifdef GET_OPERAND_BIT_OFFSET
#undef GET_OPERAND_BIT_OFFSET

uint32_t LanaiMCCodeEmitter::getOperandBitOffset(const MCInst &MI,
    unsigned OpNum,
    const MCSubtargetInfo &STI) const {
  switch (MI.getOpcode()) {
    case Lanai::LOG0:
    case Lanai::LOG1:
    case Lanai::LOG2:
    case Lanai::LOG3:
    case Lanai::LOG4:
    case Lanai::NOP:
    case Lanai::RET: {
      break;
    }
    case Lanai::ADDC_F_R:
    case Lanai::ADDC_R:
    case Lanai::ADD_F_R:
    case Lanai::ADD_R:
    case Lanai::AND_F_R:
    case Lanai::AND_R:
    case Lanai::OR_F_R:
    case Lanai::OR_R:
    case Lanai::SELECT:
    case Lanai::SHL_F_R:
    case Lanai::SHL_R:
    case Lanai::SRA_F_R:
    case Lanai::SRA_R:
    case Lanai::SRL_F_R:
    case Lanai::SRL_R:
    case Lanai::SUBB_F_R:
    case Lanai::SUBB_R:
    case Lanai::SUB_F_R:
    case Lanai::SUB_R:
    case Lanai::XOR_F_R:
    case Lanai::XOR_R: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: Rs1
        return 18;
      case 2:
        // op: Rs2
        return 11;
      case 3:
        // op: DDDI
        return 0;
      }
      break;
    }
    case Lanai::ADDC_F_I_HI:
    case Lanai::ADDC_F_I_LO:
    case Lanai::ADDC_I_HI:
    case Lanai::ADDC_I_LO:
    case Lanai::ADD_F_I_HI:
    case Lanai::ADD_F_I_LO:
    case Lanai::ADD_I_HI:
    case Lanai::ADD_I_LO:
    case Lanai::AND_F_I_HI:
    case Lanai::AND_F_I_LO:
    case Lanai::AND_I_HI:
    case Lanai::AND_I_LO:
    case Lanai::OR_F_I_HI:
    case Lanai::OR_F_I_LO:
    case Lanai::OR_I_HI:
    case Lanai::OR_I_LO:
    case Lanai::SA_F_I:
    case Lanai::SA_I:
    case Lanai::SL_F_I:
    case Lanai::SL_I:
    case Lanai::SUBB_F_I_HI:
    case Lanai::SUBB_F_I_LO:
    case Lanai::SUBB_I_HI:
    case Lanai::SUBB_I_LO:
    case Lanai::SUB_F_I_HI:
    case Lanai::SUB_F_I_LO:
    case Lanai::SUB_I_HI:
    case Lanai::SUB_I_LO:
    case Lanai::XOR_F_I_HI:
    case Lanai::XOR_F_I_LO:
    case Lanai::XOR_I_HI:
    case Lanai::XOR_I_LO: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: Rs1
        return 18;
      case 2:
        // op: imm16
        return 0;
      }
      break;
    }
    case Lanai::LEADZ:
    case Lanai::POPC:
    case Lanai::TRAILZ: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: Rs1
        return 18;
      }
      break;
    }
    case Lanai::STADDR:
    case Lanai::STB_RI:
    case Lanai::STH_RI:
    case Lanai::SW_RI: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: dst
        return 0;
      }
      break;
    }
    case Lanai::STB_RR:
    case Lanai::STH_RR:
    case Lanai::SW_RR: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: dst
        return 3;
      }
      break;
    }
    case Lanai::SLI: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: imm
        return 0;
      }
      break;
    }
    case Lanai::MOVHI: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: imm16
        return 0;
      }
      break;
    }
    case Lanai::LDADDR:
    case Lanai::LDBs_RI:
    case Lanai::LDBz_RI:
    case Lanai::LDHs_RI:
    case Lanai::LDHz_RI:
    case Lanai::LDW_RI: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: src
        return 0;
      }
      break;
    }
    case Lanai::LDBs_RR:
    case Lanai::LDBz_RR:
    case Lanai::LDHs_RR:
    case Lanai::LDHz_RR:
    case Lanai::LDW_RR:
    case Lanai::LDWz_RR: {
      switch (OpNum) {
      case 0:
        // op: Rd
        return 23;
      case 1:
        // op: src
        return 3;
      }
      break;
    }
    case Lanai::BRIND_CC:
    case Lanai::SCC: {
      switch (OpNum) {
      case 0:
        // op: Rs1
        return 18;
      case 1:
        // op: DDDI
        return 0;
      }
      break;
    }
    case Lanai::BRIND_CCA: {
      switch (OpNum) {
      case 0:
        // op: Rs1
        return 18;
      case 1:
        // op: Rs2
        return 11;
      case 2:
        // op: DDDI
        return 0;
      }
      break;
    }
    case Lanai::SFSUB_F_RR: {
      switch (OpNum) {
      case 0:
        // op: Rs1
        return 18;
      case 1:
        // op: Rs2
        return 11;
      }
      break;
    }
    case Lanai::SFSUB_F_RI_HI:
    case Lanai::SFSUB_F_RI_LO: {
      switch (OpNum) {
      case 0:
        // op: Rs1
        return 18;
      case 1:
        // op: imm16
        return 0;
      }
      break;
    }
    case Lanai::JR: {
      switch (OpNum) {
      case 0:
        // op: Rs2
        return 11;
      }
      break;
    }
    case Lanai::BRCC: {
      switch (OpNum) {
      case 0:
        // op: addr
        return 2;
      case 1:
        // op: DDDI
        return 0;
      }
      break;
    }
    case Lanai::BT: {
      switch (OpNum) {
      case 0:
        // op: addr
        return 2;
      }
      break;
    }
    case Lanai::BRR: {
      switch (OpNum) {
      case 1:
        // op: DDDI
        return 0;
      case 0:
        // op: imm16
        return 2;
      }
      break;
    }
  }
  std::string msg;
  raw_string_ostream Msg(msg);
  Msg << "Not supported instr[opcode]: " << MI << "[" << OpNum << "]";
  report_fatal_error(Msg.str().c_str());
}

#endif // GET_OPERAND_BIT_OFFSET