diff options
author | Vikram S. Adve <vadve@cs.uiuc.edu> | 2002-04-25 04:40:24 +0000 |
---|---|---|
committer | Vikram S. Adve <vadve@cs.uiuc.edu> | 2002-04-25 04:40:24 +0000 |
commit | 6d78311fd24f6dc6f1312ea495a9795bf3c4ae1a (patch) | |
tree | 5a096f05b0d344cb22b0057995b4e4a50c124a25 | |
parent | dbc4fad5773460fb5c44ac1f8c783b8e172d2f60 (diff) |
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
-rw-r--r-- | lib/Target/SparcV9/SparcV9Internals.h | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/lib/Target/SparcV9/SparcV9Internals.h b/lib/Target/SparcV9/SparcV9Internals.h index 52118f9761..12c86b8b8d 100644 --- a/lib/Target/SparcV9/SparcV9Internals.h +++ b/lib/Target/SparcV9/SparcV9Internals.h @@ -284,11 +284,16 @@ class UltraSparcRegInfo : public MachineRegInfo { 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 @@ public: // MachineInstr * cpReg2RegMI(unsigned SrcReg, unsigned DestReg, int RegType) const; - + MachineInstr * cpReg2MemMI(unsigned SrcReg, unsigned DestPtrReg, int Offset, int RegType) const; @@ -506,32 +511,32 @@ public: // 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 |