mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 06:30:16 +00:00
Remove the need to cache the subtarget in the Sparc TargetRegisterInfo
classes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232013 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ae02704ac7
commit
013ed4aa69
@ -33,9 +33,8 @@ using namespace llvm;
|
||||
void SparcInstrInfo::anchor() {}
|
||||
|
||||
SparcInstrInfo::SparcInstrInfo(SparcSubtarget &ST)
|
||||
: SparcGenInstrInfo(SP::ADJCALLSTACKDOWN, SP::ADJCALLSTACKUP),
|
||||
RI(ST), Subtarget(ST) {
|
||||
}
|
||||
: SparcGenInstrInfo(SP::ADJCALLSTACKDOWN, SP::ADJCALLSTACKUP), RI(),
|
||||
Subtarget(ST) {}
|
||||
|
||||
/// isLoadFromStackSlot - If the specified machine instruction is a direct
|
||||
/// load from a stack slot, return the virtual or physical register number of
|
||||
|
@ -22,6 +22,8 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class SparcSubtarget;
|
||||
|
||||
/// SPII - This namespace holds all of the target specific flags that
|
||||
/// instruction info tracks.
|
||||
///
|
||||
|
@ -34,9 +34,7 @@ static cl::opt<bool>
|
||||
ReserveAppRegisters("sparc-reserve-app-registers", cl::Hidden, cl::init(false),
|
||||
cl::desc("Reserve application registers (%g2-%g4)"));
|
||||
|
||||
SparcRegisterInfo::SparcRegisterInfo(SparcSubtarget &st)
|
||||
: SparcGenRegisterInfo(SP::O7), Subtarget(st) {
|
||||
}
|
||||
SparcRegisterInfo::SparcRegisterInfo() : SparcGenRegisterInfo(SP::O7) {}
|
||||
|
||||
const MCPhysReg*
|
||||
SparcRegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
|
||||
@ -56,6 +54,7 @@ SparcRegisterInfo::getRTCallPreservedMask(CallingConv::ID CC) const {
|
||||
|
||||
BitVector SparcRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
|
||||
BitVector Reserved(getNumRegs());
|
||||
const SparcSubtarget &Subtarget = MF.getSubtarget<SparcSubtarget>();
|
||||
// FIXME: G1 reserved for now for large imm generation by frame code.
|
||||
Reserved.set(SP::G1);
|
||||
|
||||
@ -90,6 +89,7 @@ BitVector SparcRegisterInfo::getReservedRegs(const MachineFunction &MF) const {
|
||||
const TargetRegisterClass*
|
||||
SparcRegisterInfo::getPointerRegClass(const MachineFunction &MF,
|
||||
unsigned Kind) const {
|
||||
const SparcSubtarget &Subtarget = MF.getSubtarget<SparcSubtarget>();
|
||||
return Subtarget.is64Bit() ? &SP::I64RegsRegClass : &SP::IntRegsRegClass;
|
||||
}
|
||||
|
||||
@ -161,6 +161,7 @@ SparcRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
|
||||
// Addressable stack objects are accessed using neg. offsets from %fp
|
||||
MachineFunction &MF = *MI.getParent()->getParent();
|
||||
const SparcSubtarget &Subtarget = MF.getSubtarget<SparcSubtarget>();
|
||||
int64_t Offset = MF.getFrameInfo()->getObjectOffset(FrameIndex) +
|
||||
MI.getOperand(FIOperandNum + 1).getImm() +
|
||||
Subtarget.getStackPointerBias();
|
||||
@ -175,7 +176,7 @@ SparcRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
|
||||
if (!Subtarget.isV9() || !Subtarget.hasHardQuad()) {
|
||||
if (MI.getOpcode() == SP::STQFri) {
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
const TargetInstrInfo &TII = *Subtarget.getInstrInfo();
|
||||
unsigned SrcReg = MI.getOperand(2).getReg();
|
||||
unsigned SrcEvenReg = getSubReg(SrcReg, SP::sub_even64);
|
||||
unsigned SrcOddReg = getSubReg(SrcReg, SP::sub_odd64);
|
||||
@ -187,7 +188,7 @@ SparcRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
|
||||
MI.getOperand(2).setReg(SrcOddReg);
|
||||
Offset += 8;
|
||||
} else if (MI.getOpcode() == SP::LDQFri) {
|
||||
const TargetInstrInfo &TII = *MF.getSubtarget().getInstrInfo();
|
||||
const TargetInstrInfo &TII = *Subtarget.getInstrInfo();
|
||||
unsigned DestReg = MI.getOperand(0).getReg();
|
||||
unsigned DestEvenReg = getSubReg(DestReg, SP::sub_even64);
|
||||
unsigned DestOddReg = getSubReg(DestReg, SP::sub_odd64);
|
||||
|
@ -21,14 +21,11 @@
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class SparcSubtarget;
|
||||
class TargetInstrInfo;
|
||||
class Type;
|
||||
|
||||
struct SparcRegisterInfo : public SparcGenRegisterInfo {
|
||||
SparcSubtarget &Subtarget;
|
||||
|
||||
SparcRegisterInfo(SparcSubtarget &st);
|
||||
SparcRegisterInfo();
|
||||
|
||||
/// Code Generation virtual methods...
|
||||
const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
|
||||
|
Loading…
x
Reference in New Issue
Block a user