1//===- Thumb2RegisterInfo.h - Thumb-2 Register Information Impl -*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This file contains the Thumb-2 implementation of the TargetRegisterInfo
11// class.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef THUMB2REGISTERINFO_H
16#define THUMB2REGISTERINFO_H
17
18#include "ARM.h"
19#include "ARMRegisterInfo.h"
20#include "llvm/Target/TargetRegisterInfo.h"
21
22namespace llvm {
23  class ARMSubtarget;
24  class ARMBaseInstrInfo;
25  class Type;
26
27struct Thumb2RegisterInfo : public ARMBaseRegisterInfo {
28public:
29  Thumb2RegisterInfo(const ARMBaseInstrInfo &tii, const ARMSubtarget &STI);
30
31  /// emitLoadConstPool - Emits a load from constpool to materialize the
32  /// specified immediate.
33  void emitLoadConstPool(MachineBasicBlock &MBB,
34                         MachineBasicBlock::iterator &MBBI,
35                         DebugLoc dl,
36                         unsigned DestReg, unsigned SubIdx, int Val,
37                         ARMCC::CondCodes Pred = ARMCC::AL,
38                         unsigned PredReg = 0,
39                         unsigned MIFlags = MachineInstr::NoFlags) const;
40};
41}
42
43#endif // THUMB2REGISTERINFO_H
44