1234353Sdim//===-- SparcRegisterInfo.h - Sparc Register Information Impl ---*- C++ -*-===//
2193323Sed//
3193323Sed//                     The LLVM Compiler Infrastructure
4193323Sed//
5193323Sed// This file is distributed under the University of Illinois Open Source
6193323Sed// License. See LICENSE.TXT for details.
7193323Sed//
8193323Sed//===----------------------------------------------------------------------===//
9193323Sed//
10193323Sed// This file contains the Sparc implementation of the TargetRegisterInfo class.
11193323Sed//
12193323Sed//===----------------------------------------------------------------------===//
13193323Sed
14193323Sed#ifndef SPARCREGISTERINFO_H
15193323Sed#define SPARCREGISTERINFO_H
16193323Sed
17193323Sed#include "llvm/Target/TargetRegisterInfo.h"
18193323Sed
19224145Sdim#define GET_REGINFO_HEADER
20224145Sdim#include "SparcGenRegisterInfo.inc"
21224145Sdim
22193323Sednamespace llvm {
23193323Sed
24193323Sedclass SparcSubtarget;
25193323Sedclass TargetInstrInfo;
26193323Sedclass Type;
27193323Sed
28193323Sedstruct SparcRegisterInfo : public SparcGenRegisterInfo {
29193323Sed  SparcSubtarget &Subtarget;
30193323Sed  const TargetInstrInfo &TII;
31218893Sdim
32193323Sed  SparcRegisterInfo(SparcSubtarget &st, const TargetInstrInfo &tii);
33193323Sed
34218893Sdim  /// Code Generation virtual methods...
35234353Sdim  const uint16_t *getCalleeSavedRegs(const MachineFunction *MF = 0) const;
36193323Sed
37193323Sed  BitVector getReservedRegs(const MachineFunction &MF) const;
38193323Sed
39249423Sdim  const TargetRegisterClass *getPointerRegClass(const MachineFunction &MF,
40249423Sdim                                                unsigned Kind) const;
41193323Sed
42212904Sdim  void eliminateFrameIndex(MachineBasicBlock::iterator II,
43249423Sdim                           int SPAdj, unsigned FIOperandNum,
44249423Sdim                           RegScavenger *RS = NULL) const;
45193323Sed
46249423Sdim  void processFunctionBeforeFrameFinalized(MachineFunction &MF,
47249423Sdim                                       RegScavenger *RS = NULL) const;
48193323Sed
49193323Sed  // Debug information queries.
50199481Srdivacky  unsigned getFrameRegister(const MachineFunction &MF) const;
51193323Sed
52193323Sed  // Exception handling queries.
53193323Sed  unsigned getEHExceptionRegister() const;
54193323Sed  unsigned getEHHandlerRegister() const;
55193323Sed};
56193323Sed
57193323Sed} // end namespace llvm
58193323Sed
59193323Sed#endif
60