LLVM API Documentation

llvm::SPUFrameInfo Class Reference

#include <SPUFrameInfo.h>

Inheritance diagram for llvm::SPUFrameInfo:
[legend]
Collaboration diagram for llvm::SPUFrameInfo:
[legend]

List of all members.

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.


Detailed Description

Definition at line 22 of file SPUFrameInfo.h.


Constructor & Destructor Documentation

SPUFrameInfo::SPUFrameInfo ( const TargetMachine &  tm  ) 

Definition at line 23 of file SPUFrameInfo.cpp.


Member Function Documentation

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]

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]

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().


The documentation for this class was generated from the following files: