1894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//===- Thumb2RegisterInfo.h - Thumb-2 Register Information Impl -*- C++ -*-===// 2894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// 3894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// The LLVM Compiler Infrastructure 4894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// 5894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// This file is distributed under the University of Illinois Open Source 6894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// License. See LICENSE.TXT for details. 7894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// 8894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//===----------------------------------------------------------------------===// 9894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// 10894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// This file contains the Thumb-2 implementation of the TargetRegisterInfo 11894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// class. 12894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman// 13894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman//===----------------------------------------------------------------------===// 14894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman 15894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman#ifndef THUMB2REGISTERINFO_H 16894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman#define THUMB2REGISTERINFO_H 17894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman 18894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman#include "ARM.h" 19894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman#include "ARMRegisterInfo.h" 20894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman#include "llvm/Target/TargetRegisterInfo.h" 21894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman 22894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Baumannamespace llvm { 23894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman class ARMSubtarget; 24894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman class ARMBaseInstrInfo; 25894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman class Type; 26894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman 27894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Baumanstruct Thumb2RegisterInfo : public ARMBaseRegisterInfo { 28894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Baumanpublic: 29894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman Thumb2RegisterInfo(const ARMBaseInstrInfo &tii, const ARMSubtarget &STI); 30894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman 31894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman /// emitLoadConstPool - Emits a load from constpool to materialize the 32894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman /// specified immediate. 33894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman void emitLoadConstPool(MachineBasicBlock &MBB, 34894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman MachineBasicBlock::iterator &MBBI, 35894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman DebugLoc dl, 36894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman unsigned DestReg, unsigned SubIdx, int Val, 37894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman ARMCC::CondCodes Pred = ARMCC::AL, 3819bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman unsigned PredReg = 0, 3919bac1e08be200c31efd26f0f5fd144c9b3eefd3John Bauman unsigned MIFlags = MachineInstr::NoFlags) const; 40894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman}; 41894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman} 42894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman 43894018228b0e0bdbd7aa7e8f47d4a9458789ca82John Bauman#endif // THUMB2REGISTERINFO_H 44