LLVM: lib/Target/ARM/Thumb1FrameLowering.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "arm-frame-lowering"
Functions
static void emitPrologueEpilogueSPUpdate (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, const TargetInstrInfo &TII, const DebugLoc &dl, const ThumbRegisterInfo &MRI, int NumBytes, unsigned ScratchReg, unsigned MIFlags)
static void emitCallSPUpdate (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, const TargetInstrInfo &TII, const DebugLoc &dl, const ThumbRegisterInfo &MRI, int NumBytes, unsigned MIFlags=MachineInstr::NoFlags)
static void findTemporariesForLR (const BitVector &GPRsNoLRSP, const BitVector &PopFriendly, const LiveRegUnits &UsedRegs, unsigned &PopReg, unsigned &TmpReg, MachineRegisterInfo &MRI)
static void splitLowAndHighRegs (const std::set< Register > &Regs, std::set< Register > &LowRegs, std::set< Register > &HighRegs)
template
It getNextOrderedReg (It OrderedStartIt, It OrderedEndIt, const std::set< Register > &RegSet)
static void pushRegsToStack (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const TargetInstrInfo &TII, const std::set< Register > &RegsToSave, const std::set< Register > &CopyRegs, bool &UsedLRAsTemp)
static void popRegsFromStack (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MI, const TargetInstrInfo &TII, const std::set< Register > &RegsToRestore, const std::set< Register > &AvailableCopyRegs, bool IsVarArg, bool HasV5Ops)

DEBUG_TYPE

#define DEBUG_TYPE "arm-frame-lowering"

emitCallSPUpdate()

emitPrologueEpilogueSPUpdate()

Definition at line 64 of file Thumb1FrameLowering.cpp.

References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::ARMCC::AL, llvm::BuildMI(), llvm::emitThumbRegPlusImmediate(), llvm::MachineFunction::getSubtarget(), llvm::RegState::Kill, MBB, MBBI, MRI, llvm::predOps(), llvm::report_fatal_error(), llvm::MachineInstrBuilder::setMIFlags(), and TII.

Referenced by llvm::Thumb1FrameLowering::emitEpilogue(), and llvm::Thumb1FrameLowering::emitPrologue().

findTemporariesForLR()

getNextOrderedReg()

template

It getNextOrderedReg ( It OrderedStartIt,
It OrderedEndIt,
const std::set< Register > & RegSet )

popRegsFromStack()

Definition at line 925 of file Thumb1FrameLowering.cpp.

References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addReg(), llvm::ARMCC::AL, assert(), llvm::BuildMI(), llvm::MachineInstrBuilder::copyImplicitOps(), llvm::dwarf_linker::DebugLoc, llvm::RegState::Define, DL, llvm::MachineInstr::FrameDestroy, llvm::getDefRegState(), llvm::MachineFunction::getInfo(), getNextOrderedReg(), llvm::ARMFunctionInfo::isCmseNSEntryFunction(), llvm::Register::isValid(), llvm::RegState::Kill, MBB, MI, OrderedCopyRegs, OrderedHighRegs, OrderedLowRegs, llvm::predOps(), Reg, llvm::MachineInstrBuilder::setMIFlag(), splitLowAndHighRegs(), and TII.

Referenced by llvm::Thumb1FrameLowering::restoreCalleeSavedRegisters().

pushRegsToStack()

Definition at line 832 of file Thumb1FrameLowering.cpp.

References llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addReg(), llvm::ARMCC::AL, llvm::BuildMI(), llvm::RegState::Define, DL, llvm::MachineInstr::FrameSetup, llvm::getKillRegState(), getNextOrderedReg(), llvm::MachineFunction::getRegInfo(), llvm::RegState::Kill, MBB, MI, MRI, OrderedCopyRegs, OrderedHighRegs, OrderedLowRegs, llvm::predOps(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, llvm::reverse(), llvm::MachineInstrBuilder::setMIFlags(), splitLowAndHighRegs(), and TII.

Referenced by llvm::Thumb1FrameLowering::spillCalleeSavedRegisters().

splitLowAndHighRegs()

OrderedCopyRegs

Initial value:

= {

ARM::R0, ARM::R1, ARM::R2, ARM::R3, ARM::R4,

ARM::R5, ARM::R6, ARM::R7, ARM::LR}

Definition at line 807 of file Thumb1FrameLowering.cpp.

Referenced by popRegsFromStack(), pushRegsToStack(), and llvm::Thumb1FrameLowering::spillCalleeSavedRegisters().

OrderedHighRegs

OrderedLowRegs