MSP430RegisterInfo.cpp revision 2dd6cdc9204eaca42923509d227ef67974784aae
1f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===- MSP430RegisterInfo.cpp - MSP430 Register Information ---------------===//
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 TargetRegisterInfo class.
11f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//
12f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov//===----------------------------------------------------------------------===//
13f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
14f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#define DEBUG_TYPE "msp430-reg-info"
15f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
16f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "MSP430.h"
17f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "MSP430RegisterInfo.h"
182dd6cdc9204eaca42923509d227ef67974784aaeAnton Korobeynikov#include "llvm/CodeGen/MachineFunction.h"
192dd6cdc9204eaca42923509d227ef67974784aaeAnton Korobeynikov#include "llvm/Target/TargetMachine.h"
20f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "llvm/ADT/BitVector.h"
21f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
22f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovusing namespace llvm;
23f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
24f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov// FIXME: Provide proper call frame setup / destroy opcodes.
25f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton KorobeynikovMSP430RegisterInfo::MSP430RegisterInfo(const TargetInstrInfo &tii)
26f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  : MSP430GenRegisterInfo(MSP430::NOP, MSP430::NOP),
27f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov    TII(tii) {}
28f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
29f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovconst unsigned*
30f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton KorobeynikovMSP430RegisterInfo::getCalleeSavedRegs(const MachineFunction *MF) const {
31f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
32f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
33f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
34f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovconst TargetRegisterClass* const*
35f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton KorobeynikovMSP430RegisterInfo::getCalleeSavedRegClasses(const MachineFunction *MF) const {
36f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
37f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
38f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
39f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton KorobeynikovBitVector
40f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton KorobeynikovMSP430RegisterInfo::getReservedRegs(const MachineFunction &MF) const {
41f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
42f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
43f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
44f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovbool MSP430RegisterInfo::hasFP(const MachineFunction &MF) const {
45f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
46f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
47f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
48f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovvoid
49f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton KorobeynikovMSP430RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
50f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov                                        int SPAdj, RegScavenger *RS) const {
51f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
52f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
53f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
54f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovvoid MSP430RegisterInfo::emitPrologue(MachineFunction &MF) const {
55f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
56f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
57f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
58f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovvoid MSP430RegisterInfo::emitEpilogue(MachineFunction &MF,
59f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov                                      MachineBasicBlock &MBB) const {
60f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
61f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
62f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
63f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovunsigned MSP430RegisterInfo::getRARegister() const {
64f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
65f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
66f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
67f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovunsigned MSP430RegisterInfo::getFrameRegister(MachineFunction &MF) const {
68f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
69f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
70f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
71f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikovint MSP430RegisterInfo::getDwarfRegNum(unsigned RegNum, bool isEH) const {
72f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov  assert(0 && "Not implemented yet!");
73f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov}
74f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov
75f2c3e179ecc2a6ebc259382828a5e5dc5a61d2f8Anton Korobeynikov#include "MSP430GenRegisterInfo.inc"
76