LLVM 22.0.0git
Thumb1FrameLowering.cpp File Reference

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<typename It>
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)

Variables

static const SmallVector< RegisterOrderedLowRegs
static const SmallVector< RegisterOrderedHighRegs
static const SmallVector< RegisterOrderedCopyRegs

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "arm-frame-lowering"

Definition at line 43 of file Thumb1FrameLowering.cpp.

Function Documentation

◆ emitCallSPUpdate()

void emitCallSPUpdate ( MachineBasicBlock & MBB,
MachineBasicBlock::iterator & MBBI,
const TargetInstrInfo & TII,
const DebugLoc & dl,
const ThumbRegisterInfo & MRI,
int NumBytes,
unsigned MIFlags = MachineInstr::NoFlags )
static

◆ emitPrologueEpilogueSPUpdate()

◆ findTemporariesForLR()

void findTemporariesForLR ( const BitVector & GPRsNoLRSP,
const BitVector & PopFriendly,
const LiveRegUnits & UsedRegs,
unsigned & PopReg,
unsigned & TmpReg,
MachineRegisterInfo & MRI )
static

◆ getNextOrderedReg()

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

◆ popRegsFromStack()

◆ pushRegsToStack()

◆ splitLowAndHighRegs()

void splitLowAndHighRegs ( const std::set< Register > & Regs,
std::set< Register > & LowRegs,
std::set< Register > & HighRegs )
static

Definition at line 811 of file Thumb1FrameLowering.cpp.

References contains(), llvm_unreachable, and Reg.

Referenced by popRegsFromStack(), and pushRegsToStack().

Variable Documentation

◆ OrderedCopyRegs

const SmallVector<Register> OrderedCopyRegs
static
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

const SmallVector<Register> OrderedHighRegs
static
Initial value:
= {ARM::R8, ARM::R9,
ARM::R10, ARM::R11}

Definition at line 805 of file Thumb1FrameLowering.cpp.

Referenced by popRegsFromStack(), and pushRegsToStack().

◆ OrderedLowRegs

const SmallVector<Register> OrderedLowRegs
static
Initial value:
= {ARM::R4, ARM::R5, ARM::R6,
ARM::R7, ARM::LR}

Definition at line 803 of file Thumb1FrameLowering.cpp.

Referenced by popRegsFromStack(), and pushRegsToStack().