SystemZRegisterInfo.h [plain text]
#ifndef SystemZREGISTERINFO_H
#define SystemZREGISTERINFO_H
#include "SystemZ.h"
#include "llvm/Target/TargetRegisterInfo.h"
#define GET_REGINFO_HEADER
#include "SystemZGenRegisterInfo.inc"
namespace llvm {
namespace SystemZ {
inline unsigned even128(bool Is32bit) {
return Is32bit ? subreg_hl32 : subreg_h64;
}
inline unsigned odd128(bool Is32bit) {
return Is32bit ? subreg_l32 : subreg_l64;
}
}
class SystemZSubtarget;
class SystemZInstrInfo;
struct SystemZRegisterInfo : public SystemZGenRegisterInfo {
private:
SystemZTargetMachine &TM;
public:
SystemZRegisterInfo(SystemZTargetMachine &tm);
virtual bool requiresRegisterScavenging(const MachineFunction &MF) const
LLVM_OVERRIDE {
return true;
}
virtual bool requiresFrameIndexScavenging(const MachineFunction &MF) const
LLVM_OVERRIDE {
return true;
}
virtual bool trackLivenessAfterRegAlloc(const MachineFunction &MF) const
LLVM_OVERRIDE {
return true;
}
virtual const uint16_t *getCalleeSavedRegs(const MachineFunction *MF = 0)
const LLVM_OVERRIDE;
virtual BitVector getReservedRegs(const MachineFunction &MF)
const LLVM_OVERRIDE;
virtual void eliminateFrameIndex(MachineBasicBlock::iterator MI,
int SPAdj, unsigned FIOperandNum,
RegScavenger *RS) const LLVM_OVERRIDE;
virtual unsigned getFrameRegister(const MachineFunction &MF) const
LLVM_OVERRIDE;
};
}
#endif