131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//===-- MSP430RegisterInfo.h - MSP430 Register Information Impl -*- C++ -*-===// 2f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 3f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// The LLVM Compiler Infrastructure 4f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 5f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// This file is distributed under the University of Illinois Open Source 6f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// License. See LICENSE.TXT for details. 7f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 8f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===// 9f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 10f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// This file contains the MSP430 implementation of the MRegisterInfo class. 11f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// 12f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===// 13f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 14f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#ifndef LLVM_TARGET_MSP430REGISTERINFO_H 15f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#define LLVM_TARGET_MSP430REGISTERINFO_H 16f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 17f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "llvm/Target/TargetRegisterInfo.h" 1873f50d9bc3bd46cc0abeba9bb0d46977ba1aea42Evan Cheng 1973f50d9bc3bd46cc0abeba9bb0d46977ba1aea42Evan Cheng#define GET_REGINFO_HEADER 2073f50d9bc3bd46cc0abeba9bb0d46977ba1aea42Evan Cheng#include "MSP430GenRegisterInfo.inc" 21f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 22f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovnamespace llvm { 23f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 24f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovclass TargetInstrInfo; 25b561264d2b2e33e1e6322a99d600b5daece5bbdeAnton Korobeynikovclass MSP430TargetMachine; 26f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 27f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovstruct MSP430RegisterInfo : public MSP430GenRegisterInfo { 28f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovprivate: 29b561264d2b2e33e1e6322a99d600b5daece5bbdeAnton Korobeynikov MSP430TargetMachine &TM; 30b561264d2b2e33e1e6322a99d600b5daece5bbdeAnton Korobeynikov 31b561264d2b2e33e1e6322a99d600b5daece5bbdeAnton Korobeynikov /// StackAlign - Default stack alignment. 32b561264d2b2e33e1e6322a99d600b5daece5bbdeAnton Korobeynikov /// 33b561264d2b2e33e1e6322a99d600b5daece5bbdeAnton Korobeynikov unsigned StackAlign; 34f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovpublic: 35ed8b5b55a4416286758c5567c2602d2c7d0be585Bill Wendling MSP430RegisterInfo(MSP430TargetMachine &tm); 36f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 37f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov /// Code Generation virtual methods... 38015f228861ef9b337366f92f637d4e8d624bb006Craig Topper const uint16_t *getCalleeSavedRegs(const MachineFunction *MF = 0) const; 39f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 40f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov BitVector getReservedRegs(const MachineFunction &MF) const; 41397fc4874efe9c17e737d4c5c50bd19dc3bf27f5Jakob Stoklund Olesen const TargetRegisterClass* 42397fc4874efe9c17e737d4c5c50bd19dc3bf27f5Jakob Stoklund Olesen getPointerRegClass(const MachineFunction &MF, unsigned Kind = 0) const; 43f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 44fcb4a8ead3cd8d9540d5eaa448af5d14a0ee341aJim Grosbach void eliminateFrameIndex(MachineBasicBlock::iterator II, 45108fb3202af6f500073cdbb7be32c25d7a273a2eChad Rosier int SPAdj, unsigned FIOperandNum, 46108fb3202af6f500073cdbb7be32c25d7a273a2eChad Rosier RegScavenger *RS = NULL) const; 47f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 48f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov // Debug information queries. 49b9c2fd964ee7dd7823ac71db8443055e4d0f1c15David Greene unsigned getFrameRegister(const MachineFunction &MF) const; 50f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}; 51f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 52f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov} // end namespace llvm 53f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 54f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#endif // LLVM_TARGET_MSP430REGISTERINFO_H 55