1*9880d681SAndroid Build Coastguard Worker //===-- MipsMCCodeEmitter.h - Convert Mips Code to Machine Code -----------===// 2*9880d681SAndroid Build Coastguard Worker // 3*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker // 5*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker // 8*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker // 10*9880d681SAndroid Build Coastguard Worker // This file defines the MipsMCCodeEmitter class. 11*9880d681SAndroid Build Coastguard Worker // 12*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 13*9880d681SAndroid Build Coastguard Worker // 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCCODEEMITTER_H 16*9880d681SAndroid Build Coastguard Worker #define LLVM_LIB_TARGET_MIPS_MCTARGETDESC_MIPSMCCODEEMITTER_H 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker #include "llvm/MC/MCCodeEmitter.h" 19*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/DataTypes.h" 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker using namespace llvm; 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker namespace llvm { 24*9880d681SAndroid Build Coastguard Worker class MCContext; 25*9880d681SAndroid Build Coastguard Worker class MCExpr; 26*9880d681SAndroid Build Coastguard Worker class MCInst; 27*9880d681SAndroid Build Coastguard Worker class MCInstrInfo; 28*9880d681SAndroid Build Coastguard Worker class MCFixup; 29*9880d681SAndroid Build Coastguard Worker class MCOperand; 30*9880d681SAndroid Build Coastguard Worker class MCSubtargetInfo; 31*9880d681SAndroid Build Coastguard Worker class raw_ostream; 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker class MipsMCCodeEmitter : public MCCodeEmitter { 34*9880d681SAndroid Build Coastguard Worker MipsMCCodeEmitter(const MipsMCCodeEmitter &) = delete; 35*9880d681SAndroid Build Coastguard Worker void operator=(const MipsMCCodeEmitter &) = delete; 36*9880d681SAndroid Build Coastguard Worker const MCInstrInfo &MCII; 37*9880d681SAndroid Build Coastguard Worker MCContext &Ctx; 38*9880d681SAndroid Build Coastguard Worker bool IsLittleEndian; 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker bool isMicroMips(const MCSubtargetInfo &STI) const; 41*9880d681SAndroid Build Coastguard Worker bool isMips32r6(const MCSubtargetInfo &STI) const; 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker public: MipsMCCodeEmitter(const MCInstrInfo & mcii,MCContext & Ctx_,bool IsLittle)44*9880d681SAndroid Build Coastguard Worker MipsMCCodeEmitter(const MCInstrInfo &mcii, MCContext &Ctx_, bool IsLittle) 45*9880d681SAndroid Build Coastguard Worker : MCII(mcii), Ctx(Ctx_), IsLittleEndian(IsLittle) {} 46*9880d681SAndroid Build Coastguard Worker ~MipsMCCodeEmitter()47*9880d681SAndroid Build Coastguard Worker ~MipsMCCodeEmitter() override {} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker void EmitByte(unsigned char C, raw_ostream &OS) const; 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker void EmitInstruction(uint64_t Val, unsigned Size, const MCSubtargetInfo &STI, 52*9880d681SAndroid Build Coastguard Worker raw_ostream &OS) const; 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Worker void encodeInstruction(const MCInst &MI, raw_ostream &OS, 55*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 56*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const override; 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker // getBinaryCodeForInstr - TableGen'erated function for getting the 59*9880d681SAndroid Build Coastguard Worker // binary encoding for an instruction. 60*9880d681SAndroid Build Coastguard Worker uint64_t getBinaryCodeForInstr(const MCInst &MI, 61*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 62*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker // getJumpTargetOpValue - Return binary encoding of the jump 65*9880d681SAndroid Build Coastguard Worker // target operand. If the machine operand requires relocation, 66*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 67*9880d681SAndroid Build Coastguard Worker unsigned getJumpTargetOpValue(const MCInst &MI, unsigned OpNo, 68*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 69*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker // getBranchJumpOpValueMM - Return binary encoding of the microMIPS jump 72*9880d681SAndroid Build Coastguard Worker // target operand. If the machine operand requires relocation, 73*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 74*9880d681SAndroid Build Coastguard Worker unsigned getJumpTargetOpValueMM(const MCInst &MI, unsigned OpNo, 75*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 76*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker // getUImm5Lsl2Encoding - Return binary encoding of the microMIPS jump 79*9880d681SAndroid Build Coastguard Worker // target operand. 80*9880d681SAndroid Build Coastguard Worker unsigned getUImm5Lsl2Encoding(const MCInst &MI, unsigned OpNo, 81*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 82*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Worker unsigned getSImm3Lsa2Value(const MCInst &MI, unsigned OpNo, 85*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 86*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 87*9880d681SAndroid Build Coastguard Worker 88*9880d681SAndroid Build Coastguard Worker unsigned getUImm6Lsl2Encoding(const MCInst &MI, unsigned OpNo, 89*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 90*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker // getSImm9AddiuspValue - Return binary encoding of the microMIPS addiusp 93*9880d681SAndroid Build Coastguard Worker // instruction immediate operand. 94*9880d681SAndroid Build Coastguard Worker unsigned getSImm9AddiuspValue(const MCInst &MI, unsigned OpNo, 95*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 96*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker // getBranchTargetOpValue - Return binary encoding of the branch 99*9880d681SAndroid Build Coastguard Worker // target operand. If the machine operand requires relocation, 100*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 101*9880d681SAndroid Build Coastguard Worker unsigned getBranchTargetOpValue(const MCInst &MI, unsigned OpNo, 102*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 103*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker // getBranchTargetOpValue1SImm16 - Return binary encoding of the branch 106*9880d681SAndroid Build Coastguard Worker // target operand. If the machine operand requires relocation, 107*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 108*9880d681SAndroid Build Coastguard Worker unsigned getBranchTargetOpValue1SImm16(const MCInst &MI, unsigned OpNo, 109*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 110*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker // getBranchTargetOpValueMMR6 - Return binary encoding of the branch 113*9880d681SAndroid Build Coastguard Worker // target operand. If the machine operand requires relocation, 114*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 115*9880d681SAndroid Build Coastguard Worker unsigned getBranchTargetOpValueMMR6(const MCInst &MI, unsigned OpNo, 116*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 117*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker // getBranchTarget7OpValue - Return binary encoding of the microMIPS branch 120*9880d681SAndroid Build Coastguard Worker // target operand. If the machine operand requires relocation, 121*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 122*9880d681SAndroid Build Coastguard Worker unsigned getBranchTarget7OpValueMM(const MCInst &MI, unsigned OpNo, 123*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 124*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker // getBranchTargetOpValueMMPC10 - Return binary encoding of the microMIPS 127*9880d681SAndroid Build Coastguard Worker // 10-bit branch target operand. If the machine operand requires relocation, 128*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 129*9880d681SAndroid Build Coastguard Worker unsigned getBranchTargetOpValueMMPC10(const MCInst &MI, unsigned OpNo, 130*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 131*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Worker // getBranchTargetOpValue - Return binary encoding of the microMIPS branch 134*9880d681SAndroid Build Coastguard Worker // target operand. If the machine operand requires relocation, 135*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 136*9880d681SAndroid Build Coastguard Worker unsigned getBranchTargetOpValueMM(const MCInst &MI, unsigned OpNo, 137*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 138*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Worker // getBranchTarget21OpValue - Return binary encoding of the branch 141*9880d681SAndroid Build Coastguard Worker // offset operand. If the machine operand requires relocation, 142*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 143*9880d681SAndroid Build Coastguard Worker unsigned getBranchTarget21OpValue(const MCInst &MI, unsigned OpNo, 144*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 145*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker // getBranchTarget21OpValueMM - Return binary encoding of the branch 148*9880d681SAndroid Build Coastguard Worker // offset operand for microMIPS. If the machine operand requires 149*9880d681SAndroid Build Coastguard Worker // relocation,record the relocation and return zero. 150*9880d681SAndroid Build Coastguard Worker unsigned getBranchTarget21OpValueMM(const MCInst &MI, unsigned OpNo, 151*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 152*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Worker // getBranchTarget26OpValue - Return binary encoding of the branch 155*9880d681SAndroid Build Coastguard Worker // offset operand. If the machine operand requires relocation, 156*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 157*9880d681SAndroid Build Coastguard Worker unsigned getBranchTarget26OpValue(const MCInst &MI, unsigned OpNo, 158*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 159*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 160*9880d681SAndroid Build Coastguard Worker 161*9880d681SAndroid Build Coastguard Worker // getBranchTarget26OpValueMM - Return binary encoding of the branch 162*9880d681SAndroid Build Coastguard Worker // offset operand. If the machine operand requires relocation, 163*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 164*9880d681SAndroid Build Coastguard Worker unsigned getBranchTarget26OpValueMM(const MCInst &MI, unsigned OpNo, 165*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 166*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker // getJumpOffset16OpValue - Return binary encoding of the jump 169*9880d681SAndroid Build Coastguard Worker // offset operand. If the machine operand requires relocation, 170*9880d681SAndroid Build Coastguard Worker // record the relocation and return zero. 171*9880d681SAndroid Build Coastguard Worker unsigned getJumpOffset16OpValue(const MCInst &MI, unsigned OpNo, 172*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 173*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker // getMachineOpValue - Return binary encoding of operand. If the machin 176*9880d681SAndroid Build Coastguard Worker // operand requires relocation, record the relocation and return zero. 177*9880d681SAndroid Build Coastguard Worker unsigned getMachineOpValue(const MCInst &MI, const MCOperand &MO, 178*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 179*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 180*9880d681SAndroid Build Coastguard Worker 181*9880d681SAndroid Build Coastguard Worker unsigned getMSAMemEncoding(const MCInst &MI, unsigned OpNo, 182*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 183*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Worker template <unsigned ShiftAmount = 0> 186*9880d681SAndroid Build Coastguard Worker unsigned getMemEncoding(const MCInst &MI, unsigned OpNo, 187*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 188*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 189*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMImm4(const MCInst &MI, unsigned OpNo, 190*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 191*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 192*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMImm4Lsl1(const MCInst &MI, unsigned OpNo, 193*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 194*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 195*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMImm4Lsl2(const MCInst &MI, unsigned OpNo, 196*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 197*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 198*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMSPImm5Lsl2(const MCInst &MI, unsigned OpNo, 199*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 200*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 201*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMGPImm7Lsl2(const MCInst &MI, unsigned OpNo, 202*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 203*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 204*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMImm9(const MCInst &MI, unsigned OpNo, 205*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 206*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 207*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMImm11(const MCInst &MI, unsigned OpNo, 208*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 209*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 210*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMImm12(const MCInst &MI, unsigned OpNo, 211*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 212*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 213*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMImm16(const MCInst &MI, unsigned OpNo, 214*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 215*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 216*9880d681SAndroid Build Coastguard Worker unsigned getMemEncodingMMImm4sp(const MCInst &MI, unsigned OpNo, 217*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 218*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 219*9880d681SAndroid Build Coastguard Worker unsigned getSizeInsEncoding(const MCInst &MI, unsigned OpNo, 220*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 221*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 222*9880d681SAndroid Build Coastguard Worker 223*9880d681SAndroid Build Coastguard Worker /// Subtract Offset then encode as a N-bit unsigned integer. 224*9880d681SAndroid Build Coastguard Worker template <unsigned Bits, int Offset> 225*9880d681SAndroid Build Coastguard Worker unsigned getUImmWithOffsetEncoding(const MCInst &MI, unsigned OpNo, 226*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 227*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Worker unsigned getSimm19Lsl2Encoding(const MCInst &MI, unsigned OpNo, 230*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 231*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 232*9880d681SAndroid Build Coastguard Worker 233*9880d681SAndroid Build Coastguard Worker unsigned getSimm18Lsl3Encoding(const MCInst &MI, unsigned OpNo, 234*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 235*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker unsigned getUImm3Mod8Encoding(const MCInst &MI, unsigned OpNo, 238*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 239*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 240*9880d681SAndroid Build Coastguard Worker unsigned getUImm4AndValue(const MCInst &MI, unsigned OpNo, 241*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 242*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 243*9880d681SAndroid Build Coastguard Worker 244*9880d681SAndroid Build Coastguard Worker unsigned getRegisterPairOpValue(const MCInst &MI, unsigned OpNo, 245*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 246*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Worker unsigned getMovePRegPairOpValue(const MCInst &MI, unsigned OpNo, 249*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 250*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 251*9880d681SAndroid Build Coastguard Worker 252*9880d681SAndroid Build Coastguard Worker unsigned getSimm23Lsl2Encoding(const MCInst &MI, unsigned OpNo, 253*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 254*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 255*9880d681SAndroid Build Coastguard Worker 256*9880d681SAndroid Build Coastguard Worker unsigned getExprOpValue(const MCExpr *Expr, SmallVectorImpl<MCFixup> &Fixups, 257*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 258*9880d681SAndroid Build Coastguard Worker 259*9880d681SAndroid Build Coastguard Worker unsigned getRegisterListOpValue(const MCInst &MI, unsigned OpNo, 260*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 261*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 262*9880d681SAndroid Build Coastguard Worker 263*9880d681SAndroid Build Coastguard Worker unsigned getRegisterListOpValue16(const MCInst &MI, unsigned OpNo, 264*9880d681SAndroid Build Coastguard Worker SmallVectorImpl<MCFixup> &Fixups, 265*9880d681SAndroid Build Coastguard Worker const MCSubtargetInfo &STI) const; 266*9880d681SAndroid Build Coastguard Worker private: 267*9880d681SAndroid Build Coastguard Worker void LowerCompactBranch(MCInst& Inst) const; 268*9880d681SAndroid Build Coastguard Worker }; // class MipsMCCodeEmitter 269*9880d681SAndroid Build Coastguard Worker } // namespace llvm. 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Worker #endif 272