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