LLVM API Documentation

X86RegisterInfo.cpp File Reference

#include "X86.h"
#include "X86RegisterInfo.h"
#include "X86InstrBuilder.h"
#include "X86MachineFunctionInfo.h"
#include "X86Subtarget.h"
#include "X86TargetMachine.h"
#include "llvm/Constants.h"
#include "llvm/Function.h"
#include "llvm/Type.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineLocation.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/Target/TargetAsmInfo.h"
#include "llvm/Target/TargetFrameInfo.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/Compiler.h"
#include "X86GenRegisterInfo.inc"

Include dependency graph for X86RegisterInfo.cpp:

Go to the source code of this file.

Namespaces

namespace  llvm

Functions

static unsigned calculateMaxStackAlignment (const MachineFrameInfo *FFI)
static void emitSPUpdate (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, unsigned StackPtr, int64_t NumBytes, bool Is64Bit, const TargetInstrInfo &TII)
static void mergeSPUpdatesUp (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, unsigned StackPtr, uint64_t *NumBytes=NULL)
static void mergeSPUpdatesDown (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, unsigned StackPtr, uint64_t *NumBytes=NULL)
static int mergeSPUpdates (MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI, unsigned StackPtr, bool doMergeWithPrevious)
unsigned llvm::getX86SubSuperRegister (unsigned Reg, MVT VT, bool High)
FunctionPass * llvm::createX86MaxStackAlignmentCalculatorPass ()


Function Documentation

static unsigned calculateMaxStackAlignment ( const MachineFrameInfo *  FFI  )  [static]

static void emitSPUpdate ( MachineBasicBlock &  MBB,
MachineBasicBlock::iterator &  MBBI,
unsigned  StackPtr,
int64_t  NumBytes,
bool  Is64Bit,
const TargetInstrInfo &  TII 
) [static]

emitSPUpdate - Emit a series of instructions to increment / decrement the stack pointer by a constant value.

Definition at line 521 of file X86RegisterInfo.cpp.

References llvm::MachineInstrBuilder::addImm(), llvm::BuildMI(), llvm::TargetInstrInfo::get(), llvm::MachineInstr::getOperand(), MI, Offset, and llvm::MachineOperand::setIsDead().

static int mergeSPUpdates ( MachineBasicBlock &  MBB,
MachineBasicBlock::iterator &  MBBI,
unsigned  StackPtr,
bool  doMergeWithPrevious 
) [static]

mergeSPUpdates - Checks the instruction before/after the passed instruction. If it is an ADD/SUB instruction it is deleted argument and the stack adjustment is returned as a positive value for ADD and a negative for SUB.

Definition at line 602 of file X86RegisterInfo.cpp.

References llvm::MachineBasicBlock::begin(), llvm::MachineBasicBlock::end(), llvm::MachineBasicBlock::erase(), llvm::next(), Offset, PI, and llvm::prior().

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

static void mergeSPUpdatesDown ( MachineBasicBlock &  MBB,
MachineBasicBlock::iterator &  MBBI,
unsigned  StackPtr,
uint64_t *  NumBytes = NULL 
) [static]

static void mergeSPUpdatesUp ( MachineBasicBlock &  MBB,
MachineBasicBlock::iterator &  MBBI,
unsigned  StackPtr,
uint64_t *  NumBytes = NULL 
) [static]


Variable Documentation

char ID [static]

Definition at line 1215 of file X86RegisterInfo.cpp.