28 #define DEBUG_TYPE "msp430-reg-info"
30 #define GET_REGINFO_TARGET_DESC
31 #include "MSP430GenRegisterInfo.inc"
41 static const MCPhysReg CalleeSavedRegs[] = {
43 MSP430::R8, MSP430::R9, MSP430::R10,
46 static const MCPhysReg CalleeSavedRegsFP[] = {
48 MSP430::R8, MSP430::R9, MSP430::R10,
51 static const MCPhysReg CalleeSavedRegsIntr[] = {
53 MSP430::R8, MSP430::R9, MSP430::R10, MSP430::R11,
54 MSP430::R12, MSP430::R13, MSP430::R14, MSP430::R15,
57 static const MCPhysReg CalleeSavedRegsIntrFP[] = {
59 MSP430::R8, MSP430::R9, MSP430::R10, MSP430::R11,
60 MSP430::R12, MSP430::R13, MSP430::R14, MSP430::R15,
66 CalleeSavedRegsIntrFP : CalleeSavedRegsFP);
69 CalleeSavedRegsIntr : CalleeSavedRegs);
99 return &MSP430::GR16RegClass;
104 int SPAdj,
unsigned FIOperandNum,
106 assert(SPAdj == 0 &&
"Unexpected");
113 int FrameIndex =
MI.getOperand(FIOperandNum).getIndex();
127 Offset +=
MI.getOperand(FIOperandNum + 1).getImm();
129 if (
MI.getOpcode() == MSP430::ADDframe) {
135 MI.setDesc(
TII.get(MSP430::MOV16rr));
136 MI.getOperand(FIOperandNum).ChangeToRegister(BasePtr,
false);
144 BuildMI(
MBB, std::next(II), dl,
TII.get(MSP430::SUB16ri), DstReg)
147 BuildMI(
MBB, std::next(II), dl,
TII.get(MSP430::ADD16ri), DstReg)
153 MI.getOperand(FIOperandNum).ChangeToRegister(BasePtr,
false);
154 MI.getOperand(FIOperandNum + 1).ChangeToImmediate(
Offset);