forked from OSchip/llvm-project
Remove target machine caching from SystemZInstrInfo and
SystemZRegisterInfo and replace it with the subtarget as that's all they needed in the first place. Update all uses and calls accordingly. llvm-svn: 211877
This commit is contained in:
parent
80effa415c
commit
673b3afacd
|
@ -40,9 +40,9 @@ static bool isHighReg(unsigned int Reg) {
|
|||
// Pin the vtable to this file.
|
||||
void SystemZInstrInfo::anchor() {}
|
||||
|
||||
SystemZInstrInfo::SystemZInstrInfo(SystemZTargetMachine &tm)
|
||||
SystemZInstrInfo::SystemZInstrInfo(SystemZSubtarget &sti)
|
||||
: SystemZGenInstrInfo(SystemZ::ADJCALLSTACKDOWN, SystemZ::ADJCALLSTACKUP),
|
||||
RI(tm), TM(tm) {
|
||||
RI(), STI(sti) {
|
||||
}
|
||||
|
||||
// MI is a 128-bit load or store. Split it into two 64-bit loads or stores,
|
||||
|
@ -488,7 +488,7 @@ SystemZInstrInfo::optimizeCompareInstr(MachineInstr *Compare,
|
|||
bool IsLogical = (Compare->getDesc().TSFlags & SystemZII::IsLogical) != 0;
|
||||
if (Value == 0 &&
|
||||
!IsLogical &&
|
||||
removeIPMBasedCompare(Compare, SrcReg, MRI, TM.getRegisterInfo()))
|
||||
removeIPMBasedCompare(Compare, SrcReg, MRI, &RI))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -505,7 +505,7 @@ static unsigned getConditionalMove(unsigned Opcode) {
|
|||
|
||||
bool SystemZInstrInfo::isPredicable(MachineInstr *MI) const {
|
||||
unsigned Opcode = MI->getOpcode();
|
||||
if (TM.getSubtargetImpl()->hasLoadStoreOnCond() &&
|
||||
if (STI.hasLoadStoreOnCond() &&
|
||||
getConditionalMove(Opcode))
|
||||
return true;
|
||||
return false;
|
||||
|
@ -537,7 +537,7 @@ PredicateInstruction(MachineInstr *MI,
|
|||
unsigned CCMask = Pred[1].getImm();
|
||||
assert(CCMask > 0 && CCMask < 15 && "Invalid predicate");
|
||||
unsigned Opcode = MI->getOpcode();
|
||||
if (TM.getSubtargetImpl()->hasLoadStoreOnCond()) {
|
||||
if (STI.hasLoadStoreOnCond()) {
|
||||
if (unsigned CondOpcode = getConditionalMove(Opcode)) {
|
||||
MI->setDesc(get(CondOpcode));
|
||||
MachineInstrBuilder(*MI->getParent()->getParent(), MI)
|
||||
|
@ -685,7 +685,7 @@ SystemZInstrInfo::convertToThreeAddress(MachineFunction::iterator &MFI,
|
|||
// We prefer to keep the two-operand form where possible both
|
||||
// because it tends to be shorter and because some instructions
|
||||
// have memory forms that can be used during spilling.
|
||||
if (TM.getSubtargetImpl()->hasDistinctOps()) {
|
||||
if (STI.hasDistinctOps()) {
|
||||
MachineOperand &Dest = MI->getOperand(0);
|
||||
MachineOperand &Src = MI->getOperand(1);
|
||||
unsigned DestReg = Dest.getReg();
|
||||
|
|
|
@ -110,9 +110,10 @@ struct Branch {
|
|||
};
|
||||
} // end namespace SystemZII
|
||||
|
||||
class SystemZSubtarget;
|
||||
class SystemZInstrInfo : public SystemZGenInstrInfo {
|
||||
const SystemZRegisterInfo RI;
|
||||
SystemZTargetMachine &TM;
|
||||
SystemZSubtarget &STI;
|
||||
|
||||
void splitMove(MachineBasicBlock::iterator MI, unsigned NewOpcode) const;
|
||||
void splitAdjDynAlloc(MachineBasicBlock::iterator MI) const;
|
||||
|
@ -130,7 +131,7 @@ class SystemZInstrInfo : public SystemZGenInstrInfo {
|
|||
virtual void anchor();
|
||||
|
||||
public:
|
||||
explicit SystemZInstrInfo(SystemZTargetMachine &TM);
|
||||
explicit SystemZInstrInfo(SystemZSubtarget &STI);
|
||||
|
||||
// Override TargetInstrInfo.
|
||||
unsigned isLoadFromStackSlot(const MachineInstr *MI,
|
||||
|
|
|
@ -7,18 +7,20 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "SystemZInstrInfo.h"
|
||||
#include "SystemZRegisterInfo.h"
|
||||
#include "SystemZTargetMachine.h"
|
||||
#include "SystemZSubtarget.h"
|
||||
#include "llvm/CodeGen/MachineInstrBuilder.h"
|
||||
#include "llvm/CodeGen/MachineRegisterInfo.h"
|
||||
#include "llvm/Target/TargetFrameLowering.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
#define GET_REGINFO_TARGET_DESC
|
||||
#include "SystemZGenRegisterInfo.inc"
|
||||
|
||||
SystemZRegisterInfo::SystemZRegisterInfo(SystemZTargetMachine &tm)
|
||||
: SystemZGenRegisterInfo(SystemZ::R14D), TM(tm) {}
|
||||
SystemZRegisterInfo::SystemZRegisterInfo()
|
||||
: SystemZGenRegisterInfo(SystemZ::R14D) {}
|
||||
|
||||
const MCPhysReg*
|
||||
SystemZRegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
|
||||
|
@ -63,7 +65,8 @@ SystemZRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator MI,
|
|||
|
||||
MachineBasicBlock &MBB = *MI->getParent();
|
||||
MachineFunction &MF = *MBB.getParent();
|
||||
auto *TII = static_cast<const SystemZInstrInfo*>(TM.getInstrInfo());
|
||||
auto *TII =
|
||||
static_cast<const SystemZInstrInfo *>(MF.getTarget().getInstrInfo());
|
||||
const TargetFrameLowering *TFI = MF.getTarget().getFrameLowering();
|
||||
DebugLoc DL = MI->getDebugLoc();
|
||||
|
||||
|
|
|
@ -29,15 +29,9 @@ inline unsigned odd128(bool Is32bit) {
|
|||
}
|
||||
} // end namespace SystemZ
|
||||
|
||||
class SystemZSubtarget;
|
||||
class SystemZInstrInfo;
|
||||
|
||||
struct SystemZRegisterInfo : public SystemZGenRegisterInfo {
|
||||
private:
|
||||
SystemZTargetMachine &TM;
|
||||
|
||||
public:
|
||||
SystemZRegisterInfo(SystemZTargetMachine &tm);
|
||||
SystemZRegisterInfo();
|
||||
|
||||
// Override TargetRegisterInfo.h.
|
||||
bool requiresRegisterScavenging(const MachineFunction &MF) const override {
|
||||
|
|
|
@ -31,7 +31,7 @@ SystemZTargetMachine::SystemZTargetMachine(const Target &T, StringRef TT,
|
|||
// so that we can refer to it using LARL. We don't have any special
|
||||
// requirements for stack variables though.
|
||||
DL("E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64"),
|
||||
InstrInfo(*this), TLInfo(*this), TSInfo(DL),
|
||||
InstrInfo(Subtarget), TLInfo(*this), TSInfo(DL),
|
||||
FrameLowering(*this, Subtarget) {
|
||||
initAsmInfo();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue