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 Korobeynikovstruct MSP430RegisterInfo : public MSP430GenRegisterInfo { 25f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovpublic: 26cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines MSP430RegisterInfo(); 27f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 28f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov /// Code Generation virtual methods... 29dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const MCPhysReg * 30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines getCalleeSavedRegs(const MachineFunction *MF = nullptr) const override; 31f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines BitVector getReservedRegs(const MachineFunction &MF) const override; 33397fc4874efe9c17e737d4c5c50bd19dc3bf27f5Jakob Stoklund Olesen const TargetRegisterClass* 34dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines getPointerRegClass(const MachineFunction &MF, 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines unsigned Kind = 0) const override; 36f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 37fcb4a8ead3cd8d9540d5eaa448af5d14a0ee341aJim Grosbach void eliminateFrameIndex(MachineBasicBlock::iterator II, 38108fb3202af6f500073cdbb7be32c25d7a273a2eChad Rosier int SPAdj, unsigned FIOperandNum, 39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines RegScavenger *RS = nullptr) const override; 40f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 41f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov // Debug information queries. 42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines unsigned getFrameRegister(const MachineFunction &MF) const override; 43f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}; 44f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 45f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov} // end namespace llvm 46f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov 47f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#endif // LLVM_TARGET_MSP430REGISTERINFO_H 48