HexagonRegisterInfo.h [plain text]
#ifndef HexagonREGISTERINFO_H
#define HexagonREGISTERINFO_H
#include "llvm/Target/TargetRegisterInfo.h"
#define GET_REGINFO_HEADER
#include "HexagonGenRegisterInfo.inc"
#include "llvm/MC/MachineLocation.h"
#define HEXAGON_RESERVED_REG_1 Hexagon::R10
#define HEXAGON_RESERVED_REG_2 Hexagon::R11
namespace llvm {
class HexagonSubtarget;
class HexagonInstrInfo;
class Type;
struct HexagonRegisterInfo : public HexagonGenRegisterInfo {
HexagonSubtarget &Subtarget;
const HexagonInstrInfo &TII;
HexagonRegisterInfo(HexagonSubtarget &st, const HexagonInstrInfo &tii);
const uint16_t *getCalleeSavedRegs(const MachineFunction *MF = 0) const;
const TargetRegisterClass* const* getCalleeSavedRegClasses(
const MachineFunction *MF = 0) const;
BitVector getReservedRegs(const MachineFunction &MF) const;
void eliminateCallFramePseudoInstr(MachineFunction &MF,
MachineBasicBlock &MBB,
MachineBasicBlock::iterator I) const;
void eliminateFrameIndex(MachineBasicBlock::iterator II,
int SPAdj, RegScavenger *RS = NULL) const;
void determineFrameLayout(MachineFunction &MF) const;
bool requiresRegisterScavenging(const MachineFunction &MF) const {
return true;
}
unsigned getRARegister() const;
unsigned getFrameRegister(const MachineFunction &MF) const;
unsigned getFrameRegister() const;
void getInitialFrameState(std::vector<MachineMove> &Moves) const;
unsigned getStackRegister() const;
unsigned getEHExceptionRegister() const;
unsigned getEHHandlerRegister() const;
};
}
#endif