MSP430RegisterInfo.cpp revision 3a4fbcfd330de43011550079f811d92f741a08a1
1//===- MSP430RegisterInfo.cpp - MSP430 Register Information ---------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file contains the MSP430 implementation of the TargetRegisterInfo class. 11// 12//===----------------------------------------------------------------------===// 13 14#define DEBUG_TYPE "msp430-reg-info" 15 16#include "MSP430.h" 17#include "MSP430RegisterInfo.h" 18#include "llvm/CodeGen/MachineFrameInfo.h" 19#include "llvm/CodeGen/MachineFunction.h" 20#include "llvm/Target/TargetMachine.h" 21#include "llvm/Target/TargetOptions.h" 22#include "llvm/ADT/BitVector.h" 23 24using namespace llvm; 25 26// FIXME: Provide proper call frame setup / destroy opcodes. 27MSP430RegisterInfo::MSP430RegisterInfo(const TargetInstrInfo &tii) 28 : MSP430GenRegisterInfo(MSP430::NOP, MSP430::NOP), 29 TII(tii) {} 30 31const unsigned* 32MSP430RegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const { 33 assert(0 && "Not implemented yet!"); 34} 35 36const TargetRegisterClass* const* 37MSP430RegisterInfo::getCalleeSavedRegClasses(const MachineFunction *MF) const { 38 assert(0 && "Not implemented yet!"); 39} 40 41BitVector 42MSP430RegisterInfo::getReservedRegs(const MachineFunction &MF) const { 43 BitVector Reserved(getNumRegs()); 44 45 // Mark 4 special registers as reserved. 46 Reserved.set(MSP430::PC); 47 Reserved.set(MSP430::SP); 48 Reserved.set(MSP430::SR); 49 Reserved.set(MSP430::CG); 50 51 // Mark frame pointer as reserved if needed. 52 if (hasFP(MF)) 53 Reserved.set(MSP430::FP); 54 55 return Reserved; 56} 57 58bool MSP430RegisterInfo::hasFP(const MachineFunction &MF) const { 59 return NoFramePointerElim || MF.getFrameInfo()->hasVarSizedObjects(); 60} 61 62void 63MSP430RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II, 64 int SPAdj, RegScavenger *RS) const { 65 assert(0 && "Not implemented yet!"); 66} 67 68void MSP430RegisterInfo::emitPrologue(MachineFunction &MF) const { 69 assert(0 && "Not implemented yet!"); 70} 71 72void MSP430RegisterInfo::emitEpilogue(MachineFunction &MF, 73 MachineBasicBlock &MBB) const { 74 assert(0 && "Not implemented yet!"); 75} 76 77unsigned MSP430RegisterInfo::getRARegister() const { 78 assert(0 && "Not implemented yet!"); 79} 80 81unsigned MSP430RegisterInfo::getFrameRegister(MachineFunction &MF) const { 82 assert(0 && "Not implemented yet!"); 83} 84 85int MSP430RegisterInfo::getDwarfRegNum(unsigned RegNum, bool isEH) const { 86 assert(0 && "Not implemented yet!"); 87} 88 89#include "MSP430GenRegisterInfo.inc" 90