71#define DEBUG_TYPE "mips-asm-printer" 
   84    for (
const auto &
I : 
MipsFI->StubsNeeded)
 
   85      StubsNeeded.insert(
I);
 
   86  MCP = 
MF.getConstantPool();
 
 
  100#include "MipsGenMCPseudoLowering.inc" 
  104void MipsAsmPrinter::emitPseudoIndirectBranch(
MCStreamer &OutStreamer,
 
  106  bool HasLinkReg = 
false;
 
  133    unsigned ZeroReg = 
Subtarget->isGP64bit() ? Mips::ZERO_64 : Mips::ZERO;
 
  137  lowerOperand(
MI->getOperand(0), MCOp);
 
  159      if (Callee && !Callee->getName().empty()) {
 
  161        const MCExpr *OffsetExpr =
 
 
  182  unsigned Opc = 
MI->getOpcode();
 
  185  if (
MI->isDebugValue()) {
 
  192  if (
MI->isDebugLabel())
 
  196  if (InConstantPool && 
Opc != Mips::CONSTPOOL_ENTRY) {
 
  198    InConstantPool = 
false;
 
  200  if (
Opc == Mips::CONSTPOOL_ENTRY) {
 
  208    unsigned LabelId = (
unsigned)
MI->getOperand(0).getImm();
 
  209    unsigned CPIdx = (
unsigned)
MI->getOperand(1).getIndex();
 
  212    if (!InConstantPool) {
 
  214      InConstantPool = 
true;
 
  228  case Mips::PATCHABLE_FUNCTION_ENTER:
 
  231  case Mips::PATCHABLE_FUNCTION_EXIT:
 
  234  case Mips::PATCHABLE_TAIL_CALL:
 
  240      (
MI->isReturn() || 
MI->isCall() || 
MI->isIndirectBranch())) {
 
  249    if (
MCInst OutInst; lowerPseudoInstExpansion(&*
I, OutInst)) {
 
  258    if (
I->getOpcode() == Mips::PseudoReturn ||
 
  259        I->getOpcode() == Mips::PseudoReturn64 ||
 
  260        I->getOpcode() == Mips::PseudoIndirectBranch ||
 
  261        I->getOpcode() == Mips::PseudoIndirectBranch64 ||
 
  262        I->getOpcode() == Mips::TAILCALLREG ||
 
  263        I->getOpcode() == Mips::TAILCALLREG64) {
 
  275    if (
I->isPseudo() && !
Subtarget->inMips16Mode()
 
  276        && !isLongBranchPseudo(
I->getOpcode()))
 
  282  } 
while ((++
I != E) && 
I->isInsideBundle()); 
 
 
  324  unsigned CPUBitmask = 0, FPUBitmask = 0;
 
  325  int CPUTopSavedRegOff, FPUTopSavedRegOff;
 
  332  unsigned CPURegSize = 
TRI->getRegSizeInBits(Mips::GPR32RegClass) / 8;
 
  333  unsigned FGR32RegSize = 
TRI->getRegSizeInBits(Mips::FGR32RegClass) / 8;
 
  334  unsigned AFGR64RegSize = 
TRI->getRegSizeInBits(Mips::AFGR64RegClass) / 8;
 
  335  bool HasAFGR64Reg = 
false;
 
  336  unsigned CSFPRegsSize = 0;
 
  338  for (
const auto &
I : CSI) {
 
  340    unsigned RegNum = 
TRI->getEncodingValue(Reg);
 
  344    if (Mips::FGR32RegClass.
contains(Reg)) {
 
  345      FPUBitmask |= (1 << RegNum);
 
  346      CSFPRegsSize += FGR32RegSize;
 
  347    } 
else if (Mips::AFGR64RegClass.
contains(Reg)) {
 
  348      FPUBitmask |= (3 << RegNum);
 
  349      CSFPRegsSize += AFGR64RegSize;
 
  351    } 
else if (Mips::GPR32RegClass.
contains(Reg))
 
  352      CPUBitmask |= (1 << RegNum);
 
  356  FPUTopSavedRegOff = FPUBitmask ?
 
  357    (HasAFGR64Reg ? -AFGR64RegSize : -FGR32RegSize) : 0;
 
  360  CPUTopSavedRegOff = CPUBitmask ? -CSFPRegsSize - CPURegSize : 0;
 
  364  TS.
emitMask(CPUBitmask, CPUTopSavedRegOff);
 
  367  TS.
emitFMask(FPUBitmask, FPUTopSavedRegOff);
 
 
  380  unsigned stackSize = 
MF->getFrameInfo().getStackSize();
 
  382  getTargetStreamer().emitFrame(stackReg, stackSize, returnReg);
 
 
  421  bool IsNakedFunction = 
MF->getFunction().hasFnAttribute(Attribute::Naked);
 
  422  if (!IsNakedFunction)
 
  425  if (!IsNakedFunction)
 
 
  453  InConstantPool = 
false;
 
 
  468  if (ExtraCode && ExtraCode[0]) {
 
  469    if (ExtraCode[1] != 0) 
return true; 
 
  472    switch (ExtraCode[0]) {
 
  518      if (!FlagsOP.
isImm())
 
  521      const unsigned NumVals = Flags.getNumOperandRegisters();
 
  533      unsigned RegOp = OpNum;
 
  537        switch(ExtraCode[0]) {
 
  539          RegOp = (
Subtarget->isLittle()) ? OpNum + 1 : OpNum;
 
  542          RegOp = (
Subtarget->isLittle()) ? OpNum : OpNum + 1;
 
  547        if (RegOp >= 
MI->getNumOperands())
 
  560      if (w != Mips::NoRegister) {
 
 
  575                                           const char *ExtraCode,
 
  577  assert(OpNum + 1 < 
MI->getNumOperands() && 
"Insufficient operands");
 
  581         "Unexpected base pointer for inline asm memory operand.");
 
  583         "Unexpected offset for inline asm memory operand.");
 
  588    switch (ExtraCode[0]) {
 
 
  673  if (closeP) O << 
")";
 
 
  684  switch (
MI->getOpcode()) {
 
  689    opNum = 
MI->getNumOperands() - 2;
 
 
  716  for (
int i = opNum, e = 
MI->getNumOperands(); i != e; ++i) {
 
  717    if (i != opNum) O << 
", ";
 
 
  723  const Triple &TT = 
TM.getTargetTriple();
 
  725  if (TT.isOSBinFormatELF()) {
 
  736    if (FS.empty() && M.size() && 
F->hasFnAttribute(
"target-features"))
 
  737      FS = 
F->getFnAttribute(
"target-features").getValueAsString();
 
  739    std::string strFS = FS.str();
 
  740    if (M.size() && 
F->getFnAttribute(
"use-soft-float").getValueAsBool())
 
  741      strFS += strFS.empty() ? 
"+soft-float" : 
",+soft-float";
 
 
  820                                        unsigned uid)
 const {
 
  829    getTargetStreamer().emitGPRel32Value(
 
  833    getTargetStreamer().emitGPRel64Value(
 
  843  I.setOpcode(Mips::JAL);
 
  849void MipsAsmPrinter::EmitInstrReg(
const MCSubtargetInfo &STI, 
unsigned Opcode,
 
  858                                     unsigned Opcode, 
unsigned Reg1,
 
  866  if (Opcode == Mips::MTC1) {
 
  867    unsigned Temp = Reg1;
 
  878                                        unsigned Opcode, 
unsigned Reg1,
 
  879                                        unsigned Reg2, 
unsigned Reg3) {
 
  889                                      unsigned MovOpc, 
unsigned Reg1,
 
  890                                      unsigned Reg2, 
unsigned FPReg1,
 
  891                                      unsigned FPReg2, 
bool LE) {
 
  893    unsigned temp = Reg1;
 
  897  EmitInstrRegReg(STI, MovOpc, Reg1, FPReg1);
 
  898  EmitInstrRegReg(STI, MovOpc, Reg2, FPReg2);
 
  903                                         bool LE, 
bool ToFP) {
 
  904  using namespace Mips16HardFloatInfo;
 
  906  unsigned MovOpc = ToFP ? Mips::MTC1 : Mips::MFC1;
 
  909    EmitInstrRegReg(STI, MovOpc, Mips::A0, Mips::F12);
 
  912    EmitMovFPIntPair(STI, MovOpc, Mips::A0, Mips::A1, Mips::F12, Mips::F14, LE);
 
  915    EmitInstrRegReg(STI, MovOpc, Mips::A0, Mips::F12);
 
  916    EmitMovFPIntPair(STI, MovOpc, Mips::A2, Mips::A3, Mips::F14, Mips::F15, LE);
 
  919    EmitMovFPIntPair(STI, MovOpc, Mips::A0, Mips::A1, Mips::F12, Mips::F13, LE);
 
  922    EmitMovFPIntPair(STI, MovOpc, Mips::A0, Mips::A1, Mips::F12, Mips::F13, LE);
 
  923    EmitMovFPIntPair(STI, MovOpc, Mips::A2, Mips::A3, Mips::F14, Mips::F15, LE);
 
  926    EmitMovFPIntPair(STI, MovOpc, Mips::A0, Mips::A1, Mips::F12, Mips::F13, LE);
 
  927    EmitInstrRegReg(STI, MovOpc, Mips::A2, Mips::F14);
 
  934void MipsAsmPrinter::EmitSwapFPIntRetval(
 
  937  using namespace Mips16HardFloatInfo;
 
  939  unsigned MovOpc = Mips::MFC1;
 
  942    EmitInstrRegReg(STI, MovOpc, Mips::V0, Mips::F0);
 
  945    EmitMovFPIntPair(STI, MovOpc, Mips::V0, Mips::V1, Mips::F0, Mips::F1, LE);
 
  948    EmitMovFPIntPair(STI, MovOpc, Mips::V0, Mips::V1, Mips::F0, Mips::F1, LE);
 
  951    EmitMovFPIntPair(STI, MovOpc, Mips::V0, Mips::V1, Mips::F0, Mips::F1, LE);
 
  952    EmitMovFPIntPair(STI, MovOpc, Mips::A0, Mips::A1, Mips::F2, Mips::F3, LE);
 
  959void MipsAsmPrinter::EmitFPCallStub(
 
  961  using namespace Mips16HardFloatInfo;
 
  969  std::unique_ptr<MCSubtargetInfo> STI(
TM.getTarget().createMCSubtargetInfo(
 
  970      TM.getTargetTriple(), 
TM.getTargetCPU(), 
TM.getTargetFeatureString()));
 
  982  switch (Signature->
RetSig) {
 
  993    RetType = 
"double complex";
 
 1005    Parms = 
"float, float";
 
 1008    Parms = 
"float, double";
 
 1014    Parms = 
"double, double";
 
 1017    Parms = 
"double, float";
 
 1023  OutStreamer->AddComment(
"\t# Stub function to call " + Twine(RetType) + 
" " +
 
 1024                          Twine(Symbol) + 
" (" + Twine(Parms) + 
")");
 
 1040  MipsTargetStreamer &TS = getTargetStreamer();
 
 1052  std::string 
x = 
"__call_stub_fp_" + std::string(Symbol);
 
 1056      OutContext.getOrCreateSymbol(
"__call_stub_fp_" + Twine(Symbol));
 
 1062         "should not be here if we are compiling pic");
 
 1079  EmitInstrRegRegReg(*STI, Mips::OR, Mips::S2, Mips::RA, Mips::ZERO);
 
 1081  EmitSwapFPIntParams(*STI, Signature->
ParamSig, LE, 
true);
 
 1085  EmitJal(*STI, MSymbol);
 
 1088  EmitSwapFPIntRetval(*STI, Signature->
RetSig, LE);
 
 1094  EmitInstrReg(*STI, Mips::JR, Mips::S2);
 
 1112           it = StubsNeeded.
begin();
 
 1113       it != StubsNeeded.end(); ++it) {
 
 1114    const char *Symbol = it->first;
 
 1116    EmitFPCallStub(Symbol, Signature);
 
 
 1122void MipsAsmPrinter::EmitSled(
const MachineInstr &
MI, SledKind Kind) {
 
 1198                                   .addExpr(TargetExpr));
 
 1200  for (int8_t 
I = 0; 
I < NoopsInSledCount; 
I++)
 
 1243        getTargetStreamer().emitDTPRel32Value(MipsExpr->getSubExpr());
 
 1246        getTargetStreamer().emitDTPRel64Value(MipsExpr->getSubExpr());
 
 
 1257bool MipsAsmPrinter::isLongBranchPseudo(
int Opcode)
 const {
 
 1258  return (Opcode == Mips::LONG_BRANCH_LUi
 
 1259          || Opcode == Mips::LONG_BRANCH_LUi2Op
 
 1260          || Opcode == Mips::LONG_BRANCH_LUi2Op_64
 
 1261          || Opcode == Mips::LONG_BRANCH_ADDiu
 
 1262          || Opcode == Mips::LONG_BRANCH_ADDiu2Op
 
 1263          || Opcode == Mips::LONG_BRANCH_DADDiu
 
 1264          || Opcode == Mips::LONG_BRANCH_DADDiu2Op);
 
 1274LLVMInitializeMipsAsmPrinter() {
 
 
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
 
This file contains the simple types necessary to represent the attributes associated with functions a...
 
static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")
 
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
 
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
 
#define LLVM_EXTERNAL_VISIBILITY
 
Module.h This file contains the declarations for the Module class.
 
This file declares the MachineConstantPool class which is an abstract constant pool to keep track of ...
 
Register const TargetRegisterInfo * TRI
 
cl::opt< bool > EmitJalrReloc
 
static void emitDirectiveRelocJalr(const MachineInstr &MI, MCContext &OutContext, TargetMachine &TM, MCStreamer &OutStreamer, const MipsSubtarget &Subtarget)
 
#define INITIALIZE_PASS(passName, arg, name, cfg, analysis)
 
static bool contains(SmallPtrSetImpl< ConstantExpr * > &Cache, ConstantExpr *Expr, Constant *C)
 
This file defines the SmallString class.
 
static TableGen::Emitter::Opt Y("gen-skeleton-entry", EmitSkeleton, "Generate example skeleton entry")
 
static TableGen::Emitter::OptClass< SkeletonEmitter > X("gen-skeleton-class", "Generate example skeleton class")
 
const TargetLoweringObjectFile & getObjFileLowering() const
Return information about object file lowering.
 
virtual void emitDebugValue(const MCExpr *Value, unsigned Size) const
Emit the directive and value for debug thread local expression.
 
void EmitToStreamer(MCStreamer &S, const MCInst &Inst)
 
TargetMachine & TM
Target machine description.
 
void emitXRayTable()
Emit a table with all XRay instrumentation points.
 
virtual void emitBasicBlockEnd(const MachineBasicBlock &MBB)
Targets can override this to emit stuff at the end of a basic block.
 
virtual MCSymbol * GetCPISymbol(unsigned CPID) const
Return the symbol for the specified constant pool entry.
 
virtual void PrintSymbolOperand(const MachineOperand &MO, raw_ostream &OS)
Print the MachineOperand as a symbol.
 
const MCAsmInfo * MAI
Target Asm Printer information.
 
MachineFunction * MF
The current machine function.
 
virtual void emitMachineConstantPoolValue(MachineConstantPoolValue *MCPV)
 
void recordSled(MCSymbol *Sled, const MachineInstr &MI, SledKind Kind, uint8_t Version=0)
 
unsigned getFunctionNumber() const
Return a unique ID for the current function.
 
void emitGlobalConstant(const DataLayout &DL, const Constant *CV, AliasMapTy *AliasList=nullptr)
EmitGlobalConstant - Print a general LLVM constant to the .s file.
 
MCSymbol * CurrentFnSym
The symbol for the current function.
 
MCContext & OutContext
This is the context for the output file that we are streaming.
 
bool isPositionIndependent() const
 
bool runOnMachineFunction(MachineFunction &MF) override
Emit the specified function out to the OutStreamer.
 
std::unique_ptr< MCStreamer > OutStreamer
This is the MCStreamer object for the file we are generating.
 
unsigned getPointerSize() const
Return the pointer size from the TargetMachine.
 
MCSymbol * GetBlockAddressSymbol(const BlockAddress *BA) const
Return the MCSymbol used to satisfy BlockAddress uses of the specified basic block.
 
const DataLayout & getDataLayout() const
Return information about data layout.
 
const MCSubtargetInfo & getSubtargetInfo() const
Return information about subtarget.
 
virtual void emitInlineAsmStart() const
Let the target do anything it needs to do before emitting inlineasm.
 
virtual bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, const char *ExtraCode, raw_ostream &OS)
Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant.
 
bool isLittleEndian() const
Layout endianness...
 
StringRef getPrivateGlobalPrefix() const
 
static const MCBinaryExpr * createSub(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
 
Context object for machine code objects.
 
LLVM_ABI MCSymbol * createTempSymbol()
Create a temporary symbol with a unique name.
 
Base class for the full range of assembler expressions which are needed for parsing.
 
Instances of this class represent a single low-level machine instruction.
 
void addOperand(const MCOperand Op)
 
void setOpcode(unsigned Op)
 
Instances of this class represent operands of the MCInst class.
 
static MCOperand createExpr(const MCExpr *Val)
 
static MCOperand createReg(MCRegister Reg)
 
MCRegister getRARegister() const
This method should return the register where the return address can be found.
 
Wrapper class representing physical registers. Should be passed by value.
 
Streaming machine code generation interface.
 
virtual void emitRelocDirective(const MCExpr &Offset, StringRef Name, const MCExpr *Expr, SMLoc Loc={})
Record a relocation described by the .reloc directive.
 
virtual void emitLabel(MCSymbol *Symbol, SMLoc Loc=SMLoc())
Emit a label for Symbol into the current section.
 
Generic base class for all target subtargets.
 
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx, SMLoc Loc=SMLoc())
 
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
 
LLVM_ABI void print(raw_ostream &OS, const MCAsmInfo *MAI) const
print - Print the value to the stream OS.
 
StringRef getName() const
getName - Get the symbol name.
 
LLVM_ABI MCSymbol * getSymbol() const
Return the MCSymbol for this basic block.
 
Instructions::const_iterator const_instr_iterator
 
This class is a data container for one entry in a MachineConstantPool.
 
union llvm::MachineConstantPoolEntry::@004270020304201266316354007027341142157160323045 Val
The constant itself.
 
bool isMachineConstantPoolEntry() const
isMachineConstantPoolEntry - Return true if the MachineConstantPoolEntry is indeed a target specific ...
 
MachineConstantPoolValue * MachineCPVal
 
const Constant * ConstVal
 
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted.
 
const std::vector< CalleeSavedInfo > & getCalleeSavedInfo() const
Returns a reference to call saved info vector for the current function.
 
Representation of each machine instruction.
 
@ EK_GPRel32BlockAddress
EK_GPRel32BlockAddress - Each entry is an address of block, encoded with a relocation as gp-relative,...
 
@ EK_BlockAddress
EK_BlockAddress - Each entry is a plain address of block, e.g.: .word LBB123.
 
@ EK_GPRel64BlockAddress
EK_GPRel64BlockAddress - Each entry is an address of block, encoded with a relocation as gp-relative,...
 
JTEntryKind getEntryKind() const
 
MachineOperand class - Representation of each machine instruction operand.
 
bool isReg() const
isReg - Tests if this is a MO_Register operand.
 
MachineBasicBlock * getMBB() const
 
bool isImm() const
isImm - Tests if this is a MO_Immediate operand.
 
const BlockAddress * getBlockAddress() const
 
unsigned getTargetFlags() const
 
MachineOperandType getType() const
getType - Returns the MachineOperandType for this operand.
 
Register getReg() const
getReg - Returns the register number.
 
MCSymbol * getMCSymbol() const
 
@ MO_Immediate
Immediate operand.
 
@ MO_ConstantPoolIndex
Address of indexed Constant in Constant Pool.
 
@ MO_GlobalAddress
Address of a global value.
 
@ MO_BlockAddress
Address of a basic block.
 
@ MO_MachineBasicBlock
MachineBasicBlock reference.
 
@ MO_Register
Register operand.
 
int64_t getOffset() const
Return the offset from the symbol in this operand.
 
void emitFunctionBodyStart() override
EmitFunctionBodyStart - Targets can override this to emit stuff before the first basic block in the f...
 
void emitDebugValue(const MCExpr *Value, unsigned Size) const override
Emit the directive and value for debug thread local expression.
 
bool PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, const char *ExtraCode, raw_ostream &O) override
Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant.
 
void printSavedRegsBitmask()
 
void emitBasicBlockEnd(const MachineBasicBlock &MBB) override
Targets can override this to emit stuff at the end of a basic block.
 
void LowerPATCHABLE_FUNCTION_ENTER(const MachineInstr &MI)
 
const char * getCurrentABIString() const
Emit Set directives.
 
void printFCCOperand(const MachineInstr *MI, int opNum, raw_ostream &O)
 
void printRegisterList(const MachineInstr *MI, int opNum, raw_ostream &O)
 
void PrintDebugValueComment(const MachineInstr *MI, raw_ostream &OS)
 
bool runOnMachineFunction(MachineFunction &MF) override
Emit the specified function out to the OutStreamer.
 
void emitFunctionBodyEnd() override
EmitFunctionBodyEnd - Targets can override this to emit stuff after the last basic block in the funct...
 
MipsMCInstLower MCInstLowering
 
void printMemOperand(const MachineInstr *MI, int opNum, raw_ostream &O)
 
void LowerPATCHABLE_TAIL_CALL(const MachineInstr &MI)
 
const MipsSubtarget * Subtarget
 
const MipsFunctionInfo * MipsFI
 
void emitEndOfAsmFile(Module &M) override
This virtual method can be overridden by targets that want to emit something at the end of their file...
 
bool PrintAsmMemoryOperand(const MachineInstr *MI, unsigned OpNum, const char *ExtraCode, raw_ostream &O) override
Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant as...
 
void LowerPATCHABLE_FUNCTION_EXIT(const MachineInstr &MI)
 
void emitFrameDirective()
Frame Directive.
 
void emitStartOfAsmFile(Module &M) override
This virtual method can be overridden by targets that want to emit something at the start of their fi...
 
void printMemOperandEA(const MachineInstr *MI, int opNum, raw_ostream &O)
 
void printOperand(const MachineInstr *MI, int opNum, raw_ostream &O)
 
void emitFunctionEntryLabel() override
EmitFunctionEntryLabel - Emit the label that is the entrypoint for the function.
 
void emitInstruction(const MachineInstr *MI) override
Targets should implement this to emit instructions.
 
MipsFunctionInfo - This class is derived from MachineFunction private Mips target-specific informatio...
 
static const char * getRegisterName(MCRegister Reg)
 
MCOperand LowerOperand(const MachineOperand &MO, int64_t offset=0) const
 
bool inMicroMipsMode() const
 
bool useSoftFloat() const
 
const MipsABIInfo & getABI() const
 
bool isLittleEndian() const
 
virtual void emitDirectiveSetAt()
 
virtual void emitDirectiveSetReorder()
 
void forbidModuleDirective()
 
virtual void emitDirectiveSetNoMicroMips()
 
virtual void emitDirectiveNaN2008()
 
virtual void emitDirectiveEnd(StringRef Name)
 
virtual void emitDirectiveSetMacro()
 
virtual void setUsesMicroMips()
 
virtual void emitDirectiveEnt(const MCSymbol &Symbol)
 
virtual void emitDirectiveSetNoMips16()
 
virtual void emitDirectiveSetPush()
 
virtual void setPic(bool Value)
 
virtual void emitDirectiveSetNoAt()
 
void updateABIInfo(const PredicateLibrary &P)
 
virtual void emitDirectiveNaNLegacy()
 
virtual void emitMask(unsigned CPUBitmask, int CPUTopSavedRegOff)
 
virtual void emitDirectiveSetPop()
 
virtual void emitDirectiveSetMicroMips()
 
virtual void emitDirectiveSetNoMacro()
 
virtual void emitDirectiveModuleOddSPReg()
 
virtual void emitDirectiveInsn()
 
virtual void emitFMask(unsigned FPUBitmask, int FPUTopSavedRegOff)
 
virtual void emitDirectiveSetNoReorder()
 
virtual void emitDirectiveOptionPic0()
 
virtual void emitDirectiveSetMips16()
 
virtual void emitDirectiveAbiCalls()
 
virtual void emitDirectiveModuleFP()
 
A Module instance is used to store all the information related to an LLVM module.
 
FunctionListType::iterator iterator
The Function iterators.
 
Wrapper class representing virtual and physical registers.
 
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
 
StringRef - Represent a constant reference to a string, i.e.
 
LLVM_ABI std::string lower() const
 
Primary interface to the complete machine description for the target machine.
 
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
 
virtual Register getFrameRegister(const MachineFunction &MF) const =0
Debug information queries.
 
Target - Wrapper for Target specific information.
 
Triple - Helper class for working with autoconf configuration names.
 
static Twine utohexstr(uint64_t Val)
 
LLVM Value Representation.
 
This class implements an extremely fast bulk output stream that can only output to a stream.
 
A raw_ostream that writes to an SmallVector or SmallString.
 
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
 
constexpr char Align[]
Key for Kernel::Arg::Metadata::mAlign.
 
StringRef selectMipsCPU(const Triple &TT, StringRef CPU)
Select the Mips CPU for the given triple and cpu name.
 
const char * MipsFCCToString(Mips::CondCode CC)
 
This is an optimization pass for GlobalISel generic memory operations.
 
auto drop_begin(T &&RangeOrContainer, size_t N=1)
Return a range covering RangeOrContainer with the first N elements excluded.
 
Target & getTheMips64Target()
 
decltype(auto) dyn_cast(const From &Val)
dyn_cast<X> - Return the argument parameter cast to the specified type.
 
constexpr bool isPowerOf2_64(uint64_t Value)
Return true if the argument is a power of two > 0 (64 bit edition.)
 
unsigned Log2_64(uint64_t Value)
Return the floor log base 2 of the specified value, -1 if the value is zero.
 
@ MCDR_DataRegionEnd
.end_data_region
 
@ MCDR_DataRegion
.data_region
 
static MCRegister getMSARegFromFReg(MCRegister Reg)
 
Target & getTheMips64elTarget()
 
Target & getTheMipselTarget()
 
Target & getTheMipsTarget()
 
@ MCSA_Global
.type _foo, @gnu_unique_object
 
@ MCSA_ELF_TypeFunction
.type _foo, STT_FUNC # aka @function
 
This struct is a compact representation of a valid (non-zero power of two) alignment.
 
RegisterAsmPrinter - Helper template for registering a target specific assembly printer,...