| 
    LLVM 22.0.0git
    
   | 
 
#include "Target/SPIRV/SPIRVFrameLowering.h"
Public Member Functions | |
| SPIRVFrameLowering (const SPIRVSubtarget &sti) | |
| void | emitPrologue (MachineFunction &MF, MachineBasicBlock &MBB) const override | 
| emitProlog/emitEpilog - These methods insert prolog and epilog code into the function.   | |
| void | emitEpilogue (MachineFunction &MF, MachineBasicBlock &MBB) const override | 
| Public Member Functions inherited from llvm::TargetFrameLowering | |
| TargetFrameLowering (StackDirection D, Align StackAl, int LAO, Align TransAl=Align(1), bool StackReal=true) | |
| virtual | ~TargetFrameLowering () | 
| StackDirection | getStackGrowthDirection () const | 
| getStackGrowthDirection - Return the direction the stack grows   | |
| unsigned | getStackAlignment () const | 
| getStackAlignment - This method returns the number of bytes to which the stack pointer must be aligned on entry to a function.   | |
| Align | getStackAlign () const | 
| getStackAlignment - This method returns the number of bytes to which the stack pointer must be aligned on entry to a function.   | |
| virtual uint64_t | getStackThreshold () const | 
| getStackThreshold - Return the maximum stack size   | |
| int | alignSPAdjust (int SPAdj) const | 
| alignSPAdjust - This method aligns the stack adjustment to the correct alignment.   | |
| Align | getTransientStackAlign () const | 
| getTransientStackAlignment - This method returns the number of bytes to which the stack pointer must be aligned at all times, even between calls.   | |
| bool | isStackRealignable () const | 
| isStackRealignable - This method returns whether the stack can be realigned.   | |
| virtual bool | isStackIdSafeForLocalArea (unsigned StackId) const | 
| This method returns whether or not it is safe for an object with the given stack id to be bundled into the local area.   | |
| int | getOffsetOfLocalArea () const | 
| getOffsetOfLocalArea - This method returns the offset of the local area from the stack pointer on entrance to a function.   | |
| virtual bool | allocateScavengingFrameIndexesNearIncomingSP (const MachineFunction &MF) const | 
| Control the placement of special register scavenging spill slots when allocating a stack frame.   | |
| virtual bool | assignCalleeSavedSpillSlots (MachineFunction &MF, const TargetRegisterInfo *TRI, std::vector< CalleeSavedInfo > &CSI, unsigned &MinCSFrameIndex, unsigned &MaxCSFrameIndex) const | 
| assignCalleeSavedSpillSlots - Allows target to override spill slot assignment logic.   | |
| virtual bool | assignCalleeSavedSpillSlots (MachineFunction &MF, const TargetRegisterInfo *TRI, std::vector< CalleeSavedInfo > &CSI) const | 
| virtual const SpillSlot * | getCalleeSavedSpillSlots (unsigned &NumEntries) const | 
| getCalleeSavedSpillSlots - This method returns a pointer to an array of pairs, that contains an entry for each callee saved register that must be spilled to a particular stack location if it is spilled.   | |
| virtual bool | targetHandlesStackFrameRounding () const | 
| targetHandlesStackFrameRounding - Returns true if the target is responsible for rounding up the stack frame (probably at emitPrologue time).   | |
| virtual bool | enableShrinkWrapping (const MachineFunction &MF) const | 
| Returns true if the target will correctly handle shrink wrapping.   | |
| virtual bool | enableStackSlotScavenging (const MachineFunction &MF) const | 
| Returns true if the stack slot holes in the fixed and callee-save stack area should be used when allocating other stack locations to reduce stack size.   | |
| virtual bool | enableCalleeSaveSkip (const MachineFunction &MF) const | 
| Returns true if the target can safely skip saving callee-saved registers for noreturn nounwind functions.   | |
| virtual void | emitZeroCallUsedRegs (BitVector RegsToZero, MachineBasicBlock &MBB) const | 
| emitZeroCallUsedRegs - Zeros out call used registers.   | |
| virtual void | emitCalleeSavedFrameMovesFullCFA (MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI) const | 
| With basic block sections, emit callee saved frame moves for basic blocks that are in a different section.   | |
| virtual bool | enableCFIFixup (const MachineFunction &MF) const | 
| Returns true if we may need to fix the unwind information for the function.   | |
| virtual bool | enableFullCFIFixup (const MachineFunction &MF) const | 
| enableFullCFIFixup - Returns true if we may need to fix the unwind information such that it is accurate for every instruction in the function (e.g.   | |
| virtual void | resetCFIToInitialState (MachineBasicBlock &MBB) const | 
| Emit CFI instructions that recreate the state of the unwind information upon function entry.   | |
| virtual void | inlineStackProbe (MachineFunction &MF, MachineBasicBlock &PrologueMBB) const | 
| Replace a StackProbe stub (if any) with the actual probe code inline.   | |
| virtual bool | stackProbeFunctionModifiesSP () const | 
| Does the stack probe function call return with a modified stack pointer?   | |
| virtual void | adjustForSegmentedStacks (MachineFunction &MF, MachineBasicBlock &PrologueMBB) const | 
| Adjust the prologue to have the function use segmented stacks.   | |
| virtual void | adjustForHiPEPrologue (MachineFunction &MF, MachineBasicBlock &PrologueMBB) const | 
| Adjust the prologue to add Erlang Run-Time System (ERTS) specific code in the assembly prologue to explicitly handle the stack.   | |
| virtual bool | spillCalleeSavedRegisters (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, ArrayRef< CalleeSavedInfo > CSI, const TargetRegisterInfo *TRI) const | 
| spillCalleeSavedRegisters - Issues instruction(s) to spill all callee saved registers and returns true if it isn't possible / profitable to do so by issuing a series of store instructions via storeRegToStackSlot().   | |
| void | spillCalleeSavedRegister (MachineBasicBlock &SaveBlock, MachineBasicBlock::iterator MI, const CalleeSavedInfo &CS, const TargetInstrInfo *TII, const TargetRegisterInfo *TRI) const | 
| spillCalleeSavedRegister - Default implementation for spilling a single callee saved register.   | |
| virtual bool | restoreCalleeSavedRegisters (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, MutableArrayRef< CalleeSavedInfo > CSI, const TargetRegisterInfo *TRI) const | 
| restoreCalleeSavedRegisters - Issues instruction(s) to restore all callee saved registers and returns true if it isn't possible / profitable to do so by issuing a series of load instructions via loadRegToStackSlot().   | |
| void | restoreCalleeSavedRegister (MachineBasicBlock &MBB, MachineBasicBlock::iterator MI, const CalleeSavedInfo &CS, const TargetInstrInfo *TII, const TargetRegisterInfo *TRI) const | 
| bool | hasFP (const MachineFunction &MF) const | 
| hasFP - Return true if the specified function should have a dedicated frame pointer register.   | |
| virtual bool | hasReservedCallFrame (const MachineFunction &MF) const | 
| hasReservedCallFrame - Under normal circumstances, when a frame pointer is not required, we reserve argument space for call sites in the function immediately on entry to the current function.   | |
| virtual bool | canSimplifyCallFramePseudos (const MachineFunction &MF) const | 
| canSimplifyCallFramePseudos - When possible, it's best to simplify the call frame pseudo ops before doing frame index elimination.   | |
| virtual bool | needsFrameIndexResolution (const MachineFunction &MF) const | 
| virtual StackOffset | getFrameIndexReference (const MachineFunction &MF, int FI, Register &FrameReg) const | 
| getFrameIndexReference - This method should return the base register and offset used to reference a frame index location.   | |
| virtual StackOffset | getFrameIndexReferencePreferSP (const MachineFunction &MF, int FI, Register &FrameReg, bool IgnoreSPUpdates) const | 
Same as getFrameIndexReference, except that the stack pointer (as opposed to the frame pointer) will be the preferred value for FrameReg.   | |
| virtual StackOffset | getNonLocalFrameIndexReference (const MachineFunction &MF, int FI) const | 
| getNonLocalFrameIndexReference - This method returns the offset used to reference a frame index location.   | |
| virtual StackOffset | getFrameIndexReferenceFromSP (const MachineFunction &MF, int FI) const | 
| getFrameIndexReferenceFromSP - This method returns the offset from the stack pointer to the slot of the specified index.   | |
| virtual void | getCalleeSaves (const MachineFunction &MF, BitVector &SavedRegs) const | 
Returns the callee-saved registers as computed by determineCalleeSaves in the BitVector SavedRegs.   | |
| virtual void | determineCalleeSaves (MachineFunction &MF, BitVector &SavedRegs, RegScavenger *RS=nullptr) const | 
| This method determines which of the registers reported by TargetRegisterInfo::getCalleeSavedRegs() should actually get saved.   | |
| virtual void | processFunctionBeforeFrameFinalized (MachineFunction &MF, RegScavenger *RS=nullptr) const | 
| processFunctionBeforeFrameFinalized - This method is called immediately before the specified function's frame layout (MF.getFrameInfo()) is finalized.   | |
| virtual void | processFunctionBeforeFrameIndicesReplaced (MachineFunction &MF, RegScavenger *RS=nullptr) const | 
| processFunctionBeforeFrameIndicesReplaced - This method is called immediately before MO_FrameIndex operands are eliminated, but after the frame is finalized.   | |
| virtual unsigned | getWinEHParentFrameOffset (const MachineFunction &MF) const | 
| virtual MachineBasicBlock::iterator | eliminateCallFramePseudoInstr (MachineFunction &MF, MachineBasicBlock &MBB, MachineBasicBlock::iterator MI) const | 
| This method is called during prolog/epilog code insertion to eliminate call frame setup and destroy pseudo instructions (but only if the Target is using them).   | |
| virtual void | orderFrameObjects (const MachineFunction &MF, SmallVectorImpl< int > &objectsToAllocate) const | 
| Order the symbols in the local stack frame.   | |
| virtual bool | canUseAsPrologue (const MachineBasicBlock &MBB) const | 
Check whether or not the given MBB can be used as a prologue for the target.   | |
| virtual bool | canUseAsEpilogue (const MachineBasicBlock &MBB) const | 
Check whether or not the given MBB can be used as a epilogue for the target.   | |
| virtual TargetStackID::Value | getStackIDForScalableVectors () const | 
| Returns the StackID that scalable vectors should be associated with.   | |
| virtual bool | isSupportedStackID (TargetStackID::Value ID) const | 
| virtual bool | isProfitableForNoCSROpt (const Function &F) const | 
| Check if the no-CSR optimisation is profitable for the given function.   | |
| virtual int | getInitialCFAOffset (const MachineFunction &MF) const | 
| Return initial CFA offset value i.e.   | |
| virtual Register | getInitialCFARegister (const MachineFunction &MF) const | 
| Return initial CFA register value i.e.   | |
| virtual DwarfFrameBase | getDwarfFrameBase (const MachineFunction &MF) const | 
| Return the frame base information to be encoded in the DWARF subprogram debug info.   | |
| virtual void | spillFPBP (MachineFunction &MF) const | 
| If frame pointer or base pointer is clobbered by an instruction, we should spill/restore it around that instruction.   | |
| virtual void | emitRemarks (const MachineFunction &MF, MachineOptimizationRemarkEmitter *ORE) const | 
| This method is called at the end of prolog/epilog code insertion, so targets can emit remarks based on the final frame layout.   | |
Protected Member Functions | |
| bool | hasFPImpl (const MachineFunction &MF) const override | 
Additional Inherited Members | |
| Public Types inherited from llvm::TargetFrameLowering | |
| enum | StackDirection { StackGrowsUp , StackGrowsDown } | 
| Static Public Member Functions inherited from llvm::TargetFrameLowering | |
| static bool | isSafeForNoCSROpt (const Function &F) | 
| Check if given function is safe for not having callee saved registers.   | |
Definition at line 26 of file SPIRVFrameLowering.h.
      
  | 
  inlineexplicit | 
Definition at line 28 of file SPIRVFrameLowering.h.
References llvm::TargetFrameLowering::StackGrowsDown, and llvm::TargetFrameLowering::TargetFrameLowering().
      
  | 
  inlineoverridevirtual | 
Implements llvm::TargetFrameLowering.
Definition at line 33 of file SPIRVFrameLowering.h.
References MBB.
      
  | 
  inlineoverridevirtual | 
emitProlog/emitEpilog - These methods insert prolog and epilog code into the function.
Implements llvm::TargetFrameLowering.
Definition at line 31 of file SPIRVFrameLowering.h.
References MBB.
      
  | 
  inlineoverrideprotectedvirtual | 
Implements llvm::TargetFrameLowering.
Definition at line 37 of file SPIRVFrameLowering.h.