forked from OSchip/llvm-project
Sparc: Use Register
This commit is contained in:
parent
08649f0a9d
commit
f7b2997ad6
|
@ -59,7 +59,7 @@ static bool CC_Sparc_Assign_Split_64(unsigned &ValNo, MVT &ValVT,
|
|||
SP::I0, SP::I1, SP::I2, SP::I3, SP::I4, SP::I5
|
||||
};
|
||||
// Try to get first reg.
|
||||
if (unsigned Reg = State.AllocateReg(RegList)) {
|
||||
if (Register Reg = State.AllocateReg(RegList)) {
|
||||
State.addLoc(CCValAssign::getCustomReg(ValNo, ValVT, Reg, LocVT, LocInfo));
|
||||
} else {
|
||||
// Assign whole thing in stack.
|
||||
|
@ -69,7 +69,7 @@ static bool CC_Sparc_Assign_Split_64(unsigned &ValNo, MVT &ValVT,
|
|||
}
|
||||
|
||||
// Try to get second reg.
|
||||
if (unsigned Reg = State.AllocateReg(RegList))
|
||||
if (Register Reg = State.AllocateReg(RegList))
|
||||
State.addLoc(CCValAssign::getCustomReg(ValNo, ValVT, Reg, LocVT, LocInfo));
|
||||
else
|
||||
State.addLoc(CCValAssign::getCustomMem(
|
||||
|
@ -86,13 +86,13 @@ static bool CC_Sparc_Assign_Ret_Split_64(unsigned &ValNo, MVT &ValVT,
|
|||
};
|
||||
|
||||
// Try to get first reg.
|
||||
if (unsigned Reg = State.AllocateReg(RegList))
|
||||
if (Register Reg = State.AllocateReg(RegList))
|
||||
State.addLoc(CCValAssign::getCustomReg(ValNo, ValVT, Reg, LocVT, LocInfo));
|
||||
else
|
||||
return false;
|
||||
|
||||
// Try to get second reg.
|
||||
if (unsigned Reg = State.AllocateReg(RegList))
|
||||
if (Register Reg = State.AllocateReg(RegList))
|
||||
State.addLoc(CCValAssign::getCustomReg(ValNo, ValVT, Reg, LocVT, LocInfo));
|
||||
else
|
||||
return false;
|
||||
|
@ -264,7 +264,7 @@ SparcTargetLowering::LowerReturn_32(SDValue Chain, CallingConv::ID CallConv,
|
|||
// If the function returns a struct, copy the SRetReturnReg to I0
|
||||
if (MF.getFunction().hasStructRetAttr()) {
|
||||
SparcMachineFunctionInfo *SFI = MF.getInfo<SparcMachineFunctionInfo>();
|
||||
unsigned Reg = SFI->getSRetReturnReg();
|
||||
Register Reg = SFI->getSRetReturnReg();
|
||||
if (!Reg)
|
||||
llvm_unreachable("sret virtual register not created in the entry block");
|
||||
auto PtrVT = getPointerTy(DAG.getDataLayout());
|
||||
|
@ -429,7 +429,7 @@ SDValue SparcTargetLowering::LowerFormalArguments_32(
|
|||
SDValue FIPtr = DAG.getFrameIndex(FrameIdx, MVT::i32);
|
||||
LoVal = DAG.getLoad(MVT::i32, dl, Chain, FIPtr, MachinePointerInfo());
|
||||
} else {
|
||||
unsigned loReg = MF.addLiveIn(NextVA.getLocReg(),
|
||||
Register loReg = MF.addLiveIn(NextVA.getLocReg(),
|
||||
&SP::IntRegsRegClass);
|
||||
LoVal = DAG.getCopyFromReg(Chain, dl, loReg, MVT::i32);
|
||||
}
|
||||
|
@ -520,7 +520,7 @@ SDValue SparcTargetLowering::LowerFormalArguments_32(
|
|||
if (MF.getFunction().hasStructRetAttr()) {
|
||||
// Copy the SRet Argument to SRetReturnReg.
|
||||
SparcMachineFunctionInfo *SFI = MF.getInfo<SparcMachineFunctionInfo>();
|
||||
unsigned Reg = SFI->getSRetReturnReg();
|
||||
Register Reg = SFI->getSRetReturnReg();
|
||||
if (!Reg) {
|
||||
Reg = MF.getRegInfo().createVirtualRegister(&SP::IntRegsRegClass);
|
||||
SFI->setSRetReturnReg(Reg);
|
||||
|
@ -595,7 +595,7 @@ SDValue SparcTargetLowering::LowerFormalArguments_64(
|
|||
// All integer register arguments are promoted by the caller to i64.
|
||||
|
||||
// Create a virtual register for the promoted live-in value.
|
||||
unsigned VReg = MF.addLiveIn(VA.getLocReg(),
|
||||
Register VReg = MF.addLiveIn(VA.getLocReg(),
|
||||
getRegClassFor(VA.getLocVT()));
|
||||
SDValue Arg = DAG.getCopyFromReg(Chain, DL, VReg, VA.getLocVT());
|
||||
|
||||
|
@ -666,7 +666,7 @@ SDValue SparcTargetLowering::LowerFormalArguments_64(
|
|||
// of how many arguments were actually passed.
|
||||
SmallVector<SDValue, 8> OutChains;
|
||||
for (; ArgOffset < 6*8; ArgOffset += 8) {
|
||||
unsigned VReg = MF.addLiveIn(SP::I0 + ArgOffset/8, &SP::I64RegsRegClass);
|
||||
Register VReg = MF.addLiveIn(SP::I0 + ArgOffset/8, &SP::I64RegsRegClass);
|
||||
SDValue VArg = DAG.getCopyFromReg(Chain, DL, VReg, MVT::i64);
|
||||
int FI = MF.getFrameInfo().CreateFixedObject(8, ArgOffset + ArgArea, true);
|
||||
auto PtrVT = getPointerTy(MF.getDataLayout());
|
||||
|
@ -929,7 +929,7 @@ SparcTargetLowering::LowerCall_32(TargetLowering::CallLoweringInfo &CLI,
|
|||
// stuck together.
|
||||
SDValue InFlag;
|
||||
for (unsigned i = 0, e = RegsToPass.size(); i != e; ++i) {
|
||||
unsigned Reg = toCallerWindow(RegsToPass[i].first);
|
||||
Register Reg = toCallerWindow(RegsToPass[i].first);
|
||||
Chain = DAG.getCopyToReg(Chain, dl, Reg, RegsToPass[i].second, InFlag);
|
||||
InFlag = Chain.getValue(1);
|
||||
}
|
||||
|
@ -1016,7 +1016,7 @@ SparcTargetLowering::LowerCall_32(TargetLowering::CallLoweringInfo &CLI,
|
|||
// this table could be generated automatically from RegInfo.
|
||||
Register SparcTargetLowering::getRegisterByName(const char* RegName, LLT VT,
|
||||
const MachineFunction &MF) const {
|
||||
Register Reg = StringSwitch<unsigned>(RegName)
|
||||
Register Reg = StringSwitch<Register>(RegName)
|
||||
.Case("i0", SP::I0).Case("i1", SP::I1).Case("i2", SP::I2).Case("i3", SP::I3)
|
||||
.Case("i4", SP::I4).Case("i5", SP::I5).Case("i6", SP::I6).Case("i7", SP::I7)
|
||||
.Case("o0", SP::O0).Case("o1", SP::O1).Case("o2", SP::O2).Case("o3", SP::O3)
|
||||
|
@ -1058,7 +1058,7 @@ static void fixupVariableFloatArgs(SmallVectorImpl<CCValAssign> &ArgLocs,
|
|||
CCValAssign NewVA;
|
||||
|
||||
// Determine the offset into the argument array.
|
||||
unsigned firstReg = (ValTy == MVT::f64) ? SP::D0 : SP::Q0;
|
||||
Register firstReg = (ValTy == MVT::f64) ? SP::D0 : SP::Q0;
|
||||
unsigned argSize = (ValTy == MVT::f64) ? 8 : 16;
|
||||
unsigned Offset = argSize * (VA.getLocReg() - firstReg);
|
||||
assert(Offset < 16*8 && "Offset out of range, bad register enum?");
|
||||
|
@ -1125,7 +1125,7 @@ SparcTargetLowering::LowerCall_64(TargetLowering::CallLoweringInfo &CLI,
|
|||
// Collect the set of registers to pass to the function and their values.
|
||||
// This will be emitted as a sequence of CopyToReg nodes glued to the call
|
||||
// instruction.
|
||||
SmallVector<std::pair<unsigned, SDValue>, 8> RegsToPass;
|
||||
SmallVector<std::pair<Register, SDValue>, 8> RegsToPass;
|
||||
|
||||
// Collect chains from all the memory opeations that copy arguments to the
|
||||
// stack. They must follow the stack pointer adjustment above and precede the
|
||||
|
|
|
@ -468,11 +468,10 @@ loadRegFromStackSlot(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
|
|||
llvm_unreachable("Can't load this register from stack slot");
|
||||
}
|
||||
|
||||
unsigned SparcInstrInfo::getGlobalBaseReg(MachineFunction *MF) const
|
||||
{
|
||||
Register SparcInstrInfo::getGlobalBaseReg(MachineFunction *MF) const {
|
||||
SparcMachineFunctionInfo *SparcFI = MF->getInfo<SparcMachineFunctionInfo>();
|
||||
unsigned GlobalBaseReg = SparcFI->getGlobalBaseReg();
|
||||
if (GlobalBaseReg != 0)
|
||||
Register GlobalBaseReg = SparcFI->getGlobalBaseReg();
|
||||
if (GlobalBaseReg)
|
||||
return GlobalBaseReg;
|
||||
|
||||
// Insert the set of GlobalBaseReg into the first MBB of the function
|
||||
|
|
|
@ -96,7 +96,7 @@ public:
|
|||
const TargetRegisterClass *RC,
|
||||
const TargetRegisterInfo *TRI) const override;
|
||||
|
||||
unsigned getGlobalBaseReg(MachineFunction *MF) const;
|
||||
Register getGlobalBaseReg(MachineFunction *MF) const;
|
||||
|
||||
// Lower pseudo instructions after register allocation.
|
||||
bool expandPostRAPseudo(MachineInstr &MI) const override;
|
||||
|
|
|
@ -19,14 +19,14 @@ namespace llvm {
|
|||
class SparcMachineFunctionInfo : public MachineFunctionInfo {
|
||||
virtual void anchor();
|
||||
private:
|
||||
unsigned GlobalBaseReg;
|
||||
Register GlobalBaseReg;
|
||||
|
||||
/// VarArgsFrameOffset - Frame offset to start of varargs area.
|
||||
int VarArgsFrameOffset;
|
||||
|
||||
/// SRetReturnReg - Holds the virtual register into which the sret
|
||||
/// argument is passed.
|
||||
unsigned SRetReturnReg;
|
||||
Register SRetReturnReg;
|
||||
|
||||
/// IsLeafProc - True if the function is a leaf procedure.
|
||||
bool IsLeafProc;
|
||||
|
@ -38,14 +38,14 @@ namespace llvm {
|
|||
: GlobalBaseReg(0), VarArgsFrameOffset(0), SRetReturnReg(0),
|
||||
IsLeafProc(false) {}
|
||||
|
||||
unsigned getGlobalBaseReg() const { return GlobalBaseReg; }
|
||||
void setGlobalBaseReg(unsigned Reg) { GlobalBaseReg = Reg; }
|
||||
Register getGlobalBaseReg() const { return GlobalBaseReg; }
|
||||
void setGlobalBaseReg(Register Reg) { GlobalBaseReg = Reg; }
|
||||
|
||||
int getVarArgsFrameOffset() const { return VarArgsFrameOffset; }
|
||||
void setVarArgsFrameOffset(int Offset) { VarArgsFrameOffset = Offset; }
|
||||
|
||||
unsigned getSRetReturnReg() const { return SRetReturnReg; }
|
||||
void setSRetReturnReg(unsigned Reg) { SRetReturnReg = Reg; }
|
||||
Register getSRetReturnReg() const { return SRetReturnReg; }
|
||||
void setSRetReturnReg(Register Reg) { SRetReturnReg = Reg; }
|
||||
|
||||
void setLeafProc(bool rhs) { IsLeafProc = rhs; }
|
||||
bool isLeafProc() const { return IsLeafProc; }
|
||||
|
|
Loading…
Reference in New Issue