25 cl::desc(
"Always use $gp as the global base register."));
53 void MipsCallEntry::printCustom(
raw_ostream &O)
const {
54 O <<
"MipsCallEntry: ";
79 ? &Mips::CPU16RegsRegClass
81 ? &Mips::GPRMM16RegClass
85 ? &Mips::GPR64RegClass
86 : &Mips::GPR32RegClass;
91 return Mips16SPAliasReg;
96 return Mips16SPAliasReg;
103 for (
int I = 0;
I < 4; ++
I) {
106 ? &Mips::GPR64RegClass
107 : &Mips::GPR32RegClass;
115 return CallsEhReturn && (FI == EhDataRegFI[0] || FI == EhDataRegFI[1]
116 || FI == EhDataRegFI[2] || FI == EhDataRegFI[3]);
120 std::unique_ptr<const MipsCallEntry> &E = ExternalCallEntries[
Name];
123 E = llvm::make_unique<MipsCallEntry>(
Name);
129 std::unique_ptr<const MipsCallEntry> &E = GlobalCallEntries[Val];
132 E = llvm::make_unique<MipsCallEntry>(Val);
138 if (MoveF64ViaSpillFI == -1) {
142 return MoveF64ViaSpillFI;
145 void MipsFunctionInfo::anchor() { }
bool mayAlias(const MachineFrameInfo *) const override
mayAlias - Return true if the memory pointed to by this PseudoSourceValue can ever alias an LLVM IR V...
unsigned createVirtualRegister(const TargetRegisterClass *RegClass)
createVirtualRegister - Create and return a new virtual register in the function with the specified r...
StringRef getName() const
Return a constant reference to the value's name.
unsigned getSize() const
getSize - Return the size of the register in bytes, which is also the size of a stack slot allocated ...
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
bool mips16SPAliasRegSet() const
void createEhDataRegsFI()
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted...
initializer< Ty > init(const Ty &Val)
unsigned getAlignment() const
getAlignment - Return the minimum required alignment for a register of this class.
MipsCallEntry(StringRef N)
bool inMicroMipsMode() const
bool inMips16Mode() const
MachinePointerInfo - This class contains a discriminated union of information about pointers in memor...
bool isEhDataRegFI(int FI) const
unsigned getGlobalBaseReg()
MachineFrameInfo * getFrameInfo()
getFrameInfo - Return the frame info object for the current function.
bool isAliased(const MachineFrameInfo *) const override
isAliased - Test whether the memory pointed to by this PseudoSourceValue may also be pointed to by an...
MachineRegisterInfo & getRegInfo()
getRegInfo - Return information about the registers currently in use.
unsigned getMips16SPAliasReg()
MachinePointerInfo callPtrInfo(StringRef Name)
Create a MachinePointerInfo that has a MipsCallEntr object representing a GOT entry for an external f...
bool isConstant(const MachineFrameInfo *) const override
isConstant - Test whether the memory pointed to by this PseudoSourceValue has a constant value...
int getMoveF64ViaSpillFI(const TargetRegisterClass *RC)
const TargetMachine & getTarget() const
getTarget - Return the target machine this machine code is compiled with
bool globalBaseRegSet() const
int CreateStackObject(uint64_t Size, unsigned Alignment, bool isSS, const AllocaInst *Alloca=nullptr)
Create a new statically sized stack object, returning a nonnegative identifier to represent it...
This class implements an extremely fast bulk output stream that can only output to a stream...
static cl::opt< bool > FixGlobalBaseReg("mips-fix-global-base-reg", cl::Hidden, cl::init(true), cl::desc("Always use $gp as the global base register."))
StringRef - Represent a constant reference to a string, i.e.