LLVM API Documentation
#include <SPUFrameInfo.h>
Public Member Functions | |
| SPUFrameInfo (const TargetMachine &tm) | |
| const std::pair< unsigned, int > * | getCalleeSaveSpillSlots (unsigned &NumEntries) const |
| Return a function's saved spill slots. | |
Static Public Member Functions | |
| static int | stackSlotSize () |
| Stack slot size (16 bytes). | |
| static int | maxFrameOffset () |
| Maximum frame offset representable by a signed 10-bit integer. | |
| static int | minFrameOffset () |
| Minimum frame offset representable by a signed 10-bit integer. | |
| static int | minStackSize () |
| Minimum frame size (enough to spill LR + SP). | |
| static int | fullSpillSize () |
| Frame size required to spill all registers plus frame info. | |
| static int | FItoStackOffset (int frame_index) |
| Convert frame index to stack offset. | |
| static int | branchHintPenalty () |
| Number of instructions required to overcome hint-for-branch latency. | |
Definition at line 22 of file SPUFrameInfo.h.
| SPUFrameInfo::SPUFrameInfo | ( | const TargetMachine & | tm | ) |
Definition at line 23 of file SPUFrameInfo.cpp.
| const std::pair< unsigned, int > * SPUFrameInfo::getCalleeSaveSpillSlots | ( | unsigned & | NumEntries | ) | const |
Return a function's saved spill slots.
For CellSPU, a function's saved spill slots is just the link register.
Definition at line 41 of file SPUTargetMachine.cpp.
| static int llvm::SPUFrameInfo::stackSlotSize | ( | ) | [inline, static] |
Stack slot size (16 bytes).
Definition at line 37 of file SPUFrameInfo.h.
Referenced by llvm::SPURegisterInfo::emitEpilogue(), FItoStackOffset(), fullSpillSize(), LowerCALL(), LowerFORMAL_ARGUMENTS(), maxFrameOffset(), minFrameOffset(), and minStackSize().
| static int llvm::SPUFrameInfo::maxFrameOffset | ( | ) | [inline, static] |
Maximum frame offset representable by a signed 10-bit integer.
This is the maximum frame offset that can be expressed as a 10-bit integer, used in D-form addresses.
Definition at line 45 of file SPUFrameInfo.h.
References stackSlotSize().
Referenced by llvm::SPURegisterInfo::eliminateFrameIndex(), llvm::SPUInstrInfo::foldMemoryOperandImpl(), llvm::SPUInstrInfo::loadRegFromStackSlot(), and llvm::SPUInstrInfo::storeRegToStackSlot().
| static int llvm::SPUFrameInfo::minFrameOffset | ( | ) | [inline, static] |
Minimum frame offset representable by a signed 10-bit integer.
Definition at line 49 of file SPUFrameInfo.h.
References stackSlotSize().
Referenced by llvm::SPURegisterInfo::eliminateFrameIndex().
| static int llvm::SPUFrameInfo::minStackSize | ( | ) | [inline, static] |
Minimum frame size (enough to spill LR + SP).
Definition at line 53 of file SPUFrameInfo.h.
References stackSlotSize().
Referenced by llvm::SPURegisterInfo::eliminateFrameIndex(), llvm::SPURegisterInfo::emitEpilogue(), llvm::SPURegisterInfo::emitPrologue(), LowerCALL(), and LowerFORMAL_ARGUMENTS().
| static int llvm::SPUFrameInfo::fullSpillSize | ( | ) | [inline, static] |
Frame size required to spill all registers plus frame info.
Definition at line 57 of file SPUFrameInfo.h.
References llvm::SPURegisterInfo::getNumArgRegs(), and stackSlotSize().
| static int llvm::SPUFrameInfo::FItoStackOffset | ( | int | frame_index | ) | [inline, static] |
Convert frame index to stack offset.
Definition at line 61 of file SPUFrameInfo.h.
References stackSlotSize().
| static int llvm::SPUFrameInfo::branchHintPenalty | ( | ) | [inline, static] |
Number of instructions required to overcome hint-for-branch latency.
HBR (hint-for-branch) instructions can be inserted when, for example, we know that a given function is going to be called, such as printf(), in the control flow graph. HBRs are only inserted if a sufficient number of instructions occurs between the HBR and the target. Currently, HBRs take 6 cycles, ergo, the magic number 6.
Definition at line 72 of file SPUFrameInfo.h.
Referenced by llvm::SPURegisterInfo::emitPrologue().