LLVM: lib/Target/Mips/MCTargetDesc/MipsABIInfo.cpp Source File (original) (raw)
1
2
3
4
5
6
7
8
14
15using namespace llvm;
16
17
18
21 cl::desc("MIPS: Emit R_{MICRO}MIPS_JALR relocation with jalr"),
23
24namespace {
25static const MCPhysReg O32IntRegs[4] = {Mips::A0, Mips::A1, Mips::A2, Mips::A3};
26
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};
30}
31
39
42 if (isGP64bit)
43 return ArrayRef(Mips64IntRegs);
44 else
46 }
48 return ArrayRef(Mips64IntRegs);
50}
51
59
67 if (TT.isABIN32())
69 assert(ABIName.empty() && "Unknown ABI option for MIPS");
70
71 if (TT.isMIPS64())
74}
75
79
83
87
91
95
99
103
105 return ArePtrs64bit() ? Mips::DADDiu : Mips::ADDiu;
106}
107
111
115
119
121 static const unsigned EhDataReg[] = {
122 Mips::A0, Mips::A1, Mips::A2, Mips::A3
123 };
124 static const unsigned EhDataReg64[] = {
125 Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64
126 };
127
128 return IsN64() ? EhDataReg64[I] : EhDataReg[I];
129}
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
Definition MipsABIInfo.cpp:88
unsigned GetEhDataReg(unsigned I) const
Definition MipsABIInfo.cpp:120
bool ArePtrs64bit() const
unsigned GetGPRMoveOp() const
Definition MipsABIInfo.cpp:116
unsigned GetStackPtr() const
Definition MipsABIInfo.cpp:76
unsigned GetZeroReg() const
Definition MipsABIInfo.cpp:96
unsigned GetCalleeAllocdArgSizeInBytes(CallingConv::ID CC) const
Obtain the size of the area allocated by the callee for arguments.
Definition MipsABIInfo.cpp:52
unsigned GetPtrAddiuOp() const
Definition MipsABIInfo.cpp:104
unsigned GetPtrAndOp() const
Definition MipsABIInfo.cpp:112
unsigned GetFramePtr() const
Definition MipsABIInfo.cpp:80
static MipsABIInfo computeTargetABI(const Triple &TT, StringRef ABIName)
Definition MipsABIInfo.cpp:60
ArrayRef< MCPhysReg > GetByValArgRegs() const
The registers to use for byval arguments.
Definition MipsABIInfo.cpp:32
unsigned GetNullPtr() const
Definition MipsABIInfo.cpp:92
ArrayRef< MCPhysReg > getVarArgRegs(bool isGP64bit) const
The registers to use for the variable argument list.
Definition MipsABIInfo.cpp:40
unsigned GetPtrAdduOp() const
Definition MipsABIInfo.cpp:100
unsigned GetBasePtr() const
Definition MipsABIInfo.cpp:84
unsigned GetPtrSubuOp() const
Definition MipsABIInfo.cpp:108
StringRef - Represent a constant reference to a string, i.e.
bool starts_with(StringRef Prefix) const
Check if this string starts with the given Prefix.
constexpr bool empty() const
empty - Check if the string is empty.
Triple - Helper class for working with autoconf configuration names.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
@ 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.
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
ArrayRef(const T &OneElt) -> ArrayRef< T >