21 cl::desc(
"MIPS: Emit R_{MICRO}MIPS_JALR relocation with jalr"),
25static const MCPhysReg O32IntRegs[4] = {Mips::A0, Mips::A1, Mips::A2, Mips::A3};
27static const MCPhysReg Mips64IntRegs[8] = {
28 Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64,
29 Mips::T0_64, Mips::T1_64, Mips::T2_64, Mips::T3_64};
62 if (
Options.getABIName().starts_with(
"o32"))
64 if (
Options.getABIName().starts_with(
"n32"))
66 if (
Options.getABIName().starts_with(
"n64"))
70 assert(
Options.getABIName().empty() &&
"Unknown ABI option for MIPS");
122 static const unsigned EhDataReg[] = {
123 Mips::A0, Mips::A1, Mips::A2, Mips::A3
125 static const unsigned EhDataReg64[] = {
126 Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64
129 return IsN64() ? EhDataReg64[
I] : EhDataReg[
I];
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
cl::opt< bool > EmitJalrReloc("mips-jalr-reloc", cl::Hidden, cl::desc("MIPS: Emit R_{MICRO}MIPS_JALR relocation with jalr"), cl::init(true))
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
bool AreGprs64bit() const
unsigned GetGlobalPtr() const
unsigned GetEhDataReg(unsigned I) const
bool ArePtrs64bit() const
unsigned GetGPRMoveOp() const
unsigned GetStackPtr() const
unsigned GetZeroReg() const
unsigned GetCalleeAllocdArgSizeInBytes(CallingConv::ID CC) const
Obtain the size of the area allocated by the callee for arguments.
unsigned GetPtrAddiuOp() const
unsigned GetPtrAndOp() const
unsigned GetFramePtr() const
static MipsABIInfo computeTargetABI(const Triple &TT, StringRef CPU, const MCTargetOptions &Options)
ArrayRef< MCPhysReg > GetByValArgRegs() const
The registers to use for byval arguments.
unsigned GetNullPtr() const
ArrayRef< MCPhysReg > getVarArgRegs(bool isGP64bit) const
The registers to use for the variable argument list.
unsigned GetPtrAdduOp() const
unsigned GetBasePtr() const
unsigned GetPtrSubuOp() const
StringRef - Represent a constant reference to a string, i.e.
Triple - Helper class for working with autoconf configuration names.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
@ Fast
Attempts to make calls as fast as possible (e.g.
initializer< Ty > init(const Ty &Val)
This is an optimization pass for GlobalISel generic memory operations.