LLVM API Documentation
#include <ARMRegisterInfo.h>


Definition at line 25 of file ARMRegisterInfo.h.
| ARMRegisterInfo::ARMRegisterInfo | ( | const TargetInstrInfo & | tii, | |
| const ARMSubtarget & | STI | |||
| ) |
Definition at line 84 of file ARMRegisterInfo.cpp.
| void ARMRegisterInfo::emitLoadConstPool | ( | MachineBasicBlock & | MBB, | |
| MachineBasicBlock::iterator & | MBBI, | |||
| unsigned | DestReg, | |||
| int | Val, | |||
| unsigned | Pred, | |||
| unsigned | PredReg, | |||
| const TargetInstrInfo * | TII, | |||
| bool | isThumb | |||
| ) | const |
emitLoadConstPool - Emits a load from constpool to materialize the specified immediate.
emitLoadConstPool - Emits a load from constpool to materialize the specified immediate.
Definition at line 103 of file ARMRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), llvm::CallingConv::C, ConstantPool, llvm::TargetInstrInfo::get(), llvm::ConstantInt::get(), llvm::MachineFunction::getConstantPool(), llvm::MachineConstantPool::getConstantPoolIndex(), llvm::MachineBasicBlock::getParent(), Idx, llvm::Type::Int32Ty, and MF.
Referenced by eliminateFrameIndex(), emitThumbRegPlusImmInReg(), and llvm::ARMInstrInfo::reMaterialize().
getRegisterNumbering - Given the enum value for some register, e.g. ARM::LR, return the number that it corresponds to (e.g. 14).
Definition at line 43 of file ARMRegisterInfo.cpp.
References llvm::X86II::D8, and llvm::X86II::D9.
| const unsigned * ARMRegisterInfo::getCalleeSavedRegs | ( | const MachineFunction * | MF = 0 |
) | const |
Code Generation virtual methods...
Definition at line 134 of file ARMRegisterInfo.cpp.
References llvm::X86II::D8, llvm::X86II::D9, llvm::ARMSubtarget::isTargetDarwin(), and STI.
Referenced by emitEpilogue(), and processFunctionBeforeCalleeSavedScan().
| const TargetRegisterClass *const * ARMRegisterInfo::getCalleeSavedRegClasses | ( | const MachineFunction * | MF = 0 |
) | const |
Definition at line 156 of file ARMRegisterInfo.cpp.
Referenced by processFunctionBeforeCalleeSavedScan().
| BitVector ARMRegisterInfo::getReservedRegs | ( | const MachineFunction & | MF | ) | const |
Definition at line 169 of file ARMRegisterInfo.cpp.
References hasFP(), llvm::ARMSubtarget::isR9Reserved(), llvm::ARMSubtarget::isTargetDarwin(), llvm::BitVector::set(), and STI.
| bool ARMRegisterInfo::isReservedReg | ( | const MachineFunction & | MF, | |
| unsigned | Reg | |||
| ) | const |
Definition at line 183 of file ARMRegisterInfo.cpp.
References hasFP(), llvm::ARMSubtarget::isR9Reserved(), llvm::ARMSubtarget::isTargetDarwin(), and STI.
Referenced by processFunctionBeforeCalleeSavedScan().
| bool ARMRegisterInfo::requiresRegisterScavenging | ( | const MachineFunction & | MF | ) | const |
Definition at line 202 of file ARMRegisterInfo.cpp.
References AFI, llvm::MachineFunction::getInfo(), llvm::ARMFunctionInfo::isThumbFunction(), and ThumbRegScavenging.
| bool ARMRegisterInfo::hasFP | ( | const MachineFunction & | MF | ) | const |
hasFP - Return true if the specified function should have a dedicated frame pointer register. This is true if the function has variable sized allocas or if frame pointer elimination is disabled.
Definition at line 211 of file ARMRegisterInfo.cpp.
References llvm::MachineFunction::getFrameInfo(), llvm::MachineFrameInfo::hasVarSizedObjects(), MFI, and llvm::NoFramePointerElim.
Referenced by eliminateFrameIndex(), emitEpilogue(), emitPrologue(), getFrameRegister(), getReservedRegs(), isReservedReg(), and processFunctionBeforeCalleeSavedScan().
| bool ARMRegisterInfo::hasReservedCallFrame | ( | MachineFunction & | MF | ) | const |
Definition at line 221 of file ARMRegisterInfo.cpp.
References AFI, llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getMaxCallFrameSize(), llvm::MachineFrameInfo::hasVarSizedObjects(), and llvm::ARMFunctionInfo::isThumbFunction().
Referenced by eliminateCallFramePseudoInstr().
| void ARMRegisterInfo::eliminateCallFramePseudoInstr | ( | MachineFunction & | MF, | |
| MachineBasicBlock & | MBB, | |||
| MachineBasicBlock::iterator | I | |||
| ) | const |
Definition at line 463 of file ARMRegisterInfo.cpp.
References AFI, llvm::ARMCC::AL, Align, emitSPUpdate(), llvm::MachineBasicBlock::erase(), llvm::TargetMachine::getFrameInfo(), llvm::MachineOperand::getImm(), llvm::MachineFunction::getInfo(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::TargetFrameInfo::getStackAlignment(), llvm::MachineFunction::getTarget(), hasReservedCallFrame(), isThumb, llvm::ARMFunctionInfo::isThumbFunction(), Pred, and TII.
| void ARMRegisterInfo::eliminateFrameIndex | ( | MachineBasicBlock::iterator | II, | |
| int | SPAdj, | |||
| RegScavenger * | RS = NULL | |||
| ) | const |
Definition at line 534 of file ARMRegisterInfo.cpp.
References llvm::MachineInstr::addOperand(), llvm::ARMII::AddrMode2, llvm::ARMII::AddrMode3, llvm::ARMII::AddrMode5, llvm::ARMII::AddrModeMask, llvm::ARMII::AddrModeTs, AFI, llvm::ARMCC::AL, llvm::BuildMI(), calcNumMI(), llvm::MachineOperand::ChangeToImmediate(), llvm::MachineOperand::ChangeToRegister(), llvm::MachineOperand::CreateReg(), emitARMRegPlusImmediate(), emitLoadConstPool(), emitThumbConstant(), emitThumbRegPlusImmediate(), emitThumbRegPlusImmInReg(), llvm::MachineBasicBlock::erase(), llvm::MachineInstr::findFirstPredOperandIdx(), findScratchRegister(), FrameIndex, llvm::TargetInstrInfo::get(), llvm::ARM_AM::getAM2Offset(), llvm::ARM_AM::getAM2Op(), llvm::ARM_AM::getAM3Offset(), llvm::ARM_AM::getAM3Op(), llvm::ARM_AM::getAM5Offset(), llvm::ARM_AM::getAM5Op(), llvm::MachineInstr::getDesc(), llvm::ARMFunctionInfo::getDPRCalleeSavedAreaOffset(), llvm::MachineFunction::getFrameInfo(), llvm::ARMFunctionInfo::getFramePtrSpillOffset(), getFrameRegister(), llvm::ARMFunctionInfo::getGPRCalleeSavedArea1Offset(), llvm::ARMFunctionInfo::getGPRCalleeSavedArea2Offset(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineFunction::getInfo(), llvm::MachineInstr::getNumOperands(), llvm::MachineFrameInfo::getObjectOffset(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getReg(), llvm::ARM_AM::getSOImmVal(), llvm::ARM_AM::getSOImmValRotate(), llvm::MachineFrameInfo::getStackSize(), hasFP(), llvm::ARMFunctionInfo::isDPRCalleeSavedAreaFrame(), llvm::MachineOperand::isFI(), llvm::ARMFunctionInfo::isGPRCalleeSavedArea1Frame(), llvm::ARMFunctionInfo::isGPRCalleeSavedArea2Frame(), llvm::ARMFunctionInfo::isR3LiveIn(), llvm::TargetInstrDesc::isSimpleLoad(), isThumb, llvm::ARMFunctionInfo::isThumbFunction(), llvm::TargetInstrDesc::mayStore(), MBB, MF, MI, llvm::next(), Offset, Pred, llvm::MachineInstr::RemoveOperand(), llvm::ARM_AM::rotr32(), Scale, llvm::RegScavenger::scavengeRegister(), llvm::MachineInstr::setDesc(), llvm::ARM_AM::sub, TII, and llvm::TargetInstrDesc::TSFlags.
| void ARMRegisterInfo::processFunctionBeforeCalleeSavedScan | ( | MachineFunction & | MF, | |
| RegScavenger * | RS = NULL | |||
| ) | const |
Definition at line 868 of file ARMRegisterInfo.cpp.
References llvm::ARMII::AddrMode3, llvm::ARMII::AddrMode5, llvm::ARMII::AddrModeMask, AFI, llvm::SmallVectorImpl< T >::back(), BB, llvm::MachineBasicBlock::begin(), llvm::MachineFunction::begin(), llvm::SmallVectorImpl< T >::begin(), llvm::MachineFrameInfo::CreateStackObject(), E, llvm::SmallVectorImpl< T >::empty(), llvm::MachineBasicBlock::end(), llvm::MachineFunction::end(), llvm::SmallVectorImpl< T >::end(), llvm::SmallVectorImpl< T >::erase(), estimateStackSize(), llvm::SmallVectorImpl< T >::front(), llvm::TargetInstrInfo::get(), llvm::TargetRegisterClass::getAlignment(), getCalleeSavedRegClasses(), getCalleeSavedRegs(), llvm::MachineFunction::getFrameInfo(), llvm::TargetMachine::getFrameInfo(), llvm::TargetInstrInfo::GetFunctionSizeInBytes(), llvm::MachineFunction::getInfo(), llvm::MachineFunction::getRegInfo(), llvm::TargetRegisterClass::getSize(), llvm::TargetFrameInfo::getStackAlignment(), llvm::MachineFunction::getTarget(), hasFP(), I, isLowRegister(), llvm::MachineRegisterInfo::isPhysRegUsed(), isReservedReg(), llvm::ARMSubtarget::isTargetDarwin(), llvm::ARMFunctionInfo::isThumbFunction(), MFI, llvm::SmallVectorImpl< T >::pop_back(), llvm::SmallVectorImpl< T >::push_back(), Reg, llvm::ARMFunctionInfo::setCSRegisterIsSpilled(), llvm::ARMFunctionInfo::setHasStackFrame(), llvm::ARMFunctionInfo::setLRIsSpilledForFarJump(), llvm::MachineRegisterInfo::setPhysRegUsed(), llvm::RegScavenger::setScavengingFrameIndex(), llvm::SmallVectorImpl< T >::size(), STI, TII, and llvm::TargetInstrDesc::TSFlags.
| void ARMRegisterInfo::emitPrologue | ( | MachineFunction & | MF | ) | const |
Definition at line 1117 of file ARMRegisterInfo.cpp.
References AddDefaultCC(), AddDefaultPred(), llvm::ARMFunctionInfo::addDPRCalleeSavedAreaFrame(), llvm::ARMFunctionInfo::addGPRCalleeSavedArea1Frame(), llvm::ARMFunctionInfo::addGPRCalleeSavedArea2Frame(), llvm::MachineInstrBuilder::addImm(), AFI, llvm::ARMCC::AL, llvm::MachineBasicBlock::begin(), llvm::BuildMI(), E, emitSPUpdate(), llvm::MachineBasicBlock::end(), FI, llvm::MachineFunction::front(), llvm::TargetInstrInfo::get(), llvm::MachineFrameInfo::getCalleeSavedInfo(), llvm::MachineFunction::getFrameInfo(), llvm::ARMFunctionInfo::getFramePtrSpillOffset(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getObjectOffset(), llvm::MachineFrameInfo::getOffsetAdjustment(), llvm::MachineFunction::getRegInfo(), llvm::MachineFrameInfo::getStackSize(), llvm::ARMFunctionInfo::getVarArgsRegSaveSize(), hasFP(), llvm::ARMFunctionInfo::hasStackFrame(), I, llvm::ARMSubtarget::isTargetDarwin(), llvm::ARMSubtarget::isTargetELF(), isThumb, llvm::ARMFunctionInfo::isThumbFunction(), llvm::MachineRegisterInfo::livein_begin(), llvm::MachineRegisterInfo::livein_end(), MBB, MBBI, MFI, movePastCSLoadStoreOps(), Reg, llvm::ARMFunctionInfo::setDPRCalleeSavedAreaOffset(), llvm::ARMFunctionInfo::setDPRCalleeSavedAreaSize(), llvm::ARMFunctionInfo::setFramePtrSpillOffset(), llvm::ARMFunctionInfo::setGPRCalleeSavedArea1Offset(), llvm::ARMFunctionInfo::setGPRCalleeSavedArea1Size(), llvm::ARMFunctionInfo::setGPRCalleeSavedArea2Offset(), llvm::ARMFunctionInfo::setGPRCalleeSavedArea2Size(), llvm::MachineFrameInfo::setOffsetAdjustment(), llvm::ARMFunctionInfo::setR3IsLiveIn(), llvm::MachineFrameInfo::setStackSize(), STI, and TII.
| void ARMRegisterInfo::emitEpilogue | ( | MachineFunction & | MF, | |
| MachineBasicBlock & | MBB | |||
| ) | const |
Definition at line 1257 of file ARMRegisterInfo.cpp.
References llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), AFI, llvm::ARMCC::AL, llvm::MachineBasicBlock::begin(), llvm::BuildMI(), emitSPUpdate(), emitThumbRegPlusImmediate(), llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::erase(), llvm::MachineBasicBlock::front(), llvm::TargetInstrInfo::get(), getCalleeSavedRegs(), llvm::ARMFunctionInfo::getDPRCalleeSavedAreaOffset(), llvm::ARMFunctionInfo::getDPRCalleeSavedAreaSize(), llvm::MachineFunction::getFrameInfo(), llvm::ARMFunctionInfo::getFramePtrSpillOffset(), llvm::ARMFunctionInfo::getGPRCalleeSavedArea1Size(), llvm::ARMFunctionInfo::getGPRCalleeSavedArea2Size(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::getStackSize(), llvm::ARMFunctionInfo::getVarArgsRegSaveSize(), hasFP(), llvm::ARMFunctionInfo::hasStackFrame(), isCSRestore(), llvm::ARMSubtarget::isTargetDarwin(), isThumb, llvm::ARMFunctionInfo::isThumbFunction(), MBBI, MFI, movePastCSLoadStoreOps(), llvm::prior(), STI, and TII.
| unsigned ARMRegisterInfo::getRARegister | ( | ) | const |
Definition at line 1362 of file ARMRegisterInfo.cpp.
| unsigned ARMRegisterInfo::getFrameRegister | ( | MachineFunction & | MF | ) | const |
Definition at line 1366 of file ARMRegisterInfo.cpp.
References hasFP(), llvm::ARMSubtarget::isTargetDarwin(), llvm::ARMSubtarget::isThumb(), STI, and llvm::ARMSubtarget::useThumbBacktraces().
Referenced by eliminateFrameIndex().
| unsigned ARMRegisterInfo::getEHExceptionRegister | ( | ) | const |
Definition at line 1373 of file ARMRegisterInfo.cpp.
| unsigned ARMRegisterInfo::getEHHandlerRegister | ( | ) | const |
Definition at line 1378 of file ARMRegisterInfo.cpp.
| int ARMRegisterInfo::getDwarfRegNum | ( | unsigned | RegNum, | |
| bool | isEH | |||
| ) | const |
Definition at line 1383 of file ARMRegisterInfo.cpp.
| bool ARMRegisterInfo::isLowRegister | ( | unsigned | Reg | ) | const |
isLowRegister - Returns true if the register is low register r0-r7.
Definition at line 122 of file ARMRegisterInfo.cpp.
Referenced by llvm::ARMInstrInfo::canFoldMemoryOperand(), emitThumbRegPlusImmediate(), emitThumbRegPlusImmInReg(), llvm::ARMInstrInfo::foldMemoryOperand(), and processFunctionBeforeCalleeSavedScan().
Definition at line 26 of file ARMRegisterInfo.h.
Referenced by eliminateCallFramePseudoInstr(), eliminateFrameIndex(), emitEpilogue(), emitPrologue(), and processFunctionBeforeCalleeSavedScan().
Definition at line 27 of file ARMRegisterInfo.h.
Referenced by emitEpilogue(), emitPrologue(), getCalleeSavedRegs(), getFrameRegister(), getReservedRegs(), isReservedReg(), and processFunctionBeforeCalleeSavedScan().