PPCRegisterInfo.h revision f1d78e83356a412e525c30ac90dabf090a8cfc99
1//===- PPCRegisterInfo.h - PowerPC Register Information Impl -----*- C++ -*-==// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file was developed by the LLVM research group and is distributed under 6// the University of Illinois Open Source License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file contains the PowerPC implementation of the MRegisterInfo class. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef POWERPC32_REGISTERINFO_H 15#define POWERPC32_REGISTERINFO_H 16 17#include "PPC.h" 18#include "PPCGenRegisterInfo.h.inc" 19#include <map> 20 21namespace llvm { 22 23class Type; 24 25class PPCRegisterInfo : public PPCGenRegisterInfo { 26 std::map<unsigned, unsigned> ImmToIdxMap; 27public: 28 PPCRegisterInfo(); 29 30 /// Code Generation virtual methods... 31 void storeRegToStackSlot(MachineBasicBlock &MBB, 32 MachineBasicBlock::iterator MBBI, 33 unsigned SrcReg, int FrameIndex, 34 const TargetRegisterClass *RC) const; 35 36 void loadRegFromStackSlot(MachineBasicBlock &MBB, 37 MachineBasicBlock::iterator MBBI, 38 unsigned DestReg, int FrameIndex, 39 const TargetRegisterClass *RC) const; 40 41 void copyRegToReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, 42 unsigned DestReg, unsigned SrcReg, 43 const TargetRegisterClass *RC) const; 44 45 /// foldMemoryOperand - PowerPC (like most RISC's) can only fold spills into 46 /// copy instructions, turning them into load/store instructions. 47 virtual MachineInstr* foldMemoryOperand(MachineInstr* MI, unsigned OpNum, 48 int FrameIndex) const; 49 50 void eliminateCallFramePseudoInstr(MachineFunction &MF, 51 MachineBasicBlock &MBB, 52 MachineBasicBlock::iterator I) const; 53 54 void eliminateFrameIndex(MachineBasicBlock::iterator II) const; 55 56 void emitPrologue(MachineFunction &MF) const; 57 void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 58 59 void getLocation(MachineFunction &MF, unsigned Index, 60 MachineLocation &ML) const; 61}; 62 63} // end namespace llvm 64 65#endif 66