131c24bf5b39cc8391d4cfdbf8cf5163975fdb81eJim Grosbach//===- Thumb2RegisterInfo.h - Thumb-2 Register Information Impl -*- C++ -*-===//
2a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov//
3a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov//                     The LLVM Compiler Infrastructure
4a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov//
5a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov// This file is distributed under the University of Illinois Open Source
6a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov// License. See LICENSE.TXT for details.
7a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov//
8a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov//===----------------------------------------------------------------------===//
9a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov//
1031c24bf5b39cc8391d4cfdbf8cf5163975fdb81eJim Grosbach// This file contains the Thumb-2 implementation of the TargetRegisterInfo
1131c24bf5b39cc8391d4cfdbf8cf5163975fdb81eJim Grosbach// class.
12a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov//
13a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov//===----------------------------------------------------------------------===//
14a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov
15b50ea5c48f8b1ce259e034ca5c16dc14af1a582cDavid Goodwin#ifndef THUMB2REGISTERINFO_H
16b50ea5c48f8b1ce259e034ca5c16dc14af1a582cDavid Goodwin#define THUMB2REGISTERINFO_H
17a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov
18c1f6f42049696e7357fb4837e1b25dabbaed3fe6Craig Topper#include "ARMBaseRegisterInfo.h"
19a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov
20a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikovnamespace llvm {
2157148c166ab232191098492633c924fad9c44ef3Bill Wendling
2257148c166ab232191098492633c924fad9c44ef3Bill Wendlingclass ARMSubtarget;
23a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov
24b50ea5c48f8b1ce259e034ca5c16dc14af1a582cDavid Goodwinstruct Thumb2RegisterInfo : public ARMBaseRegisterInfo {
25a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikovpublic:
2657148c166ab232191098492633c924fad9c44ef3Bill Wendling  Thumb2RegisterInfo(const ARMSubtarget &STI);
27a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov
28a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov  /// emitLoadConstPool - Emits a load from constpool to materialize the
29a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov  /// specified immediate.
3036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  void
3136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  emitLoadConstPool(MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI,
3236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                    DebugLoc dl, unsigned DestReg, unsigned SubIdx, int Val,
3336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                    ARMCC::CondCodes Pred = ARMCC::AL, unsigned PredReg = 0,
3436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines                    unsigned MIFlags = MachineInstr::NoFlags) const override;
35a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov};
36a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov}
37a98cbc554ca2cd40426e7c3ff8d1467da32e195dAnton Korobeynikov
38b50ea5c48f8b1ce259e034ca5c16dc14af1a582cDavid Goodwin#endif // THUMB2REGISTERINFO_H
39