SparcRegisterInfo.h revision fcb25e60f514e4dbceecef73ac229c61d6202ed2
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===-- SparcRegisterInfo.h - Sparc Register Information Impl ---*- C++ -*-===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file contains the Sparc implementation of the TargetRegisterInfo class. 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef SPARCREGISTERINFO_H 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define SPARCREGISTERINFO_H 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "llvm/Target/TargetRegisterInfo.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GET_REGINFO_HEADER 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "SparcGenRegisterInfo.inc" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace llvm { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SparcSubtarget; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TargetInstrInfo; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Type; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SparcRegisterInfo : public SparcGenRegisterInfo { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SparcSubtarget &Subtarget; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const TargetInstrInfo &TII; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SparcRegisterInfo(SparcSubtarget &st, const TargetInstrInfo &tii); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /// Code Generation virtual methods... 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const uint16_t *getCalleeSavedRegs(const MachineFunction *MF = 0) const; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BitVector getReservedRegs(const MachineFunction &MF) const; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const TargetRegisterClass *getPointerRegClass(const MachineFunction &MF, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned Kind) const; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void eliminateFrameIndex(MachineBasicBlock::iterator II, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int SPAdj, unsigned FIOperandNum, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegScavenger *RS = NULL) const; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void processFunctionBeforeFrameFinalized(MachineFunction &MF, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegScavenger *RS = NULL) const; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Debug information queries. 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned getFrameRegister(const MachineFunction &MF) const; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Exception handling queries. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned getEHExceptionRegister() const; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) unsigned getEHHandlerRegister() const; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // end namespace llvm 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)