mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-28 06:35:49 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211877 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0263debd04
commit
c6bf2379c1
@ -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…
x
Reference in New Issue
Block a user