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