LLVM API Documentation
#include <SparcV9RegInfo.h>
Collaboration diagram for llvm::SparcV9RegInfo:

Public Types | |
| IntRegType | |
| FPSingleRegType | |
| FPDoubleRegType | |
| IntCCRegType | |
| FloatCCRegType | |
| SpecialRegType | |
| IntRegClassID | |
| FloatRegClassID | |
| IntCCRegClassID | |
| FloatCCRegClassID | |
| SpecialRegClassID | |
| enum | RegTypes { IntRegType, FPSingleRegType, FPDoubleRegType, IntCCRegType, FloatCCRegType, SpecialRegType } |
| enum | RegClassIDs { IntRegClassID, FloatRegClassID, IntCCRegClassID, FloatCCRegClassID, SpecialRegClassID } |
Public Member Functions | |
| unsigned | getRegClassIDOfType (const Type *type, bool isCCReg=false) const |
| unsigned | getRegClassIDOfRegType (int regType) const |
| unsigned | getRegClassIDOfReg (int unifiedRegNum) const |
| unsigned int | getNumOfRegClasses () const |
| const TargetRegClassInfo * | getMachineRegClass (unsigned i) const |
| unsigned | getZeroRegNum () const |
| void | suggestRegs4MethodArgs (const Function *Func, LiveRangeInfo &LRI) const |
| void | suggestRegs4CallArgs (MachineInstr *CallI, LiveRangeInfo &LRI) const |
| void | suggestReg4RetValue (MachineInstr *RetI, LiveRangeInfo &LRI) const |
| void | colorMethodArgs (const Function *Func, LiveRangeInfo &LRI, std::vector< MachineInstr * > &InstrnsBefore, std::vector< MachineInstr * > &InstrnsAfter) const |
| bool | isRegVolatile (int RegClassID, int Reg) const |
| bool | modifiedByCall (int RegClassID, int Reg) const |
| unsigned | getCallAddressReg () const |
| int | getUnifiedRegNum (unsigned regClassID, int reg) const |
| int | getClassRegNum (int uRegNum, unsigned ®ClassID) const |
| const char *const | getUnifiedRegName (int UnifiedRegNum) const |
| int | getSpilledRegSize (int RegType) const |
| SparcV9RegInfo (const SparcV9TargetMachine &tgt) | |
| ~SparcV9RegInfo () | |
| unsigned | getReturnAddressReg () const |
| unsigned const | getNumOfIntArgRegs () const |
| unsigned const | getNumOfFloatArgRegs () const |
| int | regNumForIntArg (bool inCallee, bool isVarArgsCall, unsigned argNo, unsigned ®ClassId) const |
| int | regNumForFPArg (unsigned RegType, bool inCallee, bool isVarArgsCall, unsigned argNo, unsigned ®ClassId) const |
| void | printReg (const V9LiveRange *LR) const |
| const Value * | getCallInstRetVal (const MachineInstr *CallMI) const |
| const Value * | getCallInstIndirectAddrVal (const MachineInstr *CallMI) const |
| bool | regTypeNeedsScratchReg (int RegType, int &scratchRegClassId) const |
| void | cpReg2RegMI (std::vector< MachineInstr * > &mvec, unsigned SrcReg, unsigned DestReg, int RegType) const |
| void | cpReg2MemMI (std::vector< MachineInstr * > &mvec, unsigned SrcReg, unsigned DestPtrReg, int Offset, int RegType, int scratchReg=-1) const |
| void | cpMem2RegMI (std::vector< MachineInstr * > &mvec, unsigned SrcPtrReg, int Offset, unsigned DestReg, int RegType, int scratchReg=-1) const |
| void | cpValue2Value (Value *Src, Value *Dest, std::vector< MachineInstr * > &mvec) const |
| int | getRegTypeForDataType (const Type *type) const |
| int | getRegTypeForLR (const V9LiveRange *LR) const |
| int | getRegType (int unifiedRegNum) const |
| unsigned | getFramePointer () const |
| unsigned | getStackPointer () const |
Static Public Member Functions | |
| static int | getInvalidRegNum () |
Public Attributes | |
| const TargetMachine & | target |
Protected Attributes | |
| std::vector< const TargetRegClassInfo * > | MachineRegClassArr |
Definition at line 106 of file SparcV9RegInfo.h.
Definition at line 289 of file SparcV9RegInfo.h.
Definition at line 274 of file SparcV9RegInfo.h.
| llvm::SparcV9RegInfo::SparcV9RegInfo | ( | const SparcV9TargetMachine & | tgt | ) |
Definition at line 39 of file SparcV9RegInfo.cpp.
References FloatCCRegClassID, FloatRegClassID, IntCCRegClassID, IntRegClassID, MachineRegClassArr, SpecialRegClassID, and llvm::SparcV9FloatRegClass::StartOfNonVolatileRegs.
| llvm::SparcV9RegInfo::~SparcV9RegInfo | ( | ) | [inline] |
| void llvm::SparcV9RegInfo::colorMethodArgs | ( | const Function * | Func, | |
| LiveRangeInfo & | LRI, | |||
| std::vector< MachineInstr * > & | InstrnsBefore, | |||
| std::vector< MachineInstr * > & | InstrnsAfter | |||
| ) | const |
Definition at line 401 of file SparcV9RegInfo.cpp.
References llvm::Function::arg_begin(), llvm::Function::arg_end(), llvm::BadRegClass, cpMem2RegMI(), cpReg2MemMI(), cpReg2RegMI(), E, FloatRegClassID, FPSingleRegType, llvm::MachineFunction::get(), llvm::TargetMachine::getFrameInfo(), getFramePointer(), llvm::TargetFrameInfo::getIncomingArgOffset(), llvm::MachineFunction::getInfo(), getInvalidRegNum(), llvm::LiveRangeInfo::getLiveRangeForValue(), getRegTypeForLR(), getSpilledRegSize(), llvm::TargetMachine::getTargetData(), llvm::GlobalValue::getType(), llvm::TargetData::getTypeSize(), getUnifiedRegNum(), I, IntRegClassID, IntRegType, llvm::isVarArgsFunction(), regNumForFPArg(), regNumForIntArg(), llvm::SparcV9FrameInfo::SizeOfEachArgOnStack, and target.
| void llvm::SparcV9RegInfo::cpMem2RegMI | ( | std::vector< MachineInstr * > & | mvec, | |
| unsigned | PtrReg, | |||
| int | Offset, | |||
| unsigned | DestReg, | |||
| int | RegType, | |||
| int | scratchReg = -1 | |||
| ) | const |
cpMem2RegMI - Generate SparcV9 MachineInstrs to load a register (DestReg) from memory, at [PtrReg + Offset]. Register numbers must be the unified register numbers. RegType must be the SparcV9 register type of DestReg. When DestReg is ccr, scratchReg must be the number of a free integer register. The newly-generated MachineInstrs are appended to mvec.
Definition at line 836 of file SparcV9RegInfo.cpp.
References llvm::MachineInstrBuilder::addMReg(), llvm::MachineInstrBuilder::addSImm(), llvm::MachineInstrBuilder::addZImm(), llvm::BuildMI(), llvm::SparcV9::ccr, llvm::TargetInstrInfo::constantFitsInImmedField(), llvm::MachineOperand::Def, FloatCCRegType, FPDoubleRegType, FPSingleRegType, llvm::SparcV9::fsr, llvm::SparcV9::g0, llvm::SparcV9::g4, llvm::TargetMachine::getInstrInfo(), llvm::MachineInstr::getOperand(), getRegType(), IntCCRegType, IntRegType, llvm::MachineOperand::markHi32(), llvm::MachineOperand::markLo32(), MI, SpecialRegType, and target.
Referenced by colorMethodArgs().
| void llvm::SparcV9RegInfo::cpReg2MemMI | ( | std::vector< MachineInstr * > & | mvec, | |
| unsigned | SrcReg, | |||
| unsigned | PtrReg, | |||
| int | Offset, | |||
| int | RegType, | |||
| int | scratchReg = -1 | |||
| ) | const |
cpReg2MemMI - Generate SparcV9 MachineInstrs to store a register (SrcReg) to memory, at [PtrReg + Offset]. Register numbers must be the unified register numbers. RegType must be the SparcV9 register type of SrcReg. When SrcReg is ccr, scratchReg must be the number of a free integer register. The newly-generated MachineInstrs are appended to mvec.
Definition at line 754 of file SparcV9RegInfo.cpp.
References llvm::MachineInstrBuilder::addMReg(), llvm::MachineInstrBuilder::addSImm(), llvm::MachineInstrBuilder::addZImm(), llvm::BuildMI(), llvm::SparcV9::ccr, llvm::TargetInstrInfo::constantFitsInImmedField(), llvm::MachineOperand::Def, FloatCCRegType, FPDoubleRegType, FPSingleRegType, llvm::SparcV9::fsr, llvm::SparcV9::g4, llvm::TargetMachine::getInstrInfo(), llvm::MachineInstr::getOperand(), getRegType(), IntCCRegType, IntRegType, llvm::MachineOperand::markHi32(), llvm::MachineOperand::markLo32(), MI, SpecialRegType, and target.
Referenced by colorMethodArgs().
| void llvm::SparcV9RegInfo::cpReg2RegMI | ( | std::vector< MachineInstr * > & | mvec, | |
| unsigned | SrcReg, | |||
| unsigned | DestReg, | |||
| int | RegType | |||
| ) | const |
Definition at line 687 of file SparcV9RegInfo.cpp.
References llvm::MachineInstrBuilder::addMReg(), llvm::BuildMI(), llvm::SparcV9IntCCRegClass::ccr, llvm::MachineOperand::Def, FloatCCRegType, FPDoubleRegType, FPSingleRegType, llvm::SparcV9IntRegClass::g0, getInvalidRegNum(), getRegType(), getUnifiedRegNum(), getZeroRegNum(), IntCCRegClassID, IntCCRegType, IntRegType, and MI.
Referenced by colorMethodArgs().
| void llvm::SparcV9RegInfo::cpValue2Value | ( | Value * | Src, | |
| Value * | Dest, | |||
| std::vector< MachineInstr * > & | mvec | |||
| ) | const |
Definition at line 922 of file SparcV9RegInfo.cpp.
References llvm::MachineInstrBuilder::addMReg(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstrBuilder::addRegDef(), llvm::BuildMI(), Dest, FPDoubleRegType, FPSingleRegType, getRegTypeForDataType(), getZeroRegNum(), IntRegType, MI, and Src.
| unsigned llvm::SparcV9RegInfo::getCallAddressReg | ( | ) | const |
Definition at line 64 of file SparcV9RegInfo.cpp.
References getUnifiedRegNum(), IntRegClassID, and llvm::SparcV9IntRegClass::o7.
| const Value* llvm::SparcV9RegInfo::getCallInstIndirectAddrVal | ( | const MachineInstr * | CallMI | ) | const |
| const Value* llvm::SparcV9RegInfo::getCallInstRetVal | ( | const MachineInstr * | CallMI | ) | const |
| int llvm::SparcV9RegInfo::getClassRegNum | ( | int | uRegNum, | |
| unsigned & | regClassID | |||
| ) | const [inline] |
Definition at line 210 of file SparcV9RegInfo.h.
References getInvalidRegNum(), getNumOfRegClasses(), and MachineRegClassArr.
Referenced by llvm::LiveRangeInfo::constructLiveRanges(), getRegClassIDOfReg(), getUnifiedRegName(), and llvm::markRegisterUsed().
| unsigned llvm::SparcV9RegInfo::getFramePointer | ( | ) | const |
Definition at line 138 of file SparcV9RegInfo.cpp.
References getUnifiedRegNum(), llvm::SparcV9IntRegClass::i6, and IntRegClassID.
Referenced by colorMethodArgs().
| static int llvm::SparcV9RegInfo::getInvalidRegNum | ( | ) | [inline, static] |
Definition at line 120 of file SparcV9RegInfo.h.
Referenced by colorMethodArgs(), cpReg2RegMI(), getClassRegNum(), getUnifiedRegNum(), regNumForFPArg(), regNumForIntArg(), suggestRegs4CallArgs(), and suggestRegs4MethodArgs().
| const TargetRegClassInfo* llvm::SparcV9RegInfo::getMachineRegClass | ( | unsigned | i | ) | const [inline] |
Definition at line 148 of file SparcV9RegInfo.h.
References MachineRegClassArr.
Referenced by llvm::PhyRegAlloc::runOnFunction().
| unsigned const llvm::SparcV9RegInfo::getNumOfFloatArgRegs | ( | ) | const [inline] |
Definition at line 314 of file SparcV9RegInfo.h.
| unsigned const llvm::SparcV9RegInfo::getNumOfIntArgRegs | ( | ) | const [inline] |
Definition at line 313 of file SparcV9RegInfo.h.
| unsigned int llvm::SparcV9RegInfo::getNumOfRegClasses | ( | ) | const [inline] |
Definition at line 144 of file SparcV9RegInfo.h.
References MachineRegClassArr.
Referenced by getClassRegNum(), getUnifiedRegName(), and getUnifiedRegNum().
| unsigned llvm::SparcV9RegInfo::getRegClassIDOfReg | ( | int | unifiedRegNum | ) | const [inline] |
| unsigned llvm::SparcV9RegInfo::getRegClassIDOfRegType | ( | int | regType | ) | const |
Definition at line 297 of file SparcV9RegInfo.cpp.
References FloatCCRegClassID, FloatCCRegType, FloatRegClassID, FPDoubleRegType, FPSingleRegType, IntCCRegClassID, IntCCRegType, IntRegClassID, IntRegType, SpecialRegClassID, and SpecialRegType.
| unsigned llvm::SparcV9RegInfo::getRegClassIDOfType | ( | const Type * | type, | |
| bool | isCCReg = false | |||
| ) | const |
Definition at line 274 of file SparcV9RegInfo.cpp.
References llvm::Type::DoubleTyID, FloatRegClassID, llvm::Type::FunctionTyID, llvm::Type::getTypeID(), IntRegClassID, llvm::Type::LabelTyID, llvm::Type::LongTyID, and llvm::Type::PointerTyID.
Referenced by getRegTypeForDataType().
| int llvm::SparcV9RegInfo::getRegType | ( | int | unifiedRegNum | ) | const |
Definition at line 252 of file SparcV9RegInfo.cpp.
References FloatCCRegType, FPDoubleRegType, FPSingleRegType, IntCCRegType, IntRegType, and SpecialRegType.
Referenced by cpMem2RegMI(), cpReg2MemMI(), and cpReg2RegMI().
| int llvm::SparcV9RegInfo::getRegTypeForDataType | ( | const Type * | type | ) | const |
Definition at line 242 of file SparcV9RegInfo.cpp.
References getRegClassIDOfType().
Referenced by cpValue2Value().
| int llvm::SparcV9RegInfo::getRegTypeForLR | ( | const V9LiveRange * | LR | ) | const |
Definition at line 247 of file SparcV9RegInfo.cpp.
References llvm::V9LiveRange::getRegClassID(), and llvm::V9LiveRange::getType().
Referenced by llvm::LiveRangeInfo::coalesceLRs(), colorMethodArgs(), suggestRegs4CallArgs(), and suggestRegs4MethodArgs().
| unsigned llvm::SparcV9RegInfo::getReturnAddressReg | ( | ) | const |
Definition at line 73 of file SparcV9RegInfo.cpp.
References getUnifiedRegNum(), llvm::SparcV9IntRegClass::i7, and IntRegClassID.
| int llvm::SparcV9RegInfo::getSpilledRegSize | ( | int | RegType | ) | const [inline] |
| unsigned llvm::SparcV9RegInfo::getStackPointer | ( | ) | const |
Definition at line 144 of file SparcV9RegInfo.cpp.
References getUnifiedRegNum(), IntRegClassID, and llvm::SparcV9IntRegClass::o6.
| const char* const llvm::SparcV9RegInfo::getUnifiedRegName | ( | int | UnifiedRegNum | ) | const [inline] |
Definition at line 230 of file SparcV9RegInfo.h.
References getClassRegNum(), getNumOfRegClasses(), and MachineRegClassArr.
Referenced by printReg().
| int llvm::SparcV9RegInfo::getUnifiedRegNum | ( | unsigned | regClassID, | |
| int | reg | |||
| ) | const [inline] |
Definition at line 199 of file SparcV9RegInfo.h.
References getInvalidRegNum(), getNumOfRegClasses(), and MachineRegClassArr.
Referenced by colorMethodArgs(), cpReg2RegMI(), getCallAddressReg(), getFramePointer(), getReturnAddressReg(), getStackPointer(), getZeroRegNum(), and printReg().
| unsigned llvm::SparcV9RegInfo::getZeroRegNum | ( | ) | const |
Definition at line 56 of file SparcV9RegInfo.cpp.
References llvm::SparcV9IntRegClass::g0, getUnifiedRegNum(), and IntRegClassID.
Referenced by cpReg2RegMI(), cpValue2Value(), and llvm::IsUselessCopy().
| bool llvm::SparcV9RegInfo::isRegVolatile | ( | int | RegClassID, | |
| int | Reg | |||
| ) | const [inline] |
| bool llvm::SparcV9RegInfo::modifiedByCall | ( | int | RegClassID, | |
| int | Reg | |||
| ) | const [inline] |
| void llvm::SparcV9RegInfo::printReg | ( | const V9LiveRange * | LR | ) | const |
Definition at line 951 of file SparcV9RegInfo.cpp.
References llvm::Type::DoubleTy, FloatRegClassID, llvm::V9LiveRange::getColor(), llvm::V9LiveRange::getRegClassID(), llvm::V9LiveRange::getType(), getUnifiedRegName(), getUnifiedRegNum(), and llvm::V9LiveRange::hasColor().
| int llvm::SparcV9RegInfo::regNumForFPArg | ( | unsigned | RegType, | |
| bool | inCallee, | |||
| bool | isVarArgsCall, | |||
| unsigned | argNo, | |||
| unsigned & | regClassId | |||
| ) | const |
Definition at line 197 of file SparcV9RegInfo.cpp.
References llvm::SparcV9FloatRegClass::f0, FloatRegClassID, FPDoubleRegType, FPSingleRegType, getInvalidRegNum(), and regNumForIntArg().
Referenced by colorMethodArgs(), suggestRegs4CallArgs(), and suggestRegs4MethodArgs().
| int llvm::SparcV9RegInfo::regNumForIntArg | ( | bool | inCallee, | |
| bool | isVarArgsCall, | |||
| unsigned | argNo, | |||
| unsigned & | regClassId | |||
| ) | const |
Definition at line 178 of file SparcV9RegInfo.cpp.
References getInvalidRegNum(), llvm::SparcV9IntRegClass::i0, IntRegClassID, and llvm::SparcV9IntRegClass::o0.
Referenced by colorMethodArgs(), regNumForFPArg(), suggestRegs4CallArgs(), and suggestRegs4MethodArgs().
| bool llvm::SparcV9RegInfo::regTypeNeedsScratchReg | ( | int | RegType, | |
| int & | scratchRegClassId | |||
| ) | const |
| void llvm::SparcV9RegInfo::suggestReg4RetValue | ( | MachineInstr * | RetI, | |
| LiveRangeInfo & | LRI | |||
| ) | const |
Definition at line 642 of file SparcV9RegInfo.cpp.
References llvm::SparcV9FloatRegClass::f0, llvm::TargetMachine::getInstrInfo(), llvm::LiveRangeInfo::getLiveRangeForValue(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::ReturnInst::getReturnValue(), llvm::MachineOperand::getVRegValue(), llvm::SparcV9IntRegClass::i0, IntRegClassID, llvm::TargetInstrInfo::isReturn(), and target.
| void llvm::SparcV9RegInfo::suggestRegs4CallArgs | ( | MachineInstr * | CallI, | |
| LiveRangeInfo & | LRI | |||
| ) | const |
Definition at line 574 of file SparcV9RegInfo.cpp.
References llvm::BadRegClass, llvm::SparcV9FloatRegClass::f0, FloatRegClassID, llvm::CallArgsDescriptor::get(), llvm::CallArgsDescriptor::getArgInfo(), llvm::CallArgInfo::getArgVal(), llvm::TargetMachine::getInstrInfo(), getInvalidRegNum(), llvm::LiveRangeInfo::getLiveRangeForValue(), llvm::CallArgsDescriptor::getNumArgs(), llvm::MachineInstr::getOpcode(), getRegTypeForLR(), llvm::CallArgsDescriptor::getReturnValue(), IntRegClassID, IntRegType, llvm::SparcV9IntRegClass::o0, regNumForFPArg(), regNumForIntArg(), llvm::V9LiveRange::setSuggestedColor(), and target.
| void llvm::SparcV9RegInfo::suggestRegs4MethodArgs | ( | const Function * | Func, | |
| LiveRangeInfo & | LRI | |||
| ) | const |
Definition at line 368 of file SparcV9RegInfo.cpp.
References llvm::Function::arg_begin(), llvm::Function::arg_end(), llvm::BadRegClass, E, getInvalidRegNum(), llvm::LiveRangeInfo::getLiveRangeForValue(), getRegTypeForLR(), llvm::GlobalValue::getType(), I, IntRegType, llvm::isVarArgsFunction(), regNumForFPArg(), and regNumForIntArg().
Referenced by llvm::LiveRangeInfo::constructLiveRanges().
std::vector<const TargetRegClassInfo *> llvm::SparcV9RegInfo::MachineRegClassArr [protected] |
Definition at line 112 of file SparcV9RegInfo.h.
Referenced by getClassRegNum(), getMachineRegClass(), getNumOfRegClasses(), getUnifiedRegName(), getUnifiedRegNum(), isRegVolatile(), modifiedByCall(), SparcV9RegInfo(), and ~SparcV9RegInfo().
Definition at line 115 of file SparcV9RegInfo.h.
Referenced by colorMethodArgs(), cpMem2RegMI(), cpReg2MemMI(), suggestReg4RetValue(), and suggestRegs4CallArgs().