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 158 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 177 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.
Referenced by llvm::ARMJITInfo::relocate().
Same as previous getRegisterNumbering except it returns true in isSPVFP if the register is a single precision VFP register.
Definition at line 84 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 208 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 230 of file ARMRegisterInfo.cpp.
Referenced by processFunctionBeforeCalleeSavedScan().
| BitVector ARMRegisterInfo::getReservedRegs | ( | const MachineFunction & | MF | ) | const |
Definition at line 243 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 257 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 276 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 285 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 295 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 537 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 608 of file ARMRegisterInfo.cpp.
References llvm::MachineInstr::addOperand(), AddrMode, 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(), isThumb, llvm::ARMFunctionInfo::isThumbFunction(), llvm::TargetInstrDesc::mayLoad(), 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 942 of file ARMRegisterInfo.cpp.
References AddrMode, 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(), 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 1191 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(), 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 1331 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 1436 of file ARMRegisterInfo.cpp.
| unsigned ARMRegisterInfo::getFrameRegister | ( | MachineFunction & | MF | ) | const |
Definition at line 1440 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 1447 of file ARMRegisterInfo.cpp.
| unsigned ARMRegisterInfo::getEHHandlerRegister | ( | ) | const |
Definition at line 1452 of file ARMRegisterInfo.cpp.
| int ARMRegisterInfo::getDwarfRegNum | ( | unsigned | RegNum, | |
| bool | isEH | |||
| ) | const |
Definition at line 1457 of file ARMRegisterInfo.cpp.
| bool ARMRegisterInfo::isLowRegister | ( | unsigned | Reg | ) | const |
isLowRegister - Returns true if the register is low register r0-r7.
Definition at line 196 of file ARMRegisterInfo.cpp.
Referenced by llvm::ARMInstrInfo::canFoldMemoryOperand(), emitThumbRegPlusImmediate(), emitThumbRegPlusImmInReg(), llvm::ARMInstrInfo::foldMemoryOperandImpl(), 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().