LLVM API Documentation

X86RegisterInfo.cpp File Reference

#include "X86.h"
#include "X86RegisterInfo.h"
#include "X86Subtarget.h"
#include "X86InstrBuilder.h"
#include "X86MachineFunctionInfo.h"
#include "X86TargetMachine.h"
#include "llvm/Constants.h"
#include "llvm/Type.h"
#include "llvm/Function.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineLocation.h"
#include "llvm/Target/TargetFrameInfo.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/ADT/STLExtras.h"
#include <iostream>
#include "X86GenRegisterInfo.inc"

Include dependency graph for X86RegisterInfo.cpp:

Go to the source code of this file.

Namespaces

namespace  llvm

Defines

#define ARRAY_SIZE(TABLE)   (sizeof(TABLE)/sizeof(TABLE[0]))
#define ASSERT_SORTED(TABLE)

Functions

static MachineInstrMakeMInst (unsigned Opcode, unsigned FrameIndex, MachineInstr *MI)
static MachineInstrMakeMRInst (unsigned Opcode, unsigned FrameIndex, MachineInstr *MI)
static MachineInstrMakeMRIInst (unsigned Opcode, unsigned FrameIndex, MachineInstr *MI)
static MachineInstrMakeMIInst (unsigned Opcode, unsigned FrameIndex, MachineInstr *MI)
static MachineInstrMakeM0Inst (unsigned Opcode, unsigned FrameIndex, MachineInstr *MI)
static MachineInstrMakeRMInst (unsigned Opcode, unsigned FrameIndex, MachineInstr *MI)
static MachineInstrMakeRMIInst (unsigned Opcode, unsigned FrameIndex, MachineInstr *MI)
static bool TableIsSorted (const TableEntry *Table, unsigned NumEntries)
static const TableEntry * TableLookup (const TableEntry *Table, unsigned N, unsigned Opcode)
static bool hasFP (MachineFunction &MF)
unsigned llvm::getX86SubSuperRegister (unsigned Reg, MVT::ValueType VT, bool High)

Variables

cl::opt< bool > NoFusing ("disable-spill-fusing", cl::desc("Disable fusing of spill code into instructions"))
cl::opt< bool > PrintFailedFusing ("print-failed-fuse-candidates", cl::desc("Print instructions that the allocator wants to"" fuse, but the X86 backend currently can't"), cl::Hidden)


Define Documentation

#define ARRAY_SIZE ( TABLE   )     (sizeof(TABLE)/sizeof(TABLE[0]))

Definition at line 243 of file X86RegisterInfo.cpp.

#define ASSERT_SORTED ( TABLE   ) 

Value:

{ static bool TABLE##Checked = false;                                   \
    if (!TABLE##Checked) {                                                \
       assert(TableIsSorted(TABLE, ARRAY_SIZE(TABLE)) &&                  \
              "All lookup tables must be sorted for efficient access!");  \
       TABLE##Checked = true;                                             \
    }                                                                     \
  }

Definition at line 249 of file X86RegisterInfo.cpp.


Function Documentation

static bool hasFP ( MachineFunction MF  )  [static]

Definition at line 740 of file X86RegisterInfo.cpp.

References llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getInfo(), llvm::MachineFrameInfo::hasVarSizedObjects(), MF, and llvm::NoFramePointerElim.

static MachineInstr* MakeM0Inst ( unsigned  Opcode,
unsigned  FrameIndex,
MachineInstr MI 
) [static]

Definition at line 177 of file X86RegisterInfo.cpp.

References llvm::addFrameReference(), llvm::MachineInstrBuilder::addImm(), and llvm::BuildMI().

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

static MachineInstr* MakeMIInst ( unsigned  Opcode,
unsigned  FrameIndex,
MachineInstr MI 
) [static]

Definition at line 161 of file X86RegisterInfo.cpp.

References llvm::addFrameReference(), llvm::MachineInstrBuilder::addGlobalAddress(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addJumpTableIndex(), llvm::BuildMI(), llvm::MachineOperand::getGlobal(), llvm::MachineOperand::getImmedValue(), llvm::MachineOperand::getJumpTableIndex(), llvm::MachineOperand::getOffset(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::isGlobalAddress(), llvm::MachineOperand::isImmediate(), llvm::MachineOperand::isJumpTableIndex(), and MI.

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

static MachineInstr* MakeMInst ( unsigned  Opcode,
unsigned  FrameIndex,
MachineInstr MI 
) [static]

Definition at line 143 of file X86RegisterInfo.cpp.

References llvm::addFrameReference(), and llvm::BuildMI().

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

static MachineInstr* MakeMRIInst ( unsigned  Opcode,
unsigned  FrameIndex,
MachineInstr MI 
) [static]

Definition at line 154 of file X86RegisterInfo.cpp.

References llvm::addFrameReference(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), llvm::MachineOperand::getImmedValue(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), and MI.

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

static MachineInstr* MakeMRInst ( unsigned  Opcode,
unsigned  FrameIndex,
MachineInstr MI 
) [static]

Definition at line 148 of file X86RegisterInfo.cpp.

References llvm::addFrameReference(), llvm::MachineInstrBuilder::addReg(), llvm::BuildMI(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), and MI.

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

static MachineInstr* MakeRMIInst ( unsigned  Opcode,
unsigned  FrameIndex,
MachineInstr MI 
) [static]

Definition at line 189 of file X86RegisterInfo.cpp.

References llvm::addFrameReference(), llvm::MachineInstrBuilder::addImm(), llvm::BuildMI(), llvm::MachineOperand::getImmedValue(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getUseType(), and MI.

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

static MachineInstr* MakeRMInst ( unsigned  Opcode,
unsigned  FrameIndex,
MachineInstr MI 
) [static]

Definition at line 182 of file X86RegisterInfo.cpp.

References llvm::addFrameReference(), llvm::BuildMI(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getUseType(), and MI.

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

static bool TableIsSorted ( const TableEntry *  Table,
unsigned  NumEntries 
) [static]

TableIsSorted - Return true if the table is in 'from' opcode order.

Definition at line 223 of file X86RegisterInfo.cpp.

References from.

static const TableEntry* TableLookup ( const TableEntry *  Table,
unsigned  N,
unsigned  Opcode 
) [static]

TableLookup - Return the table entry matching the specified opcode. Otherwise return NULL.

Definition at line 235 of file X86RegisterInfo.cpp.

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().


Variable Documentation

unsigned from

Definition at line 205 of file X86RegisterInfo.cpp.

unsigned make

Definition at line 207 of file X86RegisterInfo.cpp.

cl::opt<bool> NoFusing("disable-spill-fusing", cl::desc("Disable fusing of spill code into instructions")) [static]

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

cl::opt<bool> PrintFailedFusing("print-failed-fuse-candidates", cl::desc("Print instructions that the allocator wants to"" fuse, but the X86 backend currently can't"), cl::Hidden) [static]

Referenced by llvm::X86RegisterInfo::foldMemoryOperand().

unsigned to

Definition at line 206 of file X86RegisterInfo.cpp.