Added functions to compute which register, if any, to use
for a particular argument in a list of arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2315 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/SparcV9/SparcV9Internals.h b/lib/Target/SparcV9/SparcV9Internals.h
index 52118f9..12c86b8 100644
--- a/lib/Target/SparcV9/SparcV9Internals.h
+++ b/lib/Target/SparcV9/SparcV9Internals.h
@@ -284,11 +284,16 @@
PhyRegAlloc &PRA) const;
- // To find whether a particular call is to a var arg method
- //
- bool isVarArgCall(const MachineInstr *CallMI) const;
+ // Compute which register can be used for an argument, if any
+ //
+ int regNumForIntArg(bool inCallee, bool isVarArgsCall,
+ unsigned argNo, unsigned intArgNo, unsigned fpArgNo,
+ unsigned& regClassId) const;
-
+ int regNumForFPArg(unsigned RegType, bool inCallee, bool isVarArgsCall,
+ unsigned argNo, unsigned intArgNo, unsigned fpArgNo,
+ unsigned& regClassId) const;
+
public:
UltraSparcRegInfo(const UltraSparc &tgt);
@@ -429,7 +434,7 @@
//
MachineInstr * cpReg2RegMI(unsigned SrcReg, unsigned DestReg,
int RegType) const;
-
+
MachineInstr * cpReg2MemMI(unsigned SrcReg, unsigned DestPtrReg,
int Offset, int RegType) const;
@@ -506,32 +511,32 @@
// MachineCodeInfoForMethod object for the given method.
//
int getFirstIncomingArgOffset (MachineCodeForMethod& mcInfo,
- bool& pos) const
+ bool& growUp) const
{
- pos = true; // arguments area grows upwards
+ growUp = true; // arguments area grows upwards
return FirstIncomingArgOffsetFromFP;
}
int getFirstOutgoingArgOffset (MachineCodeForMethod& mcInfo,
- bool& pos) const
+ bool& growUp) const
{
- pos = true; // arguments area grows upwards
+ growUp = true; // arguments area grows upwards
return FirstOutgoingArgOffsetFromSP;
}
int getFirstOptionalOutgoingArgOffset(MachineCodeForMethod& mcInfo,
- bool& pos)const
+ bool& growUp)const
{
- pos = true; // arguments area grows upwards
+ growUp = true; // arguments area grows upwards
return FirstOptionalOutgoingArgOffsetFromSP;
}
int getFirstAutomaticVarOffset (MachineCodeForMethod& mcInfo,
- bool& pos) const;
+ bool& growUp) const;
int getRegSpillAreaOffset (MachineCodeForMethod& mcInfo,
- bool& pos) const;
+ bool& growUp) const;
int getTmpAreaOffset (MachineCodeForMethod& mcInfo,
- bool& pos) const;
+ bool& growUp) const;
int getDynamicAreaOffset (MachineCodeForMethod& mcInfo,
- bool& pos) const;
+ bool& growUp) const;
//
// These methods specify the base register used for each stack area